summaryrefslogtreecommitdiffstats
path: root/src/bin/psql
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:19:15 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:19:15 +0000
commit6eb9c5a5657d1fe77b55cc261450f3538d35a94d (patch)
tree657d8194422a5daccecfd42d654b8a245ef7b4c8 /src/bin/psql
parentInitial commit. (diff)
downloadpostgresql-13-upstream.tar.xz
postgresql-13-upstream.zip
Adding upstream version 13.4.upstream/13.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/bin/psql')
-rw-r--r--src/bin/psql/.gitignore5
-rw-r--r--src/bin/psql/Makefile90
-rw-r--r--src/bin/psql/command.c5316
-rw-r--r--src/bin/psql/command.h49
-rw-r--r--src/bin/psql/common.c2316
-rw-r--r--src/bin/psql/common.h44
-rw-r--r--src/bin/psql/copy.c712
-rw-r--r--src/bin/psql/copy.h24
-rw-r--r--src/bin/psql/create_help.pl218
-rw-r--r--src/bin/psql/crosstabview.c713
-rw-r--r--src/bin/psql/crosstabview.h29
-rw-r--r--src/bin/psql/describe.c6406
-rw-r--r--src/bin/psql/describe.h136
-rw-r--r--src/bin/psql/help.c705
-rw-r--r--src/bin/psql/help.h21
-rw-r--r--src/bin/psql/input.c545
-rw-r--r--src/bin/psql/input.h51
-rw-r--r--src/bin/psql/large_obj.c316
-rw-r--r--src/bin/psql/large_obj.h16
-rw-r--r--src/bin/psql/mainloop.c657
-rw-r--r--src/bin/psql/mainloop.h17
-rw-r--r--src/bin/psql/nls.mk14
-rw-r--r--src/bin/psql/po/cs.po6603
-rw-r--r--src/bin/psql/po/de.po6427
-rw-r--r--src/bin/psql/po/es.po6350
-rw-r--r--src/bin/psql/po/fr.po6860
-rw-r--r--src/bin/psql/po/it.po6135
-rw-r--r--src/bin/psql/po/ja.po6497
-rw-r--r--src/bin/psql/po/ko.po6545
-rw-r--r--src/bin/psql/po/ru.po6933
-rw-r--r--src/bin/psql/po/sv.po6402
-rw-r--r--src/bin/psql/po/tr.po8604
-rw-r--r--src/bin/psql/po/uk.po6157
-rw-r--r--src/bin/psql/po/zh_CN.po6282
-rw-r--r--src/bin/psql/prompt.c382
-rw-r--r--src/bin/psql/prompt.h17
-rw-r--r--src/bin/psql/psqlrc.sample8
-rw-r--r--src/bin/psql/psqlscanslash.c3487
-rw-r--r--src/bin/psql/psqlscanslash.h40
-rw-r--r--src/bin/psql/psqlscanslash.l831
-rw-r--r--src/bin/psql/settings.h161
-rw-r--r--src/bin/psql/sql_help.c5921
-rw-r--r--src/bin/psql/sql_help.h29
-rw-r--r--src/bin/psql/startup.c1231
-rw-r--r--src/bin/psql/stringutils.c344
-rw-r--r--src/bin/psql/stringutils.h28
-rw-r--r--src/bin/psql/t/010_tab_completion.pl227
-rw-r--r--src/bin/psql/tab-complete.c4925
-rw-r--r--src/bin/psql/tab-complete.h17
-rw-r--r--src/bin/psql/variables.c422
-rw-r--r--src/bin/psql/variables.h97
51 files changed, 116362 insertions, 0 deletions
diff --git a/src/bin/psql/.gitignore b/src/bin/psql/.gitignore
new file mode 100644
index 0000000..10b6dd3
--- /dev/null
+++ b/src/bin/psql/.gitignore
@@ -0,0 +1,5 @@
+/psqlscanslash.c
+/sql_help.h
+/sql_help.c
+/psql
+/tmp_check/
diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile
new file mode 100644
index 0000000..2305d93
--- /dev/null
+++ b/src/bin/psql/Makefile
@@ -0,0 +1,90 @@
+#-------------------------------------------------------------------------
+#
+# Makefile for src/bin/psql
+#
+# Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
+#
+# src/bin/psql/Makefile
+#
+#-------------------------------------------------------------------------
+
+PGFILEDESC = "psql - the PostgreSQL interactive terminal"
+PGAPPICON=win32
+
+subdir = src/bin/psql
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+# make this available to TAP test scripts
+export with_readline
+
+REFDOCDIR= $(top_srcdir)/doc/src/sgml/ref
+
+override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
+LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
+
+OBJS = \
+ $(WIN32RES) \
+ command.o \
+ common.o \
+ copy.o \
+ crosstabview.o \
+ describe.o \
+ help.o \
+ input.o \
+ large_obj.o \
+ mainloop.o \
+ prompt.o \
+ psqlscanslash.o \
+ sql_help.o \
+ startup.o \
+ stringutils.o \
+ tab-complete.o \
+ variables.o
+
+
+all: psql
+
+psql: $(OBJS) | submake-libpq submake-libpgport submake-libpgfeutils
+ $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+help.o: sql_help.h
+
+# See notes in src/backend/parser/Makefile about the following two rules
+sql_help.c: sql_help.h
+ touch $@
+
+sql_help.h: create_help.pl $(wildcard $(REFDOCDIR)/*.sgml)
+ $(PERL) $< $(REFDOCDIR) $*
+
+psqlscanslash.c: FLEXFLAGS = -Cfe -p -p
+psqlscanslash.c: FLEX_NO_BACKUP=yes
+psqlscanslash.c: FLEX_FIX_WARNING=yes
+
+distprep: sql_help.h sql_help.c psqlscanslash.c
+
+install: all installdirs
+ $(INSTALL_PROGRAM) psql$(X) '$(DESTDIR)$(bindir)/psql$(X)'
+ $(INSTALL_DATA) $(srcdir)/psqlrc.sample '$(DESTDIR)$(datadir)/psqlrc.sample'
+
+installdirs:
+ $(MKDIR_P) '$(DESTDIR)$(bindir)' '$(DESTDIR)$(datadir)'
+
+uninstall:
+ rm -f '$(DESTDIR)$(bindir)/psql$(X)' '$(DESTDIR)$(datadir)/psqlrc.sample'
+
+clean distclean:
+ rm -f psql$(X) $(OBJS) lex.backup
+ rm -rf tmp_check
+
+# files removed here are supposed to be in the distribution tarball,
+# so do not clean them in the clean/distclean rules
+maintainer-clean: distclean
+ rm -f sql_help.h sql_help.c psqlscanslash.c
+
+check:
+ $(prove_check)
+
+installcheck:
+ $(prove_installcheck)
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
new file mode 100644
index 0000000..3c836f2
--- /dev/null
+++ b/src/bin/psql/command.c
@@ -0,0 +1,5316 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/command.c
+ */
+#include "postgres_fe.h"
+
+#include <ctype.h>
+#include <time.h>
+#include <pwd.h>
+#include <utime.h>
+#ifndef WIN32
+#include <sys/stat.h> /* for stat() */
+#include <fcntl.h> /* open() flags */
+#include <unistd.h> /* for geteuid(), getpid(), stat() */
+#else
+#include <win32.h>
+#include <io.h>
+#include <fcntl.h>
+#include <direct.h>
+#include <sys/stat.h> /* for stat() */
+#endif
+
+#include "catalog/pg_class_d.h"
+#include "command.h"
+#include "common.h"
+#include "common/logging.h"
+#include "copy.h"
+#include "crosstabview.h"
+#include "describe.h"
+#include "fe_utils/cancel.h"
+#include "fe_utils/print.h"
+#include "fe_utils/string_utils.h"
+#include "help.h"
+#include "input.h"
+#include "large_obj.h"
+#include "libpq-fe.h"
+#include "mainloop.h"
+#include "portability/instr_time.h"
+#include "pqexpbuffer.h"
+#include "psqlscanslash.h"
+#include "settings.h"
+#include "variables.h"
+
+/*
+ * Editable database object types.
+ */
+typedef enum EditableObjectType
+{
+ EditableFunction,
+ EditableView
+} EditableObjectType;
+
+/* local function declarations */
+static backslashResult exec_command(const char *cmd,
+ PsqlScanState scan_state,
+ ConditionalStack cstack,
+ PQExpBuffer query_buf,
+ PQExpBuffer previous_buf);
+static backslashResult exec_command_a(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_C(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_connect(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_cd(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_conninfo(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_copy(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_copyright(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_crosstabview(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_d(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_edit(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf);
+static backslashResult exec_command_ef_ev(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, bool is_func);
+static backslashResult exec_command_echo(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_elif(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf);
+static backslashResult exec_command_else(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf);
+static backslashResult exec_command_endif(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf);
+static backslashResult exec_command_encoding(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_errverbose(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_f(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_g(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult process_command_g_options(char *first_option,
+ PsqlScanState scan_state,
+ bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_gdesc(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_gexec(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_gset(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_help(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_html(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_include(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_if(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf);
+static backslashResult exec_command_list(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_lo(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_out(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_print(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf);
+static backslashResult exec_command_password(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_prompt(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_pset(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_quit(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_reset(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf);
+static backslashResult exec_command_s(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_set(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_setenv(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_sf_sv(PsqlScanState scan_state, bool active_branch,
+ const char *cmd, bool is_func);
+static backslashResult exec_command_t(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_T(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_timing(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_unset(PsqlScanState scan_state, bool active_branch,
+ const char *cmd);
+static backslashResult exec_command_write(PsqlScanState scan_state, bool active_branch,
+ const char *cmd,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf);
+static backslashResult exec_command_watch(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf);
+static backslashResult exec_command_x(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_z(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_shell_escape(PsqlScanState scan_state, bool active_branch);
+static backslashResult exec_command_slash_command_help(PsqlScanState scan_state, bool active_branch);
+static char *read_connect_arg(PsqlScanState scan_state);
+static PQExpBuffer gather_boolean_expression(PsqlScanState scan_state);
+static bool is_true_boolean_expression(PsqlScanState scan_state, const char *name);
+static void ignore_boolean_expression(PsqlScanState scan_state);
+static void ignore_slash_options(PsqlScanState scan_state);
+static void ignore_slash_filepipe(PsqlScanState scan_state);
+static void ignore_slash_whole_line(PsqlScanState scan_state);
+static bool is_branching_command(const char *cmd);
+static void save_query_text_state(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf);
+static void discard_query_text(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf);
+static void copy_previous_query(PQExpBuffer query_buf, PQExpBuffer previous_buf);
+static bool do_connect(enum trivalue reuse_previous_specification,
+ char *dbname, char *user, char *host, char *port);
+static bool do_edit(const char *filename_arg, PQExpBuffer query_buf,
+ int lineno, bool *edited);
+static bool do_shell(const char *command);
+static bool do_watch(PQExpBuffer query_buf, double sleep);
+static bool lookup_object_oid(EditableObjectType obj_type, const char *desc,
+ Oid *obj_oid);
+static bool get_create_object_cmd(EditableObjectType obj_type, Oid oid,
+ PQExpBuffer buf);
+static int strip_lineno_from_objdesc(char *obj);
+static int count_lines_in_buf(PQExpBuffer buf);
+static void print_with_linenumbers(FILE *output, char *lines,
+ const char *header_keyword);
+static void minimal_error_message(PGresult *res);
+
+static void printSSLInfo(void);
+static void printGSSInfo(void);
+static bool printPsetInfo(const char *param, printQueryOpt *popt);
+static char *pset_value_string(const char *param, printQueryOpt *popt);
+
+#ifdef WIN32
+static void checkWin32Codepage(void);
+#endif
+
+
+
+/*----------
+ * HandleSlashCmds:
+ *
+ * Handles all the different commands that start with '\'.
+ * Ordinarily called by MainLoop().
+ *
+ * scan_state is a lexer working state that is set to continue scanning
+ * just after the '\'. The lexer is advanced past the command and all
+ * arguments on return.
+ *
+ * cstack is the current \if stack state. This will be examined, and
+ * possibly modified by conditional commands.
+ *
+ * query_buf contains the query-so-far, which may be modified by
+ * execution of the backslash command (for example, \r clears it).
+ *
+ * previous_buf contains the query most recently sent to the server
+ * (empty if none yet). This should not be modified here, but some
+ * commands copy its content into query_buf.
+ *
+ * query_buf and previous_buf will be NULL when executing a "-c"
+ * command-line option.
+ *
+ * Returns a status code indicating what action is desired, see command.h.
+ *----------
+ */
+
+backslashResult
+HandleSlashCmds(PsqlScanState scan_state,
+ ConditionalStack cstack,
+ PQExpBuffer query_buf,
+ PQExpBuffer previous_buf)
+{
+ backslashResult status;
+ char *cmd;
+ char *arg;
+
+ Assert(scan_state != NULL);
+ Assert(cstack != NULL);
+
+ /* Parse off the command name */
+ cmd = psql_scan_slash_command(scan_state);
+
+ /* And try to execute it */
+ status = exec_command(cmd, scan_state, cstack, query_buf, previous_buf);
+
+ if (status == PSQL_CMD_UNKNOWN)
+ {
+ pg_log_error("invalid command \\%s", cmd);
+ if (pset.cur_cmd_interactive)
+ pg_log_info("Try \\? for help.");
+ status = PSQL_CMD_ERROR;
+ }
+
+ if (status != PSQL_CMD_ERROR)
+ {
+ /*
+ * Eat any remaining arguments after a valid command. We want to
+ * suppress evaluation of backticks in this situation, so transiently
+ * push an inactive conditional-stack entry.
+ */
+ bool active_branch = conditional_active(cstack);
+
+ conditional_stack_push(cstack, IFSTATE_IGNORED);
+ while ((arg = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false)))
+ {
+ if (active_branch)
+ pg_log_warning("\\%s: extra argument \"%s\" ignored", cmd, arg);
+ free(arg);
+ }
+ conditional_stack_pop(cstack);
+ }
+ else
+ {
+ /* silently throw away rest of line after an erroneous command */
+ while ((arg = psql_scan_slash_option(scan_state,
+ OT_WHOLE_LINE, NULL, false)))
+ free(arg);
+ }
+
+ /* if there is a trailing \\, swallow it */
+ psql_scan_slash_command_end(scan_state);
+
+ free(cmd);
+
+ /* some commands write to queryFout, so make sure output is sent */
+ fflush(pset.queryFout);
+
+ return status;
+}
+
+
+/*
+ * Subroutine to actually try to execute a backslash command.
+ *
+ * The typical "success" result code is PSQL_CMD_SKIP_LINE, although some
+ * commands return something else. Failure results are PSQL_CMD_ERROR,
+ * unless PSQL_CMD_UNKNOWN is more appropriate.
+ */
+static backslashResult
+exec_command(const char *cmd,
+ PsqlScanState scan_state,
+ ConditionalStack cstack,
+ PQExpBuffer query_buf,
+ PQExpBuffer previous_buf)
+{
+ backslashResult status;
+ bool active_branch = conditional_active(cstack);
+
+ /*
+ * In interactive mode, warn when we're ignoring a command within a false
+ * \if-branch. But we continue on, so as to parse and discard the right
+ * amount of parameter text. Each individual backslash command subroutine
+ * is responsible for doing nothing after discarding appropriate
+ * arguments, if !active_branch.
+ */
+ if (pset.cur_cmd_interactive && !active_branch &&
+ !is_branching_command(cmd))
+ {
+ pg_log_warning("\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block",
+ cmd);
+ }
+
+ if (strcmp(cmd, "a") == 0)
+ status = exec_command_a(scan_state, active_branch);
+ else if (strcmp(cmd, "C") == 0)
+ status = exec_command_C(scan_state, active_branch);
+ else if (strcmp(cmd, "c") == 0 || strcmp(cmd, "connect") == 0)
+ status = exec_command_connect(scan_state, active_branch);
+ else if (strcmp(cmd, "cd") == 0)
+ status = exec_command_cd(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "conninfo") == 0)
+ status = exec_command_conninfo(scan_state, active_branch);
+ else if (pg_strcasecmp(cmd, "copy") == 0)
+ status = exec_command_copy(scan_state, active_branch);
+ else if (strcmp(cmd, "copyright") == 0)
+ status = exec_command_copyright(scan_state, active_branch);
+ else if (strcmp(cmd, "crosstabview") == 0)
+ status = exec_command_crosstabview(scan_state, active_branch);
+ else if (cmd[0] == 'd')
+ status = exec_command_d(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "e") == 0 || strcmp(cmd, "edit") == 0)
+ status = exec_command_edit(scan_state, active_branch,
+ query_buf, previous_buf);
+ else if (strcmp(cmd, "ef") == 0)
+ status = exec_command_ef_ev(scan_state, active_branch, query_buf, true);
+ else if (strcmp(cmd, "ev") == 0)
+ status = exec_command_ef_ev(scan_state, active_branch, query_buf, false);
+ else if (strcmp(cmd, "echo") == 0 || strcmp(cmd, "qecho") == 0 ||
+ strcmp(cmd, "warn") == 0)
+ status = exec_command_echo(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "elif") == 0)
+ status = exec_command_elif(scan_state, cstack, query_buf);
+ else if (strcmp(cmd, "else") == 0)
+ status = exec_command_else(scan_state, cstack, query_buf);
+ else if (strcmp(cmd, "endif") == 0)
+ status = exec_command_endif(scan_state, cstack, query_buf);
+ else if (strcmp(cmd, "encoding") == 0)
+ status = exec_command_encoding(scan_state, active_branch);
+ else if (strcmp(cmd, "errverbose") == 0)
+ status = exec_command_errverbose(scan_state, active_branch);
+ else if (strcmp(cmd, "f") == 0)
+ status = exec_command_f(scan_state, active_branch);
+ else if (strcmp(cmd, "g") == 0 || strcmp(cmd, "gx") == 0)
+ status = exec_command_g(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "gdesc") == 0)
+ status = exec_command_gdesc(scan_state, active_branch);
+ else if (strcmp(cmd, "gexec") == 0)
+ status = exec_command_gexec(scan_state, active_branch);
+ else if (strcmp(cmd, "gset") == 0)
+ status = exec_command_gset(scan_state, active_branch);
+ else if (strcmp(cmd, "h") == 0 || strcmp(cmd, "help") == 0)
+ status = exec_command_help(scan_state, active_branch);
+ else if (strcmp(cmd, "H") == 0 || strcmp(cmd, "html") == 0)
+ status = exec_command_html(scan_state, active_branch);
+ else if (strcmp(cmd, "i") == 0 || strcmp(cmd, "include") == 0 ||
+ strcmp(cmd, "ir") == 0 || strcmp(cmd, "include_relative") == 0)
+ status = exec_command_include(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "if") == 0)
+ status = exec_command_if(scan_state, cstack, query_buf);
+ else if (strcmp(cmd, "l") == 0 || strcmp(cmd, "list") == 0 ||
+ strcmp(cmd, "l+") == 0 || strcmp(cmd, "list+") == 0)
+ status = exec_command_list(scan_state, active_branch, cmd);
+ else if (strncmp(cmd, "lo_", 3) == 0)
+ status = exec_command_lo(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "o") == 0 || strcmp(cmd, "out") == 0)
+ status = exec_command_out(scan_state, active_branch);
+ else if (strcmp(cmd, "p") == 0 || strcmp(cmd, "print") == 0)
+ status = exec_command_print(scan_state, active_branch,
+ query_buf, previous_buf);
+ else if (strcmp(cmd, "password") == 0)
+ status = exec_command_password(scan_state, active_branch);
+ else if (strcmp(cmd, "prompt") == 0)
+ status = exec_command_prompt(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "pset") == 0)
+ status = exec_command_pset(scan_state, active_branch);
+ else if (strcmp(cmd, "q") == 0 || strcmp(cmd, "quit") == 0)
+ status = exec_command_quit(scan_state, active_branch);
+ else if (strcmp(cmd, "r") == 0 || strcmp(cmd, "reset") == 0)
+ status = exec_command_reset(scan_state, active_branch, query_buf);
+ else if (strcmp(cmd, "s") == 0)
+ status = exec_command_s(scan_state, active_branch);
+ else if (strcmp(cmd, "set") == 0)
+ status = exec_command_set(scan_state, active_branch);
+ else if (strcmp(cmd, "setenv") == 0)
+ status = exec_command_setenv(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "sf") == 0 || strcmp(cmd, "sf+") == 0)
+ status = exec_command_sf_sv(scan_state, active_branch, cmd, true);
+ else if (strcmp(cmd, "sv") == 0 || strcmp(cmd, "sv+") == 0)
+ status = exec_command_sf_sv(scan_state, active_branch, cmd, false);
+ else if (strcmp(cmd, "t") == 0)
+ status = exec_command_t(scan_state, active_branch);
+ else if (strcmp(cmd, "T") == 0)
+ status = exec_command_T(scan_state, active_branch);
+ else if (strcmp(cmd, "timing") == 0)
+ status = exec_command_timing(scan_state, active_branch);
+ else if (strcmp(cmd, "unset") == 0)
+ status = exec_command_unset(scan_state, active_branch, cmd);
+ else if (strcmp(cmd, "w") == 0 || strcmp(cmd, "write") == 0)
+ status = exec_command_write(scan_state, active_branch, cmd,
+ query_buf, previous_buf);
+ else if (strcmp(cmd, "watch") == 0)
+ status = exec_command_watch(scan_state, active_branch,
+ query_buf, previous_buf);
+ else if (strcmp(cmd, "x") == 0)
+ status = exec_command_x(scan_state, active_branch);
+ else if (strcmp(cmd, "z") == 0)
+ status = exec_command_z(scan_state, active_branch);
+ else if (strcmp(cmd, "!") == 0)
+ status = exec_command_shell_escape(scan_state, active_branch);
+ else if (strcmp(cmd, "?") == 0)
+ status = exec_command_slash_command_help(scan_state, active_branch);
+ else
+ status = PSQL_CMD_UNKNOWN;
+
+ /*
+ * All the commands that return PSQL_CMD_SEND want to execute previous_buf
+ * if query_buf is empty. For convenience we implement that here, not in
+ * the individual command subroutines.
+ */
+ if (status == PSQL_CMD_SEND)
+ copy_previous_query(query_buf, previous_buf);
+
+ return status;
+}
+
+
+/*
+ * \a -- toggle field alignment
+ *
+ * This makes little sense but we keep it around.
+ */
+static backslashResult
+exec_command_a(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ if (pset.popt.topt.format != PRINT_ALIGNED)
+ success = do_pset("format", "aligned", &pset.popt, pset.quiet);
+ else
+ success = do_pset("format", "unaligned", &pset.popt, pset.quiet);
+ }
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \C -- override table title (formerly change HTML caption)
+ */
+static backslashResult
+exec_command_C(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ success = do_pset("title", opt, &pset.popt, pset.quiet);
+ free(opt);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \c or \connect -- connect to database using the specified parameters.
+ *
+ * \c [-reuse-previous=BOOL] dbname user host port
+ *
+ * Specifying a parameter as '-' is equivalent to omitting it. Examples:
+ *
+ * \c - - hst Connect to current database on current port of
+ * host "hst" as current user.
+ * \c - usr - prt Connect to current database on port "prt" of current host
+ * as user "usr".
+ * \c dbs Connect to database "dbs" on current port of current host
+ * as current user.
+ */
+static backslashResult
+exec_command_connect(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ static const char prefix[] = "-reuse-previous=";
+ char *opt1,
+ *opt2,
+ *opt3,
+ *opt4;
+ enum trivalue reuse_previous = TRI_DEFAULT;
+
+ opt1 = read_connect_arg(scan_state);
+ if (opt1 != NULL && strncmp(opt1, prefix, sizeof(prefix) - 1) == 0)
+ {
+ bool on_off;
+
+ success = ParseVariableBool(opt1 + sizeof(prefix) - 1,
+ "-reuse-previous",
+ &on_off);
+ if (success)
+ {
+ reuse_previous = on_off ? TRI_YES : TRI_NO;
+ free(opt1);
+ opt1 = read_connect_arg(scan_state);
+ }
+ }
+
+ if (success) /* give up if reuse_previous was invalid */
+ {
+ opt2 = read_connect_arg(scan_state);
+ opt3 = read_connect_arg(scan_state);
+ opt4 = read_connect_arg(scan_state);
+
+ success = do_connect(reuse_previous, opt1, opt2, opt3, opt4);
+
+ free(opt2);
+ free(opt3);
+ free(opt4);
+ }
+ free(opt1);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \cd -- change directory
+ */
+static backslashResult
+exec_command_cd(PsqlScanState scan_state, bool active_branch, const char *cmd)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+ char *dir;
+
+ if (opt)
+ dir = opt;
+ else
+ {
+#ifndef WIN32
+ struct passwd *pw;
+ uid_t user_id = geteuid();
+
+ errno = 0; /* clear errno before call */
+ pw = getpwuid(user_id);
+ if (!pw)
+ {
+ pg_log_error("could not get home directory for user ID %ld: %s",
+ (long) user_id,
+ errno ? strerror(errno) : _("user does not exist"));
+ exit(EXIT_FAILURE);
+ }
+ dir = pw->pw_dir;
+#else /* WIN32 */
+
+ /*
+ * On Windows, 'cd' without arguments prints the current
+ * directory, so if someone wants to code this here instead...
+ */
+ dir = "/";
+#endif /* WIN32 */
+ }
+
+ if (chdir(dir) == -1)
+ {
+ pg_log_error("\\%s: could not change directory to \"%s\": %m",
+ cmd, dir);
+ success = false;
+ }
+
+ if (opt)
+ free(opt);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \conninfo -- display information about the current connection
+ */
+static backslashResult
+exec_command_conninfo(PsqlScanState scan_state, bool active_branch)
+{
+ if (active_branch)
+ {
+ char *db = PQdb(pset.db);
+
+ if (db == NULL)
+ printf(_("You are currently not connected to a database.\n"));
+ else
+ {
+ char *host = PQhost(pset.db);
+ char *hostaddr = PQhostaddr(pset.db);
+
+ /*
+ * If the host is an absolute path, the connection is via socket
+ * unless overridden by hostaddr
+ */
+ if (is_absolute_path(host))
+ {
+ if (hostaddr && *hostaddr)
+ printf(_("You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"),
+ db, PQuser(pset.db), hostaddr, PQport(pset.db));
+ else
+ printf(_("You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"),
+ db, PQuser(pset.db), host, PQport(pset.db));
+ }
+ else
+ {
+ if (hostaddr && *hostaddr && strcmp(host, hostaddr) != 0)
+ printf(_("You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"),
+ db, PQuser(pset.db), host, hostaddr, PQport(pset.db));
+ else
+ printf(_("You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"),
+ db, PQuser(pset.db), host, PQport(pset.db));
+ }
+ printSSLInfo();
+ printGSSInfo();
+ }
+ }
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \copy -- run a COPY command
+ */
+static backslashResult
+exec_command_copy(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_WHOLE_LINE, NULL, false);
+
+ success = do_copy(opt);
+ free(opt);
+ }
+ else
+ ignore_slash_whole_line(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \copyright -- print copyright notice
+ */
+static backslashResult
+exec_command_copyright(PsqlScanState scan_state, bool active_branch)
+{
+ if (active_branch)
+ print_copyright();
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \crosstabview -- execute a query and display results in crosstab
+ */
+static backslashResult
+exec_command_crosstabview(PsqlScanState scan_state, bool active_branch)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ int i;
+
+ for (i = 0; i < lengthof(pset.ctv_args); i++)
+ pset.ctv_args[i] = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+ pset.crosstab_flag = true;
+ status = PSQL_CMD_SEND;
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return status;
+}
+
+/*
+ * \d* commands
+ */
+static backslashResult
+exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *pattern;
+ bool show_verbose,
+ show_system;
+
+ /* We don't do SQLID reduction on the pattern yet */
+ pattern = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ show_verbose = strchr(cmd, '+') ? true : false;
+ show_system = strchr(cmd, 'S') ? true : false;
+
+ switch (cmd[1])
+ {
+ case '\0':
+ case '+':
+ case 'S':
+ if (pattern)
+ success = describeTableDetails(pattern, show_verbose, show_system);
+ else
+ /* standard listing of interesting things */
+ success = listTables("tvmsE", NULL, show_verbose, show_system);
+ break;
+ case 'A':
+ {
+ char *pattern2 = NULL;
+
+ if (pattern && cmd[2] != '\0' && cmd[2] != '+')
+ pattern2 = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, true);
+
+ switch (cmd[2])
+ {
+ case '\0':
+ case '+':
+ success = describeAccessMethods(pattern, show_verbose);
+ break;
+ case 'c':
+ success = listOperatorClasses(pattern, pattern2, show_verbose);
+ break;
+ case 'f':
+ success = listOperatorFamilies(pattern, pattern2, show_verbose);
+ break;
+ case 'o':
+ success = listOpFamilyOperators(pattern, pattern2, show_verbose);
+ break;
+ case 'p':
+ success = listOpFamilyFunctions(pattern, pattern2, show_verbose);
+ break;
+ default:
+ status = PSQL_CMD_UNKNOWN;
+ break;
+ }
+
+ if (pattern2)
+ free(pattern2);
+ }
+ break;
+ case 'a':
+ success = describeAggregates(pattern, show_verbose, show_system);
+ break;
+ case 'b':
+ success = describeTablespaces(pattern, show_verbose);
+ break;
+ case 'c':
+ success = listConversions(pattern, show_verbose, show_system);
+ break;
+ case 'C':
+ success = listCasts(pattern, show_verbose);
+ break;
+ case 'd':
+ if (strncmp(cmd, "ddp", 3) == 0)
+ success = listDefaultACLs(pattern);
+ else
+ success = objectDescription(pattern, show_system);
+ break;
+ case 'D':
+ success = listDomains(pattern, show_verbose, show_system);
+ break;
+ case 'f': /* function subsystem */
+ switch (cmd[2])
+ {
+ case '\0':
+ case '+':
+ case 'S':
+ case 'a':
+ case 'n':
+ case 'p':
+ case 't':
+ case 'w':
+ success = describeFunctions(&cmd[2], pattern, show_verbose, show_system);
+ break;
+ default:
+ status = PSQL_CMD_UNKNOWN;
+ break;
+ }
+ break;
+ case 'g':
+ /* no longer distinct from \du */
+ success = describeRoles(pattern, show_verbose, show_system);
+ break;
+ case 'l':
+ success = do_lo_list();
+ break;
+ case 'L':
+ success = listLanguages(pattern, show_verbose, show_system);
+ break;
+ case 'n':
+ success = listSchemas(pattern, show_verbose, show_system);
+ break;
+ case 'o':
+ success = describeOperators(pattern, show_verbose, show_system);
+ break;
+ case 'O':
+ success = listCollations(pattern, show_verbose, show_system);
+ break;
+ case 'p':
+ success = permissionsList(pattern);
+ break;
+ case 'P':
+ {
+ switch (cmd[2])
+ {
+ case '\0':
+ case '+':
+ case 't':
+ case 'i':
+ case 'n':
+ success = listPartitionedTables(&cmd[2], pattern, show_verbose);
+ break;
+ default:
+ status = PSQL_CMD_UNKNOWN;
+ break;
+ }
+ }
+ break;
+ case 'T':
+ success = describeTypes(pattern, show_verbose, show_system);
+ break;
+ case 't':
+ case 'v':
+ case 'm':
+ case 'i':
+ case 's':
+ case 'E':
+ success = listTables(&cmd[1], pattern, show_verbose, show_system);
+ break;
+ case 'r':
+ if (cmd[2] == 'd' && cmd[3] == 's')
+ {
+ char *pattern2 = NULL;
+
+ if (pattern)
+ pattern2 = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+ success = listDbRoleSettings(pattern, pattern2);
+
+ if (pattern2)
+ free(pattern2);
+ }
+ else
+ status = PSQL_CMD_UNKNOWN;
+ break;
+ case 'R':
+ switch (cmd[2])
+ {
+ case 'p':
+ if (show_verbose)
+ success = describePublications(pattern);
+ else
+ success = listPublications(pattern);
+ break;
+ case 's':
+ success = describeSubscriptions(pattern, show_verbose);
+ break;
+ default:
+ status = PSQL_CMD_UNKNOWN;
+ }
+ break;
+ case 'u':
+ success = describeRoles(pattern, show_verbose, show_system);
+ break;
+ case 'F': /* text search subsystem */
+ switch (cmd[2])
+ {
+ case '\0':
+ case '+':
+ success = listTSConfigs(pattern, show_verbose);
+ break;
+ case 'p':
+ success = listTSParsers(pattern, show_verbose);
+ break;
+ case 'd':
+ success = listTSDictionaries(pattern, show_verbose);
+ break;
+ case 't':
+ success = listTSTemplates(pattern, show_verbose);
+ break;
+ default:
+ status = PSQL_CMD_UNKNOWN;
+ break;
+ }
+ break;
+ case 'e': /* SQL/MED subsystem */
+ switch (cmd[2])
+ {
+ case 's':
+ success = listForeignServers(pattern, show_verbose);
+ break;
+ case 'u':
+ success = listUserMappings(pattern, show_verbose);
+ break;
+ case 'w':
+ success = listForeignDataWrappers(pattern, show_verbose);
+ break;
+ case 't':
+ success = listForeignTables(pattern, show_verbose);
+ break;
+ default:
+ status = PSQL_CMD_UNKNOWN;
+ break;
+ }
+ break;
+ case 'x': /* Extensions */
+ if (show_verbose)
+ success = listExtensionContents(pattern);
+ else
+ success = listExtensions(pattern);
+ break;
+ case 'y': /* Event Triggers */
+ success = listEventTriggers(pattern, show_verbose);
+ break;
+ default:
+ status = PSQL_CMD_UNKNOWN;
+ }
+
+ if (pattern)
+ free(pattern);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ if (!success)
+ status = PSQL_CMD_ERROR;
+
+ return status;
+}
+
+/*
+ * \e or \edit -- edit the current query buffer, or edit a file and
+ * make it the query buffer
+ */
+static backslashResult
+exec_command_edit(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ if (!query_buf)
+ {
+ pg_log_error("no query buffer");
+ status = PSQL_CMD_ERROR;
+ }
+ else
+ {
+ char *fname;
+ char *ln = NULL;
+ int lineno = -1;
+
+ fname = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+ if (fname)
+ {
+ /* try to get separate lineno arg */
+ ln = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+ if (ln == NULL)
+ {
+ /* only one arg; maybe it is lineno not fname */
+ if (fname[0] &&
+ strspn(fname, "0123456789") == strlen(fname))
+ {
+ /* all digits, so assume it is lineno */
+ ln = fname;
+ fname = NULL;
+ }
+ }
+ }
+ if (ln)
+ {
+ lineno = atoi(ln);
+ if (lineno < 1)
+ {
+ pg_log_error("invalid line number: %s", ln);
+ status = PSQL_CMD_ERROR;
+ }
+ }
+ if (status != PSQL_CMD_ERROR)
+ {
+ expand_tilde(&fname);
+ if (fname)
+ canonicalize_path(fname);
+
+ /* If query_buf is empty, recall previous query for editing */
+ copy_previous_query(query_buf, previous_buf);
+
+ if (do_edit(fname, query_buf, lineno, NULL))
+ status = PSQL_CMD_NEWEDIT;
+ else
+ status = PSQL_CMD_ERROR;
+ }
+ if (fname)
+ free(fname);
+ if (ln)
+ free(ln);
+ }
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return status;
+}
+
+/*
+ * \ef/\ev -- edit the named function/view, or
+ * present a blank CREATE FUNCTION/VIEW template if no argument is given
+ */
+static backslashResult
+exec_command_ef_ev(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, bool is_func)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ char *obj_desc = psql_scan_slash_option(scan_state,
+ OT_WHOLE_LINE,
+ NULL, true);
+ int lineno = -1;
+
+ if (pset.sversion < (is_func ? 80400 : 70400))
+ {
+ char sverbuf[32];
+
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf));
+ if (is_func)
+ pg_log_error("The server (version %s) does not support editing function source.",
+ sverbuf);
+ else
+ pg_log_error("The server (version %s) does not support editing view definitions.",
+ sverbuf);
+ status = PSQL_CMD_ERROR;
+ }
+ else if (!query_buf)
+ {
+ pg_log_error("no query buffer");
+ status = PSQL_CMD_ERROR;
+ }
+ else
+ {
+ Oid obj_oid = InvalidOid;
+ EditableObjectType eot = is_func ? EditableFunction : EditableView;
+
+ lineno = strip_lineno_from_objdesc(obj_desc);
+ if (lineno == 0)
+ {
+ /* error already reported */
+ status = PSQL_CMD_ERROR;
+ }
+ else if (!obj_desc)
+ {
+ /* set up an empty command to fill in */
+ resetPQExpBuffer(query_buf);
+ if (is_func)
+ appendPQExpBufferStr(query_buf,
+ "CREATE FUNCTION ( )\n"
+ " RETURNS \n"
+ " LANGUAGE \n"
+ " -- common options: IMMUTABLE STABLE STRICT SECURITY DEFINER\n"
+ "AS $function$\n"
+ "\n$function$\n");
+ else
+ appendPQExpBufferStr(query_buf,
+ "CREATE VIEW AS\n"
+ " SELECT \n"
+ " -- something...\n");
+ }
+ else if (!lookup_object_oid(eot, obj_desc, &obj_oid))
+ {
+ /* error already reported */
+ status = PSQL_CMD_ERROR;
+ }
+ else if (!get_create_object_cmd(eot, obj_oid, query_buf))
+ {
+ /* error already reported */
+ status = PSQL_CMD_ERROR;
+ }
+ else if (is_func && lineno > 0)
+ {
+ /*
+ * lineno "1" should correspond to the first line of the
+ * function body. We expect that pg_get_functiondef() will
+ * emit that on a line beginning with "AS ", and that there
+ * can be no such line before the real start of the function
+ * body. Increment lineno by the number of lines before that
+ * line, so that it becomes relative to the first line of the
+ * function definition.
+ */
+ const char *lines = query_buf->data;
+
+ while (*lines != '\0')
+ {
+ if (strncmp(lines, "AS ", 3) == 0)
+ break;
+ lineno++;
+ /* find start of next line */
+ lines = strchr(lines, '\n');
+ if (!lines)
+ break;
+ lines++;
+ }
+ }
+ }
+
+ if (status != PSQL_CMD_ERROR)
+ {
+ bool edited = false;
+
+ if (!do_edit(NULL, query_buf, lineno, &edited))
+ status = PSQL_CMD_ERROR;
+ else if (!edited)
+ puts(_("No changes"));
+ else
+ status = PSQL_CMD_NEWEDIT;
+ }
+
+ if (obj_desc)
+ free(obj_desc);
+ }
+ else
+ ignore_slash_whole_line(scan_state);
+
+ return status;
+}
+
+/*
+ * \echo, \qecho, and \warn -- echo arguments to stdout, query output, or stderr
+ */
+static backslashResult
+exec_command_echo(PsqlScanState scan_state, bool active_branch, const char *cmd)
+{
+ if (active_branch)
+ {
+ char *value;
+ char quoted;
+ bool no_newline = false;
+ bool first = true;
+ FILE *fout;
+
+ if (strcmp(cmd, "qecho") == 0)
+ fout = pset.queryFout;
+ else if (strcmp(cmd, "warn") == 0)
+ fout = stderr;
+ else
+ fout = stdout;
+
+ while ((value = psql_scan_slash_option(scan_state,
+ OT_NORMAL, &quoted, false)))
+ {
+ if (first && !no_newline && !quoted && strcmp(value, "-n") == 0)
+ no_newline = true;
+ else
+ {
+ if (first)
+ first = false;
+ else
+ fputc(' ', fout);
+ fputs(value, fout);
+ }
+ free(value);
+ }
+ if (!no_newline)
+ fputs("\n", fout);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \encoding -- set/show client side encoding
+ */
+static backslashResult
+exec_command_encoding(PsqlScanState scan_state, bool active_branch)
+{
+ if (active_branch)
+ {
+ char *encoding = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (!encoding)
+ {
+ /* show encoding */
+ puts(pg_encoding_to_char(pset.encoding));
+ }
+ else
+ {
+ /* set encoding */
+ if (PQsetClientEncoding(pset.db, encoding) == -1)
+ pg_log_error("%s: invalid encoding name or conversion procedure not found", encoding);
+ else
+ {
+ /* save encoding info into psql internal data */
+ pset.encoding = PQclientEncoding(pset.db);
+ pset.popt.topt.encoding = pset.encoding;
+ SetVariable(pset.vars, "ENCODING",
+ pg_encoding_to_char(pset.encoding));
+ }
+ free(encoding);
+ }
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \errverbose -- display verbose message from last failed query
+ */
+static backslashResult
+exec_command_errverbose(PsqlScanState scan_state, bool active_branch)
+{
+ if (active_branch)
+ {
+ if (pset.last_error_result)
+ {
+ char *msg;
+
+ msg = PQresultVerboseErrorMessage(pset.last_error_result,
+ PQERRORS_VERBOSE,
+ PQSHOW_CONTEXT_ALWAYS);
+ if (msg)
+ {
+ pg_log_error("%s", msg);
+ PQfreemem(msg);
+ }
+ else
+ puts(_("out of memory"));
+ }
+ else
+ puts(_("There is no previous error."));
+ }
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \f -- change field separator
+ */
+static backslashResult
+exec_command_f(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *fname = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ success = do_pset("fieldsep", fname, &pset.popt, pset.quiet);
+ free(fname);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \g [(pset-option[=pset-value] ...)] [filename/shell-command]
+ * \gx [(pset-option[=pset-value] ...)] [filename/shell-command]
+ *
+ * Send the current query. If pset options are specified, they are made
+ * active just for this query. If a filename or pipe command is given,
+ * the query output goes there. \gx implicitly sets "expanded=on" along
+ * with any other pset options that are specified.
+ */
+static backslashResult
+exec_command_g(PsqlScanState scan_state, bool active_branch, const char *cmd)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+ char *fname;
+
+ /*
+ * Because the option processing for this is fairly complicated, we do it
+ * and then decide whether the branch is active.
+ */
+ fname = psql_scan_slash_option(scan_state,
+ OT_FILEPIPE, NULL, false);
+
+ if (fname && fname[0] == '(')
+ {
+ /* Consume pset options through trailing ')' ... */
+ status = process_command_g_options(fname + 1, scan_state,
+ active_branch, cmd);
+ free(fname);
+ /* ... and again attempt to scan the filename. */
+ fname = psql_scan_slash_option(scan_state,
+ OT_FILEPIPE, NULL, false);
+ }
+
+ if (status == PSQL_CMD_SKIP_LINE && active_branch)
+ {
+ if (!fname)
+ pset.gfname = NULL;
+ else
+ {
+ expand_tilde(&fname);
+ pset.gfname = pg_strdup(fname);
+ }
+ if (strcmp(cmd, "gx") == 0)
+ {
+ /* save settings if not done already, then force expanded=on */
+ if (pset.gsavepopt == NULL)
+ pset.gsavepopt = savePsetInfo(&pset.popt);
+ pset.popt.topt.expanded = 1;
+ }
+ status = PSQL_CMD_SEND;
+ }
+
+ free(fname);
+
+ return status;
+}
+
+/*
+ * Process parenthesized pset options for \g
+ *
+ * Note: okay to modify first_option, but not to free it; caller does that
+ */
+static backslashResult
+process_command_g_options(char *first_option, PsqlScanState scan_state,
+ bool active_branch, const char *cmd)
+{
+ bool success = true;
+ bool found_r_paren = false;
+
+ do
+ {
+ char *option;
+ size_t optlen;
+
+ /* If not first time through, collect a new option */
+ if (first_option)
+ option = first_option;
+ else
+ {
+ option = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+ if (!option)
+ {
+ if (active_branch)
+ {
+ pg_log_error("\\%s: missing right parenthesis", cmd);
+ success = false;
+ }
+ break;
+ }
+ }
+
+ /* Check for terminating right paren, and remove it from string */
+ optlen = strlen(option);
+ if (optlen > 0 && option[optlen - 1] == ')')
+ {
+ option[--optlen] = '\0';
+ found_r_paren = true;
+ }
+
+ /* If there was anything besides parentheses, parse/execute it */
+ if (optlen > 0)
+ {
+ /* We can have either "name" or "name=value" */
+ char *valptr = strchr(option, '=');
+
+ if (valptr)
+ *valptr++ = '\0';
+ if (active_branch)
+ {
+ /* save settings if not done already, then apply option */
+ if (pset.gsavepopt == NULL)
+ pset.gsavepopt = savePsetInfo(&pset.popt);
+ success &= do_pset(option, valptr, &pset.popt, true);
+ }
+ }
+
+ /* Clean up after this option. We should not free first_option. */
+ if (first_option)
+ first_option = NULL;
+ else
+ free(option);
+ } while (!found_r_paren);
+
+ /* If we failed after already changing some options, undo side-effects */
+ if (!success && active_branch && pset.gsavepopt)
+ {
+ restorePsetInfo(&pset.popt, pset.gsavepopt);
+ pset.gsavepopt = NULL;
+ }
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \gdesc -- describe query result
+ */
+static backslashResult
+exec_command_gdesc(PsqlScanState scan_state, bool active_branch)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ pset.gdesc_flag = true;
+ status = PSQL_CMD_SEND;
+ }
+
+ return status;
+}
+
+/*
+ * \gexec -- send query and execute each field of result
+ */
+static backslashResult
+exec_command_gexec(PsqlScanState scan_state, bool active_branch)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ pset.gexec_flag = true;
+ status = PSQL_CMD_SEND;
+ }
+
+ return status;
+}
+
+/*
+ * \gset [prefix] -- send query and store result into variables
+ */
+static backslashResult
+exec_command_gset(PsqlScanState scan_state, bool active_branch)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ char *prefix = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (prefix)
+ pset.gset_prefix = prefix;
+ else
+ {
+ /* we must set a non-NULL prefix to trigger storing */
+ pset.gset_prefix = pg_strdup("");
+ }
+ /* gset_prefix is freed later */
+ status = PSQL_CMD_SEND;
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return status;
+}
+
+/*
+ * \help [topic] -- print help about SQL commands
+ */
+static backslashResult
+exec_command_help(PsqlScanState scan_state, bool active_branch)
+{
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_WHOLE_LINE, NULL, false);
+ size_t len;
+
+ /* strip any trailing spaces and semicolons */
+ if (opt)
+ {
+ len = strlen(opt);
+ while (len > 0 &&
+ (isspace((unsigned char) opt[len - 1])
+ || opt[len - 1] == ';'))
+ opt[--len] = '\0';
+ }
+
+ helpSQL(opt, pset.popt.topt.pager);
+ free(opt);
+ }
+ else
+ ignore_slash_whole_line(scan_state);
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \H and \html -- toggle HTML formatting
+ */
+static backslashResult
+exec_command_html(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ if (pset.popt.topt.format != PRINT_HTML)
+ success = do_pset("format", "html", &pset.popt, pset.quiet);
+ else
+ success = do_pset("format", "aligned", &pset.popt, pset.quiet);
+ }
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \i and \ir -- include a file
+ */
+static backslashResult
+exec_command_include(PsqlScanState scan_state, bool active_branch, const char *cmd)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *fname = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ if (!fname)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ success = false;
+ }
+ else
+ {
+ bool include_relative;
+
+ include_relative = (strcmp(cmd, "ir") == 0
+ || strcmp(cmd, "include_relative") == 0);
+ expand_tilde(&fname);
+ success = (process_file(fname, include_relative) == EXIT_SUCCESS);
+ free(fname);
+ }
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \if <expr> -- beginning of an \if..\endif block
+ *
+ * <expr> is parsed as a boolean expression. Invalid expressions will emit a
+ * warning and be treated as false. Statements that follow a false expression
+ * will be parsed but ignored. Note that in the case where an \if statement
+ * is itself within an inactive section of a block, then the entire inner
+ * \if..\endif block will be parsed but ignored.
+ */
+static backslashResult
+exec_command_if(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf)
+{
+ if (conditional_active(cstack))
+ {
+ /*
+ * First, push a new active stack entry; this ensures that the lexer
+ * will perform variable substitution and backtick evaluation while
+ * scanning the expression. (That should happen anyway, since we know
+ * we're in an active outer branch, but let's be sure.)
+ */
+ conditional_stack_push(cstack, IFSTATE_TRUE);
+
+ /* Remember current query state in case we need to restore later */
+ save_query_text_state(scan_state, cstack, query_buf);
+
+ /*
+ * Evaluate the expression; if it's false, change to inactive state.
+ */
+ if (!is_true_boolean_expression(scan_state, "\\if expression"))
+ conditional_stack_poke(cstack, IFSTATE_FALSE);
+ }
+ else
+ {
+ /*
+ * We're within an inactive outer branch, so this entire \if block
+ * will be ignored. We don't want to evaluate the expression, so push
+ * the "ignored" stack state before scanning it.
+ */
+ conditional_stack_push(cstack, IFSTATE_IGNORED);
+
+ /* Remember current query state in case we need to restore later */
+ save_query_text_state(scan_state, cstack, query_buf);
+
+ ignore_boolean_expression(scan_state);
+ }
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \elif <expr> -- alternative branch in an \if..\endif block
+ *
+ * <expr> is evaluated the same as in \if <expr>.
+ */
+static backslashResult
+exec_command_elif(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf)
+{
+ bool success = true;
+
+ switch (conditional_stack_peek(cstack))
+ {
+ case IFSTATE_TRUE:
+
+ /*
+ * Just finished active branch of this \if block. Update saved
+ * state so we will keep whatever data was put in query_buf by the
+ * active branch.
+ */
+ save_query_text_state(scan_state, cstack, query_buf);
+
+ /*
+ * Discard \elif expression and ignore the rest until \endif.
+ * Switch state before reading expression to ensure proper lexer
+ * behavior.
+ */
+ conditional_stack_poke(cstack, IFSTATE_IGNORED);
+ ignore_boolean_expression(scan_state);
+ break;
+ case IFSTATE_FALSE:
+
+ /*
+ * Discard any query text added by the just-skipped branch.
+ */
+ discard_query_text(scan_state, cstack, query_buf);
+
+ /*
+ * Have not yet found a true expression in this \if block, so this
+ * might be the first. We have to change state before examining
+ * the expression, or the lexer won't do the right thing.
+ */
+ conditional_stack_poke(cstack, IFSTATE_TRUE);
+ if (!is_true_boolean_expression(scan_state, "\\elif expression"))
+ conditional_stack_poke(cstack, IFSTATE_FALSE);
+ break;
+ case IFSTATE_IGNORED:
+
+ /*
+ * Discard any query text added by the just-skipped branch.
+ */
+ discard_query_text(scan_state, cstack, query_buf);
+
+ /*
+ * Skip expression and move on. Either the \if block already had
+ * an active section, or whole block is being skipped.
+ */
+ ignore_boolean_expression(scan_state);
+ break;
+ case IFSTATE_ELSE_TRUE:
+ case IFSTATE_ELSE_FALSE:
+ pg_log_error("\\elif: cannot occur after \\else");
+ success = false;
+ break;
+ case IFSTATE_NONE:
+ /* no \if to elif from */
+ pg_log_error("\\elif: no matching \\if");
+ success = false;
+ break;
+ }
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \else -- final alternative in an \if..\endif block
+ *
+ * Statements within an \else branch will only be executed if
+ * all previous \if and \elif expressions evaluated to false
+ * and the block was not itself being ignored.
+ */
+static backslashResult
+exec_command_else(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf)
+{
+ bool success = true;
+
+ switch (conditional_stack_peek(cstack))
+ {
+ case IFSTATE_TRUE:
+
+ /*
+ * Just finished active branch of this \if block. Update saved
+ * state so we will keep whatever data was put in query_buf by the
+ * active branch.
+ */
+ save_query_text_state(scan_state, cstack, query_buf);
+
+ /* Now skip the \else branch */
+ conditional_stack_poke(cstack, IFSTATE_ELSE_FALSE);
+ break;
+ case IFSTATE_FALSE:
+
+ /*
+ * Discard any query text added by the just-skipped branch.
+ */
+ discard_query_text(scan_state, cstack, query_buf);
+
+ /*
+ * We've not found any true \if or \elif expression, so execute
+ * the \else branch.
+ */
+ conditional_stack_poke(cstack, IFSTATE_ELSE_TRUE);
+ break;
+ case IFSTATE_IGNORED:
+
+ /*
+ * Discard any query text added by the just-skipped branch.
+ */
+ discard_query_text(scan_state, cstack, query_buf);
+
+ /*
+ * Either we previously processed the active branch of this \if,
+ * or the whole \if block is being skipped. Either way, skip the
+ * \else branch.
+ */
+ conditional_stack_poke(cstack, IFSTATE_ELSE_FALSE);
+ break;
+ case IFSTATE_ELSE_TRUE:
+ case IFSTATE_ELSE_FALSE:
+ pg_log_error("\\else: cannot occur after \\else");
+ success = false;
+ break;
+ case IFSTATE_NONE:
+ /* no \if to else from */
+ pg_log_error("\\else: no matching \\if");
+ success = false;
+ break;
+ }
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \endif -- ends an \if...\endif block
+ */
+static backslashResult
+exec_command_endif(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf)
+{
+ bool success = true;
+
+ switch (conditional_stack_peek(cstack))
+ {
+ case IFSTATE_TRUE:
+ case IFSTATE_ELSE_TRUE:
+ /* Close the \if block, keeping the query text */
+ success = conditional_stack_pop(cstack);
+ Assert(success);
+ break;
+ case IFSTATE_FALSE:
+ case IFSTATE_IGNORED:
+ case IFSTATE_ELSE_FALSE:
+
+ /*
+ * Discard any query text added by the just-skipped branch.
+ */
+ discard_query_text(scan_state, cstack, query_buf);
+
+ /* Close the \if block */
+ success = conditional_stack_pop(cstack);
+ Assert(success);
+ break;
+ case IFSTATE_NONE:
+ /* no \if to end */
+ pg_log_error("\\endif: no matching \\if");
+ success = false;
+ break;
+ }
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \l -- list databases
+ */
+static backslashResult
+exec_command_list(PsqlScanState scan_state, bool active_branch, const char *cmd)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *pattern;
+ bool show_verbose;
+
+ pattern = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ show_verbose = strchr(cmd, '+') ? true : false;
+
+ success = listAllDbs(pattern, show_verbose);
+
+ if (pattern)
+ free(pattern);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \lo_* -- large object operations
+ */
+static backslashResult
+exec_command_lo(PsqlScanState scan_state, bool active_branch, const char *cmd)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt1,
+ *opt2;
+
+ opt1 = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+ opt2 = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ if (strcmp(cmd + 3, "export") == 0)
+ {
+ if (!opt2)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ success = false;
+ }
+ else
+ {
+ expand_tilde(&opt2);
+ success = do_lo_export(opt1, opt2);
+ }
+ }
+
+ else if (strcmp(cmd + 3, "import") == 0)
+ {
+ if (!opt1)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ success = false;
+ }
+ else
+ {
+ expand_tilde(&opt1);
+ success = do_lo_import(opt1, opt2);
+ }
+ }
+
+ else if (strcmp(cmd + 3, "list") == 0)
+ success = do_lo_list();
+
+ else if (strcmp(cmd + 3, "unlink") == 0)
+ {
+ if (!opt1)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ success = false;
+ }
+ else
+ success = do_lo_unlink(opt1);
+ }
+
+ else
+ status = PSQL_CMD_UNKNOWN;
+
+ free(opt1);
+ free(opt2);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ if (!success)
+ status = PSQL_CMD_ERROR;
+
+ return status;
+}
+
+/*
+ * \o -- set query output
+ */
+static backslashResult
+exec_command_out(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *fname = psql_scan_slash_option(scan_state,
+ OT_FILEPIPE, NULL, true);
+
+ expand_tilde(&fname);
+ success = setQFout(fname);
+ free(fname);
+ }
+ else
+ ignore_slash_filepipe(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \p -- print the current query buffer
+ */
+static backslashResult
+exec_command_print(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf)
+{
+ if (active_branch)
+ {
+ /*
+ * We want to print the same thing \g would execute, but not to change
+ * the query buffer state; so we can't use copy_previous_query().
+ * Also, beware of possibility that buffer pointers are NULL.
+ */
+ if (query_buf && query_buf->len > 0)
+ puts(query_buf->data);
+ else if (previous_buf && previous_buf->len > 0)
+ puts(previous_buf->data);
+ else if (!pset.quiet)
+ puts(_("Query buffer is empty."));
+ fflush(stdout);
+ }
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \password -- set user password
+ */
+static backslashResult
+exec_command_password(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt0 = psql_scan_slash_option(scan_state,
+ OT_SQLID, NULL, true);
+ char pw1[100];
+ char pw2[100];
+
+ simple_prompt("Enter new password: ", pw1, sizeof(pw1), false);
+ simple_prompt("Enter it again: ", pw2, sizeof(pw2), false);
+
+ if (strcmp(pw1, pw2) != 0)
+ {
+ pg_log_error("Passwords didn't match.");
+ success = false;
+ }
+ else
+ {
+ char *user;
+ char *encrypted_password;
+
+ if (opt0)
+ user = opt0;
+ else
+ user = PQuser(pset.db);
+
+ encrypted_password = PQencryptPasswordConn(pset.db, pw1, user, NULL);
+
+ if (!encrypted_password)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ success = false;
+ }
+ else
+ {
+ PQExpBufferData buf;
+ PGresult *res;
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf, "ALTER USER %s PASSWORD ",
+ fmtId(user));
+ appendStringLiteralConn(&buf, encrypted_password, pset.db);
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ success = false;
+ else
+ PQclear(res);
+ PQfreemem(encrypted_password);
+ }
+ }
+
+ if (opt0)
+ free(opt0);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \prompt -- prompt and set variable
+ */
+static backslashResult
+exec_command_prompt(PsqlScanState scan_state, bool active_branch,
+ const char *cmd)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt,
+ *prompt_text = NULL;
+ char *arg1,
+ *arg2;
+
+ arg1 = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, false);
+ arg2 = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, false);
+
+ if (!arg1)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ success = false;
+ }
+ else
+ {
+ char *result;
+
+ if (arg2)
+ {
+ prompt_text = arg1;
+ opt = arg2;
+ }
+ else
+ opt = arg1;
+
+ if (!pset.inputfile)
+ {
+ result = (char *) pg_malloc(4096);
+ simple_prompt(prompt_text, result, 4096, true);
+ }
+ else
+ {
+ if (prompt_text)
+ {
+ fputs(prompt_text, stdout);
+ fflush(stdout);
+ }
+ result = gets_fromFile(stdin);
+ if (!result)
+ {
+ pg_log_error("\\%s: could not read value for variable",
+ cmd);
+ success = false;
+ }
+ }
+
+ if (result &&
+ !SetVariable(pset.vars, opt, result))
+ success = false;
+
+ if (result)
+ free(result);
+ if (prompt_text)
+ free(prompt_text);
+ free(opt);
+ }
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \pset -- set printing parameters
+ */
+static backslashResult
+exec_command_pset(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt0 = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+ char *opt1 = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (!opt0)
+ {
+ /* list all variables */
+
+ int i;
+ static const char *const my_list[] = {
+ "border", "columns", "csv_fieldsep", "expanded", "fieldsep",
+ "fieldsep_zero", "footer", "format", "linestyle", "null",
+ "numericlocale", "pager", "pager_min_lines",
+ "recordsep", "recordsep_zero",
+ "tableattr", "title", "tuples_only",
+ "unicode_border_linestyle",
+ "unicode_column_linestyle",
+ "unicode_header_linestyle",
+ NULL
+ };
+
+ for (i = 0; my_list[i] != NULL; i++)
+ {
+ char *val = pset_value_string(my_list[i], &pset.popt);
+
+ printf("%-24s %s\n", my_list[i], val);
+ free(val);
+ }
+
+ success = true;
+ }
+ else
+ success = do_pset(opt0, opt1, &pset.popt, pset.quiet);
+
+ free(opt0);
+ free(opt1);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \q or \quit -- exit psql
+ */
+static backslashResult
+exec_command_quit(PsqlScanState scan_state, bool active_branch)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ status = PSQL_CMD_TERMINATE;
+
+ return status;
+}
+
+/*
+ * \r -- reset (clear) the query buffer
+ */
+static backslashResult
+exec_command_reset(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf)
+{
+ if (active_branch)
+ {
+ resetPQExpBuffer(query_buf);
+ psql_scan_reset(scan_state);
+ if (!pset.quiet)
+ puts(_("Query buffer reset (cleared)."));
+ }
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+/*
+ * \s -- save history in a file or show it on the screen
+ */
+static backslashResult
+exec_command_s(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *fname = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ expand_tilde(&fname);
+ success = printHistory(fname, pset.popt.topt.pager);
+ if (success && !pset.quiet && fname)
+ printf(_("Wrote history to file \"%s\".\n"), fname);
+ if (!fname)
+ putchar('\n');
+ free(fname);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \set -- set variable
+ */
+static backslashResult
+exec_command_set(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt0 = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (!opt0)
+ {
+ /* list all variables */
+ PrintVariables(pset.vars);
+ success = true;
+ }
+ else
+ {
+ /*
+ * Set variable to the concatenation of the arguments.
+ */
+ char *newval;
+ char *opt;
+
+ opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+ newval = pg_strdup(opt ? opt : "");
+ free(opt);
+
+ while ((opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false)))
+ {
+ newval = pg_realloc(newval, strlen(newval) + strlen(opt) + 1);
+ strcat(newval, opt);
+ free(opt);
+ }
+
+ if (!SetVariable(pset.vars, opt0, newval))
+ success = false;
+
+ free(newval);
+ }
+ free(opt0);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \setenv -- set environment variable
+ */
+static backslashResult
+exec_command_setenv(PsqlScanState scan_state, bool active_branch,
+ const char *cmd)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *envvar = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+ char *envval = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (!envvar)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ success = false;
+ }
+ else if (strchr(envvar, '=') != NULL)
+ {
+ pg_log_error("\\%s: environment variable name must not contain \"=\"",
+ cmd);
+ success = false;
+ }
+ else if (!envval)
+ {
+ /* No argument - unset the environment variable */
+ unsetenv(envvar);
+ success = true;
+ }
+ else
+ {
+ /* Set variable to the value of the next argument */
+ char *newval;
+
+ newval = psprintf("%s=%s", envvar, envval);
+ putenv(newval);
+ success = true;
+
+ /*
+ * Do not free newval here, it will screw up the environment if
+ * you do. See putenv man page for details. That means we leak a
+ * bit of memory here, but not enough to worry about.
+ */
+ }
+ free(envvar);
+ free(envval);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \sf/\sv -- show a function/view's source code
+ */
+static backslashResult
+exec_command_sf_sv(PsqlScanState scan_state, bool active_branch,
+ const char *cmd, bool is_func)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ bool show_linenumbers = (strchr(cmd, '+') != NULL);
+ PQExpBuffer buf;
+ char *obj_desc;
+ Oid obj_oid = InvalidOid;
+ EditableObjectType eot = is_func ? EditableFunction : EditableView;
+
+ buf = createPQExpBuffer();
+ obj_desc = psql_scan_slash_option(scan_state,
+ OT_WHOLE_LINE, NULL, true);
+ if (pset.sversion < (is_func ? 80400 : 70400))
+ {
+ char sverbuf[32];
+
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf));
+ if (is_func)
+ pg_log_error("The server (version %s) does not support showing function source.",
+ sverbuf);
+ else
+ pg_log_error("The server (version %s) does not support showing view definitions.",
+ sverbuf);
+ status = PSQL_CMD_ERROR;
+ }
+ else if (!obj_desc)
+ {
+ if (is_func)
+ pg_log_error("function name is required");
+ else
+ pg_log_error("view name is required");
+ status = PSQL_CMD_ERROR;
+ }
+ else if (!lookup_object_oid(eot, obj_desc, &obj_oid))
+ {
+ /* error already reported */
+ status = PSQL_CMD_ERROR;
+ }
+ else if (!get_create_object_cmd(eot, obj_oid, buf))
+ {
+ /* error already reported */
+ status = PSQL_CMD_ERROR;
+ }
+ else
+ {
+ FILE *output;
+ bool is_pager;
+
+ /* Select output stream: stdout, pager, or file */
+ if (pset.queryFout == stdout)
+ {
+ /* count lines in function to see if pager is needed */
+ int lineno = count_lines_in_buf(buf);
+
+ output = PageOutput(lineno, &(pset.popt.topt));
+ is_pager = true;
+ }
+ else
+ {
+ /* use previously set output file, without pager */
+ output = pset.queryFout;
+ is_pager = false;
+ }
+
+ if (show_linenumbers)
+ {
+ /*
+ * For functions, lineno "1" should correspond to the first
+ * line of the function body. We expect that
+ * pg_get_functiondef() will emit that on a line beginning
+ * with "AS ", and that there can be no such line before the
+ * real start of the function body.
+ */
+ print_with_linenumbers(output, buf->data,
+ is_func ? "AS " : NULL);
+ }
+ else
+ {
+ /* just send the definition to output */
+ fputs(buf->data, output);
+ }
+
+ if (is_pager)
+ ClosePager(output);
+ }
+
+ if (obj_desc)
+ free(obj_desc);
+ destroyPQExpBuffer(buf);
+ }
+ else
+ ignore_slash_whole_line(scan_state);
+
+ return status;
+}
+
+/*
+ * \t -- turn off table headers and row count
+ */
+static backslashResult
+exec_command_t(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ success = do_pset("tuples_only", opt, &pset.popt, pset.quiet);
+ free(opt);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \T -- define html <table ...> attributes
+ */
+static backslashResult
+exec_command_T(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *value = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ success = do_pset("tableattr", value, &pset.popt, pset.quiet);
+ free(value);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \timing -- enable/disable timing of queries
+ */
+static backslashResult
+exec_command_timing(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (opt)
+ success = ParseVariableBool(opt, "\\timing", &pset.timing);
+ else
+ pset.timing = !pset.timing;
+ if (!pset.quiet)
+ {
+ if (pset.timing)
+ puts(_("Timing is on."));
+ else
+ puts(_("Timing is off."));
+ }
+ free(opt);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \unset -- unset variable
+ */
+static backslashResult
+exec_command_unset(PsqlScanState scan_state, bool active_branch,
+ const char *cmd)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (!opt)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ success = false;
+ }
+ else if (!SetVariable(pset.vars, opt, NULL))
+ success = false;
+
+ free(opt);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \w -- write query buffer to file
+ */
+static backslashResult
+exec_command_write(PsqlScanState scan_state, bool active_branch,
+ const char *cmd,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf)
+{
+ backslashResult status = PSQL_CMD_SKIP_LINE;
+
+ if (active_branch)
+ {
+ char *fname = psql_scan_slash_option(scan_state,
+ OT_FILEPIPE, NULL, true);
+ FILE *fd = NULL;
+ bool is_pipe = false;
+
+ if (!query_buf)
+ {
+ pg_log_error("no query buffer");
+ status = PSQL_CMD_ERROR;
+ }
+ else
+ {
+ if (!fname)
+ {
+ pg_log_error("\\%s: missing required argument", cmd);
+ status = PSQL_CMD_ERROR;
+ }
+ else
+ {
+ expand_tilde(&fname);
+ if (fname[0] == '|')
+ {
+ is_pipe = true;
+ disable_sigpipe_trap();
+ fd = popen(&fname[1], "w");
+ }
+ else
+ {
+ canonicalize_path(fname);
+ fd = fopen(fname, "w");
+ }
+ if (!fd)
+ {
+ pg_log_error("%s: %m", fname);
+ status = PSQL_CMD_ERROR;
+ }
+ }
+ }
+
+ if (fd)
+ {
+ int result;
+
+ /*
+ * We want to print the same thing \g would execute, but not to
+ * change the query buffer state; so we can't use
+ * copy_previous_query(). Also, beware of possibility that buffer
+ * pointers are NULL.
+ */
+ if (query_buf && query_buf->len > 0)
+ fprintf(fd, "%s\n", query_buf->data);
+ else if (previous_buf && previous_buf->len > 0)
+ fprintf(fd, "%s\n", previous_buf->data);
+
+ if (is_pipe)
+ result = pclose(fd);
+ else
+ result = fclose(fd);
+
+ if (result == EOF)
+ {
+ pg_log_error("%s: %m", fname);
+ status = PSQL_CMD_ERROR;
+ }
+ }
+
+ if (is_pipe)
+ restore_sigpipe_trap();
+
+ free(fname);
+ }
+ else
+ ignore_slash_filepipe(scan_state);
+
+ return status;
+}
+
+/*
+ * \watch -- execute a query every N seconds
+ */
+static backslashResult
+exec_command_watch(PsqlScanState scan_state, bool active_branch,
+ PQExpBuffer query_buf, PQExpBuffer previous_buf)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+ double sleep = 2;
+
+ /* Convert optional sleep-length argument */
+ if (opt)
+ {
+ sleep = strtod(opt, NULL);
+ if (sleep <= 0)
+ sleep = 1;
+ free(opt);
+ }
+
+ /* If query_buf is empty, recall and execute previous query */
+ copy_previous_query(query_buf, previous_buf);
+
+ success = do_watch(query_buf, sleep);
+
+ /* Reset the query buffer as though for \r */
+ resetPQExpBuffer(query_buf);
+ psql_scan_reset(scan_state);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \x -- set or toggle expanded table representation
+ */
+static backslashResult
+exec_command_x(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ success = do_pset("expanded", opt, &pset.popt, pset.quiet);
+ free(opt);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \z -- list table privileges (equivalent to \dp)
+ */
+static backslashResult
+exec_command_z(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *pattern = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, true);
+
+ success = permissionsList(pattern);
+ if (pattern)
+ free(pattern);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \! -- execute shell command
+ */
+static backslashResult
+exec_command_shell_escape(PsqlScanState scan_state, bool active_branch)
+{
+ bool success = true;
+
+ if (active_branch)
+ {
+ char *opt = psql_scan_slash_option(scan_state,
+ OT_WHOLE_LINE, NULL, false);
+
+ success = do_shell(opt);
+ free(opt);
+ }
+ else
+ ignore_slash_whole_line(scan_state);
+
+ return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR;
+}
+
+/*
+ * \? -- print help about backslash commands
+ */
+static backslashResult
+exec_command_slash_command_help(PsqlScanState scan_state, bool active_branch)
+{
+ if (active_branch)
+ {
+ char *opt0 = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false);
+
+ if (!opt0 || strcmp(opt0, "commands") == 0)
+ slashUsage(pset.popt.topt.pager);
+ else if (strcmp(opt0, "options") == 0)
+ usage(pset.popt.topt.pager);
+ else if (strcmp(opt0, "variables") == 0)
+ helpVariables(pset.popt.topt.pager);
+ else
+ slashUsage(pset.popt.topt.pager);
+
+ if (opt0)
+ free(opt0);
+ }
+ else
+ ignore_slash_options(scan_state);
+
+ return PSQL_CMD_SKIP_LINE;
+}
+
+
+/*
+ * Read and interpret an argument to the \connect slash command.
+ *
+ * Returns a malloc'd string, or NULL if no/empty argument.
+ */
+static char *
+read_connect_arg(PsqlScanState scan_state)
+{
+ char *result;
+ char quote;
+
+ /*
+ * Ideally we should treat the arguments as SQL identifiers. But for
+ * backwards compatibility with 7.2 and older pg_dump files, we have to
+ * take unquoted arguments verbatim (don't downcase them). For now,
+ * double-quoted arguments may be stripped of double quotes (as if SQL
+ * identifiers). By 7.4 or so, pg_dump files can be expected to
+ * double-quote all mixed-case \connect arguments, and then we can get rid
+ * of OT_SQLIDHACK.
+ */
+ result = psql_scan_slash_option(scan_state, OT_SQLIDHACK, &quote, true);
+
+ if (!result)
+ return NULL;
+
+ if (quote)
+ return result;
+
+ if (*result == '\0' || strcmp(result, "-") == 0)
+ {
+ free(result);
+ return NULL;
+ }
+
+ return result;
+}
+
+/*
+ * Read a boolean expression, return it as a PQExpBuffer string.
+ *
+ * Note: anything more or less than one token will certainly fail to be
+ * parsed by ParseVariableBool, so we don't worry about complaining here.
+ * This routine's return data structure will need to be rethought anyway
+ * to support likely future extensions such as "\if defined VARNAME".
+ */
+static PQExpBuffer
+gather_boolean_expression(PsqlScanState scan_state)
+{
+ PQExpBuffer exp_buf = createPQExpBuffer();
+ int num_options = 0;
+ char *value;
+
+ /* collect all arguments for the conditional command into exp_buf */
+ while ((value = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false)) != NULL)
+ {
+ /* add spaces between tokens */
+ if (num_options > 0)
+ appendPQExpBufferChar(exp_buf, ' ');
+ appendPQExpBufferStr(exp_buf, value);
+ num_options++;
+ free(value);
+ }
+
+ return exp_buf;
+}
+
+/*
+ * Read a boolean expression, return true if the expression
+ * was a valid boolean expression that evaluated to true.
+ * Otherwise return false.
+ *
+ * Note: conditional stack's top state must be active, else lexer will
+ * fail to expand variables and backticks.
+ */
+static bool
+is_true_boolean_expression(PsqlScanState scan_state, const char *name)
+{
+ PQExpBuffer buf = gather_boolean_expression(scan_state);
+ bool value = false;
+ bool success = ParseVariableBool(buf->data, name, &value);
+
+ destroyPQExpBuffer(buf);
+ return success && value;
+}
+
+/*
+ * Read a boolean expression, but do nothing with it.
+ *
+ * Note: conditional stack's top state must be INACTIVE, else lexer will
+ * expand variables and backticks, which we do not want here.
+ */
+static void
+ignore_boolean_expression(PsqlScanState scan_state)
+{
+ PQExpBuffer buf = gather_boolean_expression(scan_state);
+
+ destroyPQExpBuffer(buf);
+}
+
+/*
+ * Read and discard "normal" slash command options.
+ *
+ * This should be used for inactive-branch processing of any slash command
+ * that eats one or more OT_NORMAL, OT_SQLID, or OT_SQLIDHACK parameters.
+ * We don't need to worry about exactly how many it would eat, since the
+ * cleanup logic in HandleSlashCmds would silently discard any extras anyway.
+ */
+static void
+ignore_slash_options(PsqlScanState scan_state)
+{
+ char *arg;
+
+ while ((arg = psql_scan_slash_option(scan_state,
+ OT_NORMAL, NULL, false)) != NULL)
+ free(arg);
+}
+
+/*
+ * Read and discard FILEPIPE slash command argument.
+ *
+ * This *MUST* be used for inactive-branch processing of any slash command
+ * that takes an OT_FILEPIPE option. Otherwise we might consume a different
+ * amount of option text in active and inactive cases.
+ */
+static void
+ignore_slash_filepipe(PsqlScanState scan_state)
+{
+ char *arg = psql_scan_slash_option(scan_state,
+ OT_FILEPIPE, NULL, false);
+
+ if (arg)
+ free(arg);
+}
+
+/*
+ * Read and discard whole-line slash command argument.
+ *
+ * This *MUST* be used for inactive-branch processing of any slash command
+ * that takes an OT_WHOLE_LINE option. Otherwise we might consume a different
+ * amount of option text in active and inactive cases.
+ */
+static void
+ignore_slash_whole_line(PsqlScanState scan_state)
+{
+ char *arg = psql_scan_slash_option(scan_state,
+ OT_WHOLE_LINE, NULL, false);
+
+ if (arg)
+ free(arg);
+}
+
+/*
+ * Return true if the command given is a branching command.
+ */
+static bool
+is_branching_command(const char *cmd)
+{
+ return (strcmp(cmd, "if") == 0 ||
+ strcmp(cmd, "elif") == 0 ||
+ strcmp(cmd, "else") == 0 ||
+ strcmp(cmd, "endif") == 0);
+}
+
+/*
+ * Prepare to possibly restore query buffer to its current state
+ * (cf. discard_query_text).
+ *
+ * We need to remember the length of the query buffer, and the lexer's
+ * notion of the parenthesis nesting depth.
+ */
+static void
+save_query_text_state(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf)
+{
+ if (query_buf)
+ conditional_stack_set_query_len(cstack, query_buf->len);
+ conditional_stack_set_paren_depth(cstack,
+ psql_scan_get_paren_depth(scan_state));
+}
+
+/*
+ * Discard any query text absorbed during an inactive conditional branch.
+ *
+ * We must discard data that was appended to query_buf during an inactive
+ * \if branch. We don't have to do anything there if there's no query_buf.
+ *
+ * Also, reset the lexer state to the same paren depth there was before.
+ * (The rest of its state doesn't need attention, since we could not be
+ * inside a comment or literal or partial token.)
+ */
+static void
+discard_query_text(PsqlScanState scan_state, ConditionalStack cstack,
+ PQExpBuffer query_buf)
+{
+ if (query_buf)
+ {
+ int new_len = conditional_stack_get_query_len(cstack);
+
+ Assert(new_len >= 0 && new_len <= query_buf->len);
+ query_buf->len = new_len;
+ query_buf->data[new_len] = '\0';
+ }
+ psql_scan_set_paren_depth(scan_state,
+ conditional_stack_get_paren_depth(cstack));
+}
+
+/*
+ * If query_buf is empty, copy previous_buf into it.
+ *
+ * This is used by various slash commands for which re-execution of a
+ * previous query is a common usage. For convenience, we allow the
+ * case of query_buf == NULL (and do nothing).
+ */
+static void
+copy_previous_query(PQExpBuffer query_buf, PQExpBuffer previous_buf)
+{
+ if (query_buf && query_buf->len == 0)
+ appendPQExpBufferStr(query_buf, previous_buf->data);
+}
+
+/*
+ * Ask the user for a password; 'username' is the username the
+ * password is for, if one has been explicitly specified. Returns a
+ * malloc'd string.
+ */
+static char *
+prompt_for_password(const char *username)
+{
+ char buf[100];
+
+ if (username == NULL || username[0] == '\0')
+ simple_prompt("Password: ", buf, sizeof(buf), false);
+ else
+ {
+ char *prompt_text;
+
+ prompt_text = psprintf(_("Password for user %s: "), username);
+ simple_prompt(prompt_text, buf, sizeof(buf), false);
+ free(prompt_text);
+ }
+ return pg_strdup(buf);
+}
+
+static bool
+param_is_newly_set(const char *old_val, const char *new_val)
+{
+ if (new_val == NULL)
+ return false;
+
+ if (old_val == NULL || strcmp(old_val, new_val) != 0)
+ return true;
+
+ return false;
+}
+
+/*
+ * do_connect -- handler for \connect
+ *
+ * Connects to a database with given parameters. Absent an established
+ * connection, all parameters are required. Given -reuse-previous=off or a
+ * connection string without -reuse-previous=on, NULL values will pass through
+ * to PQconnectdbParams(), so the libpq defaults will be used. Otherwise, NULL
+ * values will be replaced with the ones in the current connection.
+ *
+ * In interactive mode, if connection fails with the given parameters,
+ * the old connection will be kept.
+ */
+static bool
+do_connect(enum trivalue reuse_previous_specification,
+ char *dbname, char *user, char *host, char *port)
+{
+ PGconn *o_conn = pset.db,
+ *n_conn = NULL;
+ PQconninfoOption *cinfo;
+ int nconnopts = 0;
+ bool same_host = false;
+ char *password = NULL;
+ char *client_encoding;
+ bool success = true;
+ bool keep_password = true;
+ bool has_connection_string;
+ bool reuse_previous;
+
+ if (!o_conn && (!dbname || !user || !host || !port))
+ {
+ /*
+ * We don't know the supplied connection parameters and don't want to
+ * connect to the wrong database by using defaults, so require all
+ * parameters to be specified.
+ */
+ pg_log_error("All connection parameters must be supplied because no "
+ "database connection exists");
+ return false;
+ }
+
+ has_connection_string = dbname ?
+ recognized_connection_string(dbname) : false;
+ switch (reuse_previous_specification)
+ {
+ case TRI_YES:
+ reuse_previous = true;
+ break;
+ case TRI_NO:
+ reuse_previous = false;
+ break;
+ default:
+ reuse_previous = !has_connection_string;
+ break;
+ }
+
+ /* If the old connection does not exist, there is nothing to reuse. */
+ if (!o_conn)
+ reuse_previous = false;
+
+ /* Silently ignore arguments subsequent to a connection string. */
+ if (has_connection_string)
+ {
+ user = NULL;
+ host = NULL;
+ port = NULL;
+ }
+
+ /*
+ * If we intend to re-use connection parameters, collect them out of the
+ * old connection, then replace individual values as necessary. Otherwise,
+ * obtain a PQconninfoOption array containing libpq's defaults, and modify
+ * that. Note this function assumes that PQconninfo, PQconndefaults, and
+ * PQconninfoParse will all produce arrays containing the same options in
+ * the same order.
+ */
+ if (reuse_previous)
+ cinfo = PQconninfo(o_conn);
+ else
+ cinfo = PQconndefaults();
+
+ if (cinfo)
+ {
+ if (has_connection_string)
+ {
+ /* Parse the connstring and insert values into cinfo */
+ PQconninfoOption *replcinfo;
+ char *errmsg;
+
+ replcinfo = PQconninfoParse(dbname, &errmsg);
+ if (replcinfo)
+ {
+ PQconninfoOption *ci;
+ PQconninfoOption *replci;
+ bool have_password = false;
+
+ for (ci = cinfo, replci = replcinfo;
+ ci->keyword && replci->keyword;
+ ci++, replci++)
+ {
+ Assert(strcmp(ci->keyword, replci->keyword) == 0);
+ /* Insert value from connstring if one was provided */
+ if (replci->val)
+ {
+ /*
+ * We know that both val strings were allocated by
+ * libpq, so the least messy way to avoid memory leaks
+ * is to swap them.
+ */
+ char *swap = replci->val;
+
+ replci->val = ci->val;
+ ci->val = swap;
+
+ /*
+ * Check whether connstring provides options affecting
+ * password re-use. While any change in user, host,
+ * hostaddr, or port causes us to ignore the old
+ * connection's password, we don't force that for
+ * dbname, since passwords aren't database-specific.
+ */
+ if (replci->val == NULL ||
+ strcmp(ci->val, replci->val) != 0)
+ {
+ if (strcmp(replci->keyword, "user") == 0 ||
+ strcmp(replci->keyword, "host") == 0 ||
+ strcmp(replci->keyword, "hostaddr") == 0 ||
+ strcmp(replci->keyword, "port") == 0)
+ keep_password = false;
+ }
+ /* Also note whether connstring contains a password. */
+ if (strcmp(replci->keyword, "password") == 0)
+ have_password = true;
+ }
+ else if (!reuse_previous)
+ {
+ /*
+ * When we have a connstring and are not re-using
+ * parameters, swap *all* entries, even those not set
+ * by the connstring. This avoids absorbing
+ * environment-dependent defaults from the result of
+ * PQconndefaults(). We don't want to do that because
+ * they'd override service-file entries if the
+ * connstring specifies a service parameter, whereas
+ * the priority should be the other way around. libpq
+ * can certainly recompute any defaults we don't pass
+ * here. (In this situation, it's a bit wasteful to
+ * have called PQconndefaults() at all, but not doing
+ * so would require yet another major code path here.)
+ */
+ replci->val = ci->val;
+ ci->val = NULL;
+ }
+ }
+ Assert(ci->keyword == NULL && replci->keyword == NULL);
+
+ /* While here, determine how many option slots there are */
+ nconnopts = ci - cinfo;
+
+ PQconninfoFree(replcinfo);
+
+ /*
+ * If the connstring contains a password, tell the loop below
+ * that we may use it, regardless of other settings (i.e.,
+ * cinfo's password is no longer an "old" password).
+ */
+ if (have_password)
+ keep_password = true;
+
+ /* Don't let code below try to inject dbname into params. */
+ dbname = NULL;
+ }
+ else
+ {
+ /* PQconninfoParse failed */
+ if (errmsg)
+ {
+ pg_log_error("%s", errmsg);
+ PQfreemem(errmsg);
+ }
+ else
+ pg_log_error("out of memory");
+ success = false;
+ }
+ }
+ else
+ {
+ /*
+ * If dbname isn't a connection string, then we'll inject it and
+ * the other parameters into the keyword array below. (We can't
+ * easily insert them into the cinfo array because of memory
+ * management issues: PQconninfoFree would misbehave on Windows.)
+ * However, to avoid dependencies on the order in which parameters
+ * appear in the array, make a preliminary scan to set
+ * keep_password and same_host correctly.
+ *
+ * While any change in user, host, or port causes us to ignore the
+ * old connection's password, we don't force that for dbname,
+ * since passwords aren't database-specific.
+ */
+ PQconninfoOption *ci;
+
+ for (ci = cinfo; ci->keyword; ci++)
+ {
+ if (user && strcmp(ci->keyword, "user") == 0)
+ {
+ if (!(ci->val && strcmp(user, ci->val) == 0))
+ keep_password = false;
+ }
+ else if (host && strcmp(ci->keyword, "host") == 0)
+ {
+ if (ci->val && strcmp(host, ci->val) == 0)
+ same_host = true;
+ else
+ keep_password = false;
+ }
+ else if (port && strcmp(ci->keyword, "port") == 0)
+ {
+ if (!(ci->val && strcmp(port, ci->val) == 0))
+ keep_password = false;
+ }
+ }
+
+ /* While here, determine how many option slots there are */
+ nconnopts = ci - cinfo;
+ }
+ }
+ else
+ {
+ /* We failed to create the cinfo structure */
+ pg_log_error("out of memory");
+ success = false;
+ }
+
+ /*
+ * If the user asked to be prompted for a password, ask for one now. If
+ * not, use the password from the old connection, provided the username
+ * etc have not changed. Otherwise, try to connect without a password
+ * first, and then ask for a password if needed.
+ *
+ * XXX: this behavior leads to spurious connection attempts recorded in
+ * the postmaster's log. But libpq offers no API that would let us obtain
+ * a password and then continue with the first connection attempt.
+ */
+ if (pset.getPassword == TRI_YES && success)
+ {
+ /*
+ * If a connstring or URI is provided, we don't know which username
+ * will be used, since we haven't dug that out of the connstring.
+ * Don't risk issuing a misleading prompt. As in startup.c, it does
+ * not seem worth working harder, since this getPassword setting is
+ * normally only used in noninteractive cases.
+ */
+ password = prompt_for_password(has_connection_string ? NULL : user);
+ }
+
+ /*
+ * Consider whether to force client_encoding to "auto" (overriding
+ * anything in the connection string). We do so if we have a terminal
+ * connection and there is no PGCLIENTENCODING environment setting.
+ */
+ if (pset.notty || getenv("PGCLIENTENCODING"))
+ client_encoding = NULL;
+ else
+ client_encoding = "auto";
+
+ /* Loop till we have a connection or fail, which we might've already */
+ while (success)
+ {
+ const char **keywords = pg_malloc((nconnopts + 1) * sizeof(*keywords));
+ const char **values = pg_malloc((nconnopts + 1) * sizeof(*values));
+ int paramnum = 0;
+ PQconninfoOption *ci;
+
+ /*
+ * Copy non-default settings into the PQconnectdbParams parameter
+ * arrays; but inject any values specified old-style, as well as any
+ * interactively-obtained password, and a couple of fields we want to
+ * set forcibly.
+ *
+ * If you change this code, see also the initial-connection code in
+ * main().
+ */
+ for (ci = cinfo; ci->keyword; ci++)
+ {
+ keywords[paramnum] = ci->keyword;
+
+ if (dbname && strcmp(ci->keyword, "dbname") == 0)
+ values[paramnum++] = dbname;
+ else if (user && strcmp(ci->keyword, "user") == 0)
+ values[paramnum++] = user;
+ else if (host && strcmp(ci->keyword, "host") == 0)
+ values[paramnum++] = host;
+ else if (host && !same_host && strcmp(ci->keyword, "hostaddr") == 0)
+ {
+ /* If we're changing the host value, drop any old hostaddr */
+ values[paramnum++] = NULL;
+ }
+ else if (port && strcmp(ci->keyword, "port") == 0)
+ values[paramnum++] = port;
+ /* If !keep_password, we unconditionally drop old password */
+ else if ((password || !keep_password) &&
+ strcmp(ci->keyword, "password") == 0)
+ values[paramnum++] = password;
+ else if (strcmp(ci->keyword, "fallback_application_name") == 0)
+ values[paramnum++] = pset.progname;
+ else if (client_encoding &&
+ strcmp(ci->keyword, "client_encoding") == 0)
+ values[paramnum++] = client_encoding;
+ else if (ci->val)
+ values[paramnum++] = ci->val;
+ /* else, don't bother making libpq parse this keyword */
+ }
+ /* add array terminator */
+ keywords[paramnum] = NULL;
+ values[paramnum] = NULL;
+
+ /* Note we do not want libpq to re-expand the dbname parameter */
+ n_conn = PQconnectdbParams(keywords, values, false);
+
+ pg_free(keywords);
+ pg_free(values);
+
+ if (PQstatus(n_conn) == CONNECTION_OK)
+ break;
+
+ /*
+ * Connection attempt failed; either retry the connection attempt with
+ * a new password, or give up.
+ */
+ if (!password && PQconnectionNeedsPassword(n_conn) && pset.getPassword != TRI_NO)
+ {
+ /*
+ * Prompt for password using the username we actually connected
+ * with --- it might've come out of "dbname" rather than "user".
+ */
+ password = prompt_for_password(PQuser(n_conn));
+ PQfinish(n_conn);
+ n_conn = NULL;
+ continue;
+ }
+
+ /*
+ * We'll report the error below ... unless n_conn is NULL, indicating
+ * that libpq didn't have enough memory to make a PGconn.
+ */
+ if (n_conn == NULL)
+ pg_log_error("out of memory");
+
+ success = false;
+ } /* end retry loop */
+
+ /* Release locally allocated data, whether we succeeded or not */
+ if (password)
+ pg_free(password);
+ if (cinfo)
+ PQconninfoFree(cinfo);
+
+ if (!success)
+ {
+ /*
+ * Failed to connect to the database. In interactive mode, keep the
+ * previous connection to the DB; in scripting mode, close our
+ * previous connection as well.
+ */
+ if (pset.cur_cmd_interactive)
+ {
+ if (n_conn)
+ {
+ pg_log_info("%s", PQerrorMessage(n_conn));
+ PQfinish(n_conn);
+ }
+
+ /* pset.db is left unmodified */
+ if (o_conn)
+ pg_log_info("Previous connection kept");
+ }
+ else
+ {
+ if (n_conn)
+ {
+ pg_log_error("\\connect: %s", PQerrorMessage(n_conn));
+ PQfinish(n_conn);
+ }
+
+ if (o_conn)
+ {
+ /*
+ * Transition to having no connection. Keep this bit in sync
+ * with CheckConnection().
+ */
+ PQfinish(o_conn);
+ pset.db = NULL;
+ ResetCancelConn();
+ UnsyncVariables();
+ }
+ }
+
+ return false;
+ }
+
+ /*
+ * Replace the old connection with the new one, and update
+ * connection-dependent variables. Keep the resynchronization logic in
+ * sync with CheckConnection().
+ */
+ PQsetNoticeProcessor(n_conn, NoticeProcessor, NULL);
+ pset.db = n_conn;
+ SyncVariables();
+ connection_warnings(false); /* Must be after SyncVariables */
+
+ /* Tell the user about the new connection */
+ if (!pset.quiet)
+ {
+ if (!o_conn ||
+ param_is_newly_set(PQhost(o_conn), PQhost(pset.db)) ||
+ param_is_newly_set(PQport(o_conn), PQport(pset.db)))
+ {
+ char *host = PQhost(pset.db);
+ char *hostaddr = PQhostaddr(pset.db);
+
+ /*
+ * If the host is an absolute path, the connection is via socket
+ * unless overridden by hostaddr
+ */
+ if (is_absolute_path(host))
+ {
+ if (hostaddr && *hostaddr)
+ printf(_("You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"),
+ PQdb(pset.db), PQuser(pset.db), hostaddr, PQport(pset.db));
+ else
+ printf(_("You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"),
+ PQdb(pset.db), PQuser(pset.db), host, PQport(pset.db));
+ }
+ else
+ {
+ if (hostaddr && *hostaddr && strcmp(host, hostaddr) != 0)
+ printf(_("You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"),
+ PQdb(pset.db), PQuser(pset.db), host, hostaddr, PQport(pset.db));
+ else
+ printf(_("You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"),
+ PQdb(pset.db), PQuser(pset.db), host, PQport(pset.db));
+ }
+ }
+ else
+ printf(_("You are now connected to database \"%s\" as user \"%s\".\n"),
+ PQdb(pset.db), PQuser(pset.db));
+ }
+
+ if (o_conn)
+ PQfinish(o_conn);
+ return true;
+}
+
+
+void
+connection_warnings(bool in_startup)
+{
+ if (!pset.quiet && !pset.notty)
+ {
+ int client_ver = PG_VERSION_NUM;
+ char cverbuf[32];
+ char sverbuf[32];
+
+ if (pset.sversion != client_ver)
+ {
+ const char *server_version;
+
+ /* Try to get full text form, might include "devel" etc */
+ server_version = PQparameterStatus(pset.db, "server_version");
+ /* Otherwise fall back on pset.sversion */
+ if (!server_version)
+ {
+ formatPGVersionNumber(pset.sversion, true,
+ sverbuf, sizeof(sverbuf));
+ server_version = sverbuf;
+ }
+
+ printf(_("%s (%s, server %s)\n"),
+ pset.progname, PG_VERSION, server_version);
+ }
+ /* For version match, only print psql banner on startup. */
+ else if (in_startup)
+ printf("%s (%s)\n", pset.progname, PG_VERSION);
+
+ if (pset.sversion / 100 > client_ver / 100)
+ printf(_("WARNING: %s major version %s, server major version %s.\n"
+ " Some psql features might not work.\n"),
+ pset.progname,
+ formatPGVersionNumber(client_ver, false,
+ cverbuf, sizeof(cverbuf)),
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+
+#ifdef WIN32
+ if (in_startup)
+ checkWin32Codepage();
+#endif
+ printSSLInfo();
+ printGSSInfo();
+ }
+}
+
+
+/*
+ * printSSLInfo
+ *
+ * Prints information about the current SSL connection, if SSL is in use
+ */
+static void
+printSSLInfo(void)
+{
+ const char *protocol;
+ const char *cipher;
+ const char *bits;
+ const char *compression;
+
+ if (!PQsslInUse(pset.db))
+ return; /* no SSL */
+
+ protocol = PQsslAttribute(pset.db, "protocol");
+ cipher = PQsslAttribute(pset.db, "cipher");
+ bits = PQsslAttribute(pset.db, "key_bits");
+ compression = PQsslAttribute(pset.db, "compression");
+
+ printf(_("SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"),
+ protocol ? protocol : _("unknown"),
+ cipher ? cipher : _("unknown"),
+ bits ? bits : _("unknown"),
+ (compression && strcmp(compression, "off") != 0) ? _("on") : _("off"));
+}
+
+/*
+ * printGSSInfo
+ *
+ * Prints information about the current GSSAPI connection, if GSSAPI encryption is in use
+ */
+static void
+printGSSInfo(void)
+{
+ if (!PQgssEncInUse(pset.db))
+ return; /* no GSSAPI encryption in use */
+
+ printf(_("GSSAPI-encrypted connection\n"));
+}
+
+
+/*
+ * checkWin32Codepage
+ *
+ * Prints a warning when win32 console codepage differs from Windows codepage
+ */
+#ifdef WIN32
+static void
+checkWin32Codepage(void)
+{
+ unsigned int wincp,
+ concp;
+
+ wincp = GetACP();
+ concp = GetConsoleCP();
+ if (wincp != concp)
+ {
+ printf(_("WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+ " 8-bit characters might not work correctly. See psql reference\n"
+ " page \"Notes for Windows users\" for details.\n"),
+ concp, wincp);
+ }
+}
+#endif
+
+
+/*
+ * SyncVariables
+ *
+ * Make psql's internal variables agree with connection state upon
+ * establishing a new connection.
+ */
+void
+SyncVariables(void)
+{
+ char vbuf[32];
+ const char *server_version;
+
+ /* get stuff from connection */
+ pset.encoding = PQclientEncoding(pset.db);
+ pset.popt.topt.encoding = pset.encoding;
+ pset.sversion = PQserverVersion(pset.db);
+
+ SetVariable(pset.vars, "DBNAME", PQdb(pset.db));
+ SetVariable(pset.vars, "USER", PQuser(pset.db));
+ SetVariable(pset.vars, "HOST", PQhost(pset.db));
+ SetVariable(pset.vars, "PORT", PQport(pset.db));
+ SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding));
+
+ /* this bit should match connection_warnings(): */
+ /* Try to get full text form of version, might include "devel" etc */
+ server_version = PQparameterStatus(pset.db, "server_version");
+ /* Otherwise fall back on pset.sversion */
+ if (!server_version)
+ {
+ formatPGVersionNumber(pset.sversion, true, vbuf, sizeof(vbuf));
+ server_version = vbuf;
+ }
+ SetVariable(pset.vars, "SERVER_VERSION_NAME", server_version);
+
+ snprintf(vbuf, sizeof(vbuf), "%d", pset.sversion);
+ SetVariable(pset.vars, "SERVER_VERSION_NUM", vbuf);
+
+ /* send stuff to it, too */
+ PQsetErrorVerbosity(pset.db, pset.verbosity);
+ PQsetErrorContextVisibility(pset.db, pset.show_context);
+}
+
+/*
+ * UnsyncVariables
+ *
+ * Clear variables that should be not be set when there is no connection.
+ */
+void
+UnsyncVariables(void)
+{
+ SetVariable(pset.vars, "DBNAME", NULL);
+ SetVariable(pset.vars, "USER", NULL);
+ SetVariable(pset.vars, "HOST", NULL);
+ SetVariable(pset.vars, "PORT", NULL);
+ SetVariable(pset.vars, "ENCODING", NULL);
+ SetVariable(pset.vars, "SERVER_VERSION_NAME", NULL);
+ SetVariable(pset.vars, "SERVER_VERSION_NUM", NULL);
+}
+
+
+/*
+ * do_edit -- handler for \e
+ *
+ * If you do not specify a filename, the current query buffer will be copied
+ * into a temporary one.
+ */
+static bool
+editFile(const char *fname, int lineno)
+{
+ const char *editorName;
+ const char *editor_lineno_arg = NULL;
+ char *sys;
+ int result;
+
+ Assert(fname != NULL);
+
+ /* Find an editor to use */
+ editorName = getenv("PSQL_EDITOR");
+ if (!editorName)
+ editorName = getenv("EDITOR");
+ if (!editorName)
+ editorName = getenv("VISUAL");
+ if (!editorName)
+ editorName = DEFAULT_EDITOR;
+
+ /* Get line number argument, if we need it. */
+ if (lineno > 0)
+ {
+ editor_lineno_arg = getenv("PSQL_EDITOR_LINENUMBER_ARG");
+#ifdef DEFAULT_EDITOR_LINENUMBER_ARG
+ if (!editor_lineno_arg)
+ editor_lineno_arg = DEFAULT_EDITOR_LINENUMBER_ARG;
+#endif
+ if (!editor_lineno_arg)
+ {
+ pg_log_error("environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number");
+ return false;
+ }
+ }
+
+ /*
+ * On Unix the EDITOR value should *not* be quoted, since it might include
+ * switches, eg, EDITOR="pico -t"; it's up to the user to put quotes in it
+ * if necessary. But this policy is not very workable on Windows, due to
+ * severe brain damage in their command shell plus the fact that standard
+ * program paths include spaces.
+ */
+#ifndef WIN32
+ if (lineno > 0)
+ sys = psprintf("exec %s %s%d '%s'",
+ editorName, editor_lineno_arg, lineno, fname);
+ else
+ sys = psprintf("exec %s '%s'",
+ editorName, fname);
+#else
+ if (lineno > 0)
+ sys = psprintf("\"%s\" %s%d \"%s\"",
+ editorName, editor_lineno_arg, lineno, fname);
+ else
+ sys = psprintf("\"%s\" \"%s\"",
+ editorName, fname);
+#endif
+ result = system(sys);
+ if (result == -1)
+ pg_log_error("could not start editor \"%s\"", editorName);
+ else if (result == 127)
+ pg_log_error("could not start /bin/sh");
+ free(sys);
+
+ return result == 0;
+}
+
+
+/* call this one */
+static bool
+do_edit(const char *filename_arg, PQExpBuffer query_buf,
+ int lineno, bool *edited)
+{
+ char fnametmp[MAXPGPATH];
+ FILE *stream = NULL;
+ const char *fname;
+ bool error = false;
+ int fd;
+ struct stat before,
+ after;
+
+ if (filename_arg)
+ fname = filename_arg;
+ else
+ {
+ /* make a temp file to edit */
+#ifndef WIN32
+ const char *tmpdir = getenv("TMPDIR");
+
+ if (!tmpdir)
+ tmpdir = "/tmp";
+#else
+ char tmpdir[MAXPGPATH];
+ int ret;
+
+ ret = GetTempPath(MAXPGPATH, tmpdir);
+ if (ret == 0 || ret > MAXPGPATH)
+ {
+ pg_log_error("could not locate temporary directory: %s",
+ !ret ? strerror(errno) : "");
+ return false;
+ }
+#endif
+
+ /*
+ * No canonicalize_path() here. EDIT.EXE run from CMD.EXE prepends the
+ * current directory to the supplied path unless we use only
+ * backslashes, so we do that.
+ */
+#ifndef WIN32
+ snprintf(fnametmp, sizeof(fnametmp), "%s%spsql.edit.%d.sql", tmpdir,
+ "/", (int) getpid());
+#else
+ snprintf(fnametmp, sizeof(fnametmp), "%s%spsql.edit.%d.sql", tmpdir,
+ "" /* trailing separator already present */ , (int) getpid());
+#endif
+
+ fname = (const char *) fnametmp;
+
+ fd = open(fname, O_WRONLY | O_CREAT | O_EXCL, 0600);
+ if (fd != -1)
+ stream = fdopen(fd, "w");
+
+ if (fd == -1 || !stream)
+ {
+ pg_log_error("could not open temporary file \"%s\": %m", fname);
+ error = true;
+ }
+ else
+ {
+ unsigned int ql = query_buf->len;
+
+ /* force newline-termination of what we send to editor */
+ if (ql > 0 && query_buf->data[ql - 1] != '\n')
+ {
+ appendPQExpBufferChar(query_buf, '\n');
+ ql++;
+ }
+
+ if (fwrite(query_buf->data, 1, ql, stream) != ql)
+ {
+ pg_log_error("%s: %m", fname);
+
+ if (fclose(stream) != 0)
+ pg_log_error("%s: %m", fname);
+
+ if (remove(fname) != 0)
+ pg_log_error("%s: %m", fname);
+
+ error = true;
+ }
+ else if (fclose(stream) != 0)
+ {
+ pg_log_error("%s: %m", fname);
+ if (remove(fname) != 0)
+ pg_log_error("%s: %m", fname);
+ error = true;
+ }
+ else
+ {
+ struct utimbuf ut;
+
+ /*
+ * Try to set the file modification time of the temporary file
+ * a few seconds in the past. Otherwise, the low granularity
+ * (one second, or even worse on some filesystems) that we can
+ * portably measure with stat(2) could lead us to not
+ * recognize a modification, if the user typed very quickly.
+ *
+ * This is a rather unlikely race condition, so don't error
+ * out if the utime(2) call fails --- that would make the cure
+ * worse than the disease.
+ */
+ ut.modtime = ut.actime = time(NULL) - 2;
+ (void) utime(fname, &ut);
+ }
+ }
+ }
+
+ if (!error && stat(fname, &before) != 0)
+ {
+ pg_log_error("%s: %m", fname);
+ error = true;
+ }
+
+ /* call editor */
+ if (!error)
+ error = !editFile(fname, lineno);
+
+ if (!error && stat(fname, &after) != 0)
+ {
+ pg_log_error("%s: %m", fname);
+ error = true;
+ }
+
+ /* file was edited if the size or modification time has changed */
+ if (!error &&
+ (before.st_size != after.st_size ||
+ before.st_mtime != after.st_mtime))
+ {
+ stream = fopen(fname, PG_BINARY_R);
+ if (!stream)
+ {
+ pg_log_error("%s: %m", fname);
+ error = true;
+ }
+ else
+ {
+ /* read file back into query_buf */
+ char line[1024];
+
+ resetPQExpBuffer(query_buf);
+ while (fgets(line, sizeof(line), stream) != NULL)
+ appendPQExpBufferStr(query_buf, line);
+
+ if (ferror(stream))
+ {
+ pg_log_error("%s: %m", fname);
+ error = true;
+ }
+ else if (edited)
+ {
+ *edited = true;
+ }
+
+ fclose(stream);
+ }
+ }
+
+ /* remove temp file */
+ if (!filename_arg)
+ {
+ if (remove(fname) == -1)
+ {
+ pg_log_error("%s: %m", fname);
+ error = true;
+ }
+ }
+
+ return !error;
+}
+
+
+
+/*
+ * process_file
+ *
+ * Reads commands from filename and passes them to the main processing loop.
+ * Handler for \i and \ir, but can be used for other things as well. Returns
+ * MainLoop() error code.
+ *
+ * If use_relative_path is true and filename is not an absolute path, then open
+ * the file from where the currently processed file (if any) is located.
+ */
+int
+process_file(char *filename, bool use_relative_path)
+{
+ FILE *fd;
+ int result;
+ char *oldfilename;
+ char relpath[MAXPGPATH];
+
+ if (!filename)
+ {
+ fd = stdin;
+ filename = NULL;
+ }
+ else if (strcmp(filename, "-") != 0)
+ {
+ canonicalize_path(filename);
+
+ /*
+ * If we were asked to resolve the pathname relative to the location
+ * of the currently executing script, and there is one, and this is a
+ * relative pathname, then prepend all but the last pathname component
+ * of the current script to this pathname.
+ */
+ if (use_relative_path && pset.inputfile &&
+ !is_absolute_path(filename) && !has_drive_prefix(filename))
+ {
+ strlcpy(relpath, pset.inputfile, sizeof(relpath));
+ get_parent_directory(relpath);
+ join_path_components(relpath, relpath, filename);
+ canonicalize_path(relpath);
+
+ filename = relpath;
+ }
+
+ fd = fopen(filename, PG_BINARY_R);
+
+ if (!fd)
+ {
+ pg_log_error("%s: %m", filename);
+ return EXIT_FAILURE;
+ }
+ }
+ else
+ {
+ fd = stdin;
+ filename = "<stdin>"; /* for future error messages */
+ }
+
+ oldfilename = pset.inputfile;
+ pset.inputfile = filename;
+
+ pg_logging_config(pset.inputfile ? 0 : PG_LOG_FLAG_TERSE);
+
+ result = MainLoop(fd);
+
+ if (fd != stdin)
+ fclose(fd);
+
+ pset.inputfile = oldfilename;
+
+ pg_logging_config(pset.inputfile ? 0 : PG_LOG_FLAG_TERSE);
+
+ return result;
+}
+
+
+
+static const char *
+_align2string(enum printFormat in)
+{
+ switch (in)
+ {
+ case PRINT_NOTHING:
+ return "nothing";
+ break;
+ case PRINT_ALIGNED:
+ return "aligned";
+ break;
+ case PRINT_ASCIIDOC:
+ return "asciidoc";
+ break;
+ case PRINT_CSV:
+ return "csv";
+ break;
+ case PRINT_HTML:
+ return "html";
+ break;
+ case PRINT_LATEX:
+ return "latex";
+ break;
+ case PRINT_LATEX_LONGTABLE:
+ return "latex-longtable";
+ break;
+ case PRINT_TROFF_MS:
+ return "troff-ms";
+ break;
+ case PRINT_UNALIGNED:
+ return "unaligned";
+ break;
+ case PRINT_WRAPPED:
+ return "wrapped";
+ break;
+ }
+ return "unknown";
+}
+
+/*
+ * Parse entered Unicode linestyle. If ok, update *linestyle and return
+ * true, else return false.
+ */
+static bool
+set_unicode_line_style(const char *value, size_t vallen,
+ unicode_linestyle *linestyle)
+{
+ if (pg_strncasecmp("single", value, vallen) == 0)
+ *linestyle = UNICODE_LINESTYLE_SINGLE;
+ else if (pg_strncasecmp("double", value, vallen) == 0)
+ *linestyle = UNICODE_LINESTYLE_DOUBLE;
+ else
+ return false;
+ return true;
+}
+
+static const char *
+_unicode_linestyle2string(int linestyle)
+{
+ switch (linestyle)
+ {
+ case UNICODE_LINESTYLE_SINGLE:
+ return "single";
+ break;
+ case UNICODE_LINESTYLE_DOUBLE:
+ return "double";
+ break;
+ }
+ return "unknown";
+}
+
+/*
+ * do_pset
+ *
+ * Performs the assignment "param = value", where value could be NULL;
+ * for some params that has an effect such as inversion, for others
+ * it does nothing.
+ *
+ * Adjusts the state of the formatting options at *popt. (In practice that
+ * is always pset.popt, but maybe someday it could be different.)
+ *
+ * If successful and quiet is false, then invokes printPsetInfo() to report
+ * the change.
+ *
+ * Returns true if successful, else false (eg for invalid param or value).
+ */
+bool
+do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
+{
+ size_t vallen = 0;
+
+ Assert(param != NULL);
+
+ if (value)
+ vallen = strlen(value);
+
+ /* set format */
+ if (strcmp(param, "format") == 0)
+ {
+ static const struct fmt
+ {
+ const char *name;
+ enum printFormat number;
+ } formats[] =
+ {
+ /* remember to update error message below when adding more */
+ {"aligned", PRINT_ALIGNED},
+ {"asciidoc", PRINT_ASCIIDOC},
+ {"csv", PRINT_CSV},
+ {"html", PRINT_HTML},
+ {"latex", PRINT_LATEX},
+ {"troff-ms", PRINT_TROFF_MS},
+ {"unaligned", PRINT_UNALIGNED},
+ {"wrapped", PRINT_WRAPPED}
+ };
+
+ if (!value)
+ ;
+ else
+ {
+ int match_pos = -1;
+
+ for (int i = 0; i < lengthof(formats); i++)
+ {
+ if (pg_strncasecmp(formats[i].name, value, vallen) == 0)
+ {
+ if (match_pos < 0)
+ match_pos = i;
+ else
+ {
+ pg_log_error("\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"",
+ value,
+ formats[match_pos].name, formats[i].name);
+ return false;
+ }
+ }
+ }
+ if (match_pos >= 0)
+ popt->topt.format = formats[match_pos].number;
+ else if (pg_strncasecmp("latex-longtable", value, vallen) == 0)
+ {
+ /*
+ * We must treat latex-longtable specially because latex is a
+ * prefix of it; if both were in the table above, we'd think
+ * "latex" is ambiguous.
+ */
+ popt->topt.format = PRINT_LATEX_LONGTABLE;
+ }
+ else
+ {
+ pg_log_error("\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped");
+ return false;
+ }
+ }
+ }
+
+ /* set table line style */
+ else if (strcmp(param, "linestyle") == 0)
+ {
+ if (!value)
+ ;
+ else if (pg_strncasecmp("ascii", value, vallen) == 0)
+ popt->topt.line_style = &pg_asciiformat;
+ else if (pg_strncasecmp("old-ascii", value, vallen) == 0)
+ popt->topt.line_style = &pg_asciiformat_old;
+ else if (pg_strncasecmp("unicode", value, vallen) == 0)
+ popt->topt.line_style = &pg_utf8format;
+ else
+ {
+ pg_log_error("\\pset: allowed line styles are ascii, old-ascii, unicode");
+ return false;
+ }
+ }
+
+ /* set unicode border line style */
+ else if (strcmp(param, "unicode_border_linestyle") == 0)
+ {
+ if (!value)
+ ;
+ else if (set_unicode_line_style(value, vallen,
+ &popt->topt.unicode_border_linestyle))
+ refresh_utf8format(&(popt->topt));
+ else
+ {
+ pg_log_error("\\pset: allowed Unicode border line styles are single, double");
+ return false;
+ }
+ }
+
+ /* set unicode column line style */
+ else if (strcmp(param, "unicode_column_linestyle") == 0)
+ {
+ if (!value)
+ ;
+ else if (set_unicode_line_style(value, vallen,
+ &popt->topt.unicode_column_linestyle))
+ refresh_utf8format(&(popt->topt));
+ else
+ {
+ pg_log_error("\\pset: allowed Unicode column line styles are single, double");
+ return false;
+ }
+ }
+
+ /* set unicode header line style */
+ else if (strcmp(param, "unicode_header_linestyle") == 0)
+ {
+ if (!value)
+ ;
+ else if (set_unicode_line_style(value, vallen,
+ &popt->topt.unicode_header_linestyle))
+ refresh_utf8format(&(popt->topt));
+ else
+ {
+ pg_log_error("\\pset: allowed Unicode header line styles are single, double");
+ return false;
+ }
+ }
+
+ /* set border style/width */
+ else if (strcmp(param, "border") == 0)
+ {
+ if (value)
+ popt->topt.border = atoi(value);
+ }
+
+ /* set expanded/vertical mode */
+ else if (strcmp(param, "x") == 0 ||
+ strcmp(param, "expanded") == 0 ||
+ strcmp(param, "vertical") == 0)
+ {
+ if (value && pg_strcasecmp(value, "auto") == 0)
+ popt->topt.expanded = 2;
+ else if (value)
+ {
+ bool on_off;
+
+ if (ParseVariableBool(value, NULL, &on_off))
+ popt->topt.expanded = on_off ? 1 : 0;
+ else
+ {
+ PsqlVarEnumError(param, value, "on, off, auto");
+ return false;
+ }
+ }
+ else
+ popt->topt.expanded = !popt->topt.expanded;
+ }
+
+ /* field separator for CSV format */
+ else if (strcmp(param, "csv_fieldsep") == 0)
+ {
+ if (value)
+ {
+ /* CSV separator has to be a one-byte character */
+ if (strlen(value) != 1)
+ {
+ pg_log_error("\\pset: csv_fieldsep must be a single one-byte character");
+ return false;
+ }
+ if (value[0] == '"' || value[0] == '\n' || value[0] == '\r')
+ {
+ pg_log_error("\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return");
+ return false;
+ }
+ popt->topt.csvFieldSep[0] = value[0];
+ }
+ }
+
+ /* locale-aware numeric output */
+ else if (strcmp(param, "numericlocale") == 0)
+ {
+ if (value)
+ return ParseVariableBool(value, param, &popt->topt.numericLocale);
+ else
+ popt->topt.numericLocale = !popt->topt.numericLocale;
+ }
+
+ /* null display */
+ else if (strcmp(param, "null") == 0)
+ {
+ if (value)
+ {
+ free(popt->nullPrint);
+ popt->nullPrint = pg_strdup(value);
+ }
+ }
+
+ /* field separator for unaligned text */
+ else if (strcmp(param, "fieldsep") == 0)
+ {
+ if (value)
+ {
+ free(popt->topt.fieldSep.separator);
+ popt->topt.fieldSep.separator = pg_strdup(value);
+ popt->topt.fieldSep.separator_zero = false;
+ }
+ }
+
+ else if (strcmp(param, "fieldsep_zero") == 0)
+ {
+ free(popt->topt.fieldSep.separator);
+ popt->topt.fieldSep.separator = NULL;
+ popt->topt.fieldSep.separator_zero = true;
+ }
+
+ /* record separator for unaligned text */
+ else if (strcmp(param, "recordsep") == 0)
+ {
+ if (value)
+ {
+ free(popt->topt.recordSep.separator);
+ popt->topt.recordSep.separator = pg_strdup(value);
+ popt->topt.recordSep.separator_zero = false;
+ }
+ }
+
+ else if (strcmp(param, "recordsep_zero") == 0)
+ {
+ free(popt->topt.recordSep.separator);
+ popt->topt.recordSep.separator = NULL;
+ popt->topt.recordSep.separator_zero = true;
+ }
+
+ /* toggle between full and tuples-only format */
+ else if (strcmp(param, "t") == 0 || strcmp(param, "tuples_only") == 0)
+ {
+ if (value)
+ return ParseVariableBool(value, param, &popt->topt.tuples_only);
+ else
+ popt->topt.tuples_only = !popt->topt.tuples_only;
+ }
+
+ /* set title override */
+ else if (strcmp(param, "C") == 0 || strcmp(param, "title") == 0)
+ {
+ free(popt->title);
+ if (!value)
+ popt->title = NULL;
+ else
+ popt->title = pg_strdup(value);
+ }
+
+ /* set HTML table tag options */
+ else if (strcmp(param, "T") == 0 || strcmp(param, "tableattr") == 0)
+ {
+ free(popt->topt.tableAttr);
+ if (!value)
+ popt->topt.tableAttr = NULL;
+ else
+ popt->topt.tableAttr = pg_strdup(value);
+ }
+
+ /* toggle use of pager */
+ else if (strcmp(param, "pager") == 0)
+ {
+ if (value && pg_strcasecmp(value, "always") == 0)
+ popt->topt.pager = 2;
+ else if (value)
+ {
+ bool on_off;
+
+ if (!ParseVariableBool(value, NULL, &on_off))
+ {
+ PsqlVarEnumError(param, value, "on, off, always");
+ return false;
+ }
+ popt->topt.pager = on_off ? 1 : 0;
+ }
+ else if (popt->topt.pager == 1)
+ popt->topt.pager = 0;
+ else
+ popt->topt.pager = 1;
+ }
+
+ /* set minimum lines for pager use */
+ else if (strcmp(param, "pager_min_lines") == 0)
+ {
+ if (value)
+ popt->topt.pager_min_lines = atoi(value);
+ }
+
+ /* disable "(x rows)" footer */
+ else if (strcmp(param, "footer") == 0)
+ {
+ if (value)
+ return ParseVariableBool(value, param, &popt->topt.default_footer);
+ else
+ popt->topt.default_footer = !popt->topt.default_footer;
+ }
+
+ /* set border style/width */
+ else if (strcmp(param, "columns") == 0)
+ {
+ if (value)
+ popt->topt.columns = atoi(value);
+ }
+ else
+ {
+ pg_log_error("\\pset: unknown option: %s", param);
+ return false;
+ }
+
+ if (!quiet)
+ printPsetInfo(param, &pset.popt);
+
+ return true;
+}
+
+/*
+ * printPsetInfo: print the state of the "param" formatting parameter in popt.
+ */
+static bool
+printPsetInfo(const char *param, printQueryOpt *popt)
+{
+ Assert(param != NULL);
+
+ /* show border style/width */
+ if (strcmp(param, "border") == 0)
+ printf(_("Border style is %d.\n"), popt->topt.border);
+
+ /* show the target width for the wrapped format */
+ else if (strcmp(param, "columns") == 0)
+ {
+ if (!popt->topt.columns)
+ printf(_("Target width is unset.\n"));
+ else
+ printf(_("Target width is %d.\n"), popt->topt.columns);
+ }
+
+ /* show expanded/vertical mode */
+ else if (strcmp(param, "x") == 0 || strcmp(param, "expanded") == 0 || strcmp(param, "vertical") == 0)
+ {
+ if (popt->topt.expanded == 1)
+ printf(_("Expanded display is on.\n"));
+ else if (popt->topt.expanded == 2)
+ printf(_("Expanded display is used automatically.\n"));
+ else
+ printf(_("Expanded display is off.\n"));
+ }
+
+ /* show field separator for CSV format */
+ else if (strcmp(param, "csv_fieldsep") == 0)
+ {
+ printf(_("Field separator for CSV is \"%s\".\n"),
+ popt->topt.csvFieldSep);
+ }
+
+ /* show field separator for unaligned text */
+ else if (strcmp(param, "fieldsep") == 0)
+ {
+ if (popt->topt.fieldSep.separator_zero)
+ printf(_("Field separator is zero byte.\n"));
+ else
+ printf(_("Field separator is \"%s\".\n"),
+ popt->topt.fieldSep.separator);
+ }
+
+ else if (strcmp(param, "fieldsep_zero") == 0)
+ {
+ printf(_("Field separator is zero byte.\n"));
+ }
+
+ /* show disable "(x rows)" footer */
+ else if (strcmp(param, "footer") == 0)
+ {
+ if (popt->topt.default_footer)
+ printf(_("Default footer is on.\n"));
+ else
+ printf(_("Default footer is off.\n"));
+ }
+
+ /* show format */
+ else if (strcmp(param, "format") == 0)
+ {
+ printf(_("Output format is %s.\n"), _align2string(popt->topt.format));
+ }
+
+ /* show table line style */
+ else if (strcmp(param, "linestyle") == 0)
+ {
+ printf(_("Line style is %s.\n"),
+ get_line_style(&popt->topt)->name);
+ }
+
+ /* show null display */
+ else if (strcmp(param, "null") == 0)
+ {
+ printf(_("Null display is \"%s\".\n"),
+ popt->nullPrint ? popt->nullPrint : "");
+ }
+
+ /* show locale-aware numeric output */
+ else if (strcmp(param, "numericlocale") == 0)
+ {
+ if (popt->topt.numericLocale)
+ printf(_("Locale-adjusted numeric output is on.\n"));
+ else
+ printf(_("Locale-adjusted numeric output is off.\n"));
+ }
+
+ /* show toggle use of pager */
+ else if (strcmp(param, "pager") == 0)
+ {
+ if (popt->topt.pager == 1)
+ printf(_("Pager is used for long output.\n"));
+ else if (popt->topt.pager == 2)
+ printf(_("Pager is always used.\n"));
+ else
+ printf(_("Pager usage is off.\n"));
+ }
+
+ /* show minimum lines for pager use */
+ else if (strcmp(param, "pager_min_lines") == 0)
+ {
+ printf(ngettext("Pager won't be used for less than %d line.\n",
+ "Pager won't be used for less than %d lines.\n",
+ popt->topt.pager_min_lines),
+ popt->topt.pager_min_lines);
+ }
+
+ /* show record separator for unaligned text */
+ else if (strcmp(param, "recordsep") == 0)
+ {
+ if (popt->topt.recordSep.separator_zero)
+ printf(_("Record separator is zero byte.\n"));
+ else if (strcmp(popt->topt.recordSep.separator, "\n") == 0)
+ printf(_("Record separator is <newline>.\n"));
+ else
+ printf(_("Record separator is \"%s\".\n"),
+ popt->topt.recordSep.separator);
+ }
+
+ else if (strcmp(param, "recordsep_zero") == 0)
+ {
+ printf(_("Record separator is zero byte.\n"));
+ }
+
+ /* show HTML table tag options */
+ else if (strcmp(param, "T") == 0 || strcmp(param, "tableattr") == 0)
+ {
+ if (popt->topt.tableAttr)
+ printf(_("Table attributes are \"%s\".\n"),
+ popt->topt.tableAttr);
+ else
+ printf(_("Table attributes unset.\n"));
+ }
+
+ /* show title override */
+ else if (strcmp(param, "C") == 0 || strcmp(param, "title") == 0)
+ {
+ if (popt->title)
+ printf(_("Title is \"%s\".\n"), popt->title);
+ else
+ printf(_("Title is unset.\n"));
+ }
+
+ /* show toggle between full and tuples-only format */
+ else if (strcmp(param, "t") == 0 || strcmp(param, "tuples_only") == 0)
+ {
+ if (popt->topt.tuples_only)
+ printf(_("Tuples only is on.\n"));
+ else
+ printf(_("Tuples only is off.\n"));
+ }
+
+ /* Unicode style formatting */
+ else if (strcmp(param, "unicode_border_linestyle") == 0)
+ {
+ printf(_("Unicode border line style is \"%s\".\n"),
+ _unicode_linestyle2string(popt->topt.unicode_border_linestyle));
+ }
+
+ else if (strcmp(param, "unicode_column_linestyle") == 0)
+ {
+ printf(_("Unicode column line style is \"%s\".\n"),
+ _unicode_linestyle2string(popt->topt.unicode_column_linestyle));
+ }
+
+ else if (strcmp(param, "unicode_header_linestyle") == 0)
+ {
+ printf(_("Unicode header line style is \"%s\".\n"),
+ _unicode_linestyle2string(popt->topt.unicode_header_linestyle));
+ }
+
+ else
+ {
+ pg_log_error("\\pset: unknown option: %s", param);
+ return false;
+ }
+
+ return true;
+}
+
+/*
+ * savePsetInfo: make a malloc'd copy of the data in *popt.
+ *
+ * Possibly this should be somewhere else, but it's a bit specific to psql.
+ */
+printQueryOpt *
+savePsetInfo(const printQueryOpt *popt)
+{
+ printQueryOpt *save;
+
+ save = (printQueryOpt *) pg_malloc(sizeof(printQueryOpt));
+
+ /* Flat-copy all the scalar fields, then duplicate sub-structures. */
+ memcpy(save, popt, sizeof(printQueryOpt));
+
+ /* topt.line_style points to const data that need not be duplicated */
+ if (popt->topt.fieldSep.separator)
+ save->topt.fieldSep.separator = pg_strdup(popt->topt.fieldSep.separator);
+ if (popt->topt.recordSep.separator)
+ save->topt.recordSep.separator = pg_strdup(popt->topt.recordSep.separator);
+ if (popt->topt.tableAttr)
+ save->topt.tableAttr = pg_strdup(popt->topt.tableAttr);
+ if (popt->nullPrint)
+ save->nullPrint = pg_strdup(popt->nullPrint);
+ if (popt->title)
+ save->title = pg_strdup(popt->title);
+
+ /*
+ * footers and translate_columns are never set in psql's print settings,
+ * so we needn't write code to duplicate them.
+ */
+ Assert(popt->footers == NULL);
+ Assert(popt->translate_columns == NULL);
+
+ return save;
+}
+
+/*
+ * restorePsetInfo: restore *popt from the previously-saved copy *save,
+ * then free *save.
+ */
+void
+restorePsetInfo(printQueryOpt *popt, printQueryOpt *save)
+{
+ /* Free all the old data we're about to overwrite the pointers to. */
+
+ /* topt.line_style points to const data that need not be duplicated */
+ if (popt->topt.fieldSep.separator)
+ free(popt->topt.fieldSep.separator);
+ if (popt->topt.recordSep.separator)
+ free(popt->topt.recordSep.separator);
+ if (popt->topt.tableAttr)
+ free(popt->topt.tableAttr);
+ if (popt->nullPrint)
+ free(popt->nullPrint);
+ if (popt->title)
+ free(popt->title);
+
+ /*
+ * footers and translate_columns are never set in psql's print settings,
+ * so we needn't write code to duplicate them.
+ */
+ Assert(popt->footers == NULL);
+ Assert(popt->translate_columns == NULL);
+
+ /* Now we may flat-copy all the fields, including pointers. */
+ memcpy(popt, save, sizeof(printQueryOpt));
+
+ /* Lastly, free "save" ... but its sub-structures now belong to popt. */
+ free(save);
+}
+
+static const char *
+pset_bool_string(bool val)
+{
+ return val ? "on" : "off";
+}
+
+
+static char *
+pset_quoted_string(const char *str)
+{
+ char *ret = pg_malloc(strlen(str) * 2 + 3);
+ char *r = ret;
+
+ *r++ = '\'';
+
+ for (; *str; str++)
+ {
+ if (*str == '\n')
+ {
+ *r++ = '\\';
+ *r++ = 'n';
+ }
+ else if (*str == '\'')
+ {
+ *r++ = '\\';
+ *r++ = '\'';
+ }
+ else
+ *r++ = *str;
+ }
+
+ *r++ = '\'';
+ *r = '\0';
+
+ return ret;
+}
+
+
+/*
+ * Return a malloc'ed string for the \pset value.
+ *
+ * Note that for some string parameters, print.c distinguishes between unset
+ * and empty string, but for others it doesn't. This function should produce
+ * output that produces the correct setting when fed back into \pset.
+ */
+static char *
+pset_value_string(const char *param, printQueryOpt *popt)
+{
+ Assert(param != NULL);
+
+ if (strcmp(param, "border") == 0)
+ return psprintf("%d", popt->topt.border);
+ else if (strcmp(param, "columns") == 0)
+ return psprintf("%d", popt->topt.columns);
+ else if (strcmp(param, "csv_fieldsep") == 0)
+ return pset_quoted_string(popt->topt.csvFieldSep);
+ else if (strcmp(param, "expanded") == 0)
+ return pstrdup(popt->topt.expanded == 2
+ ? "auto"
+ : pset_bool_string(popt->topt.expanded));
+ else if (strcmp(param, "fieldsep") == 0)
+ return pset_quoted_string(popt->topt.fieldSep.separator
+ ? popt->topt.fieldSep.separator
+ : "");
+ else if (strcmp(param, "fieldsep_zero") == 0)
+ return pstrdup(pset_bool_string(popt->topt.fieldSep.separator_zero));
+ else if (strcmp(param, "footer") == 0)
+ return pstrdup(pset_bool_string(popt->topt.default_footer));
+ else if (strcmp(param, "format") == 0)
+ return psprintf("%s", _align2string(popt->topt.format));
+ else if (strcmp(param, "linestyle") == 0)
+ return psprintf("%s", get_line_style(&popt->topt)->name);
+ else if (strcmp(param, "null") == 0)
+ return pset_quoted_string(popt->nullPrint
+ ? popt->nullPrint
+ : "");
+ else if (strcmp(param, "numericlocale") == 0)
+ return pstrdup(pset_bool_string(popt->topt.numericLocale));
+ else if (strcmp(param, "pager") == 0)
+ return psprintf("%d", popt->topt.pager);
+ else if (strcmp(param, "pager_min_lines") == 0)
+ return psprintf("%d", popt->topt.pager_min_lines);
+ else if (strcmp(param, "recordsep") == 0)
+ return pset_quoted_string(popt->topt.recordSep.separator
+ ? popt->topt.recordSep.separator
+ : "");
+ else if (strcmp(param, "recordsep_zero") == 0)
+ return pstrdup(pset_bool_string(popt->topt.recordSep.separator_zero));
+ else if (strcmp(param, "tableattr") == 0)
+ return popt->topt.tableAttr ? pset_quoted_string(popt->topt.tableAttr) : pstrdup("");
+ else if (strcmp(param, "title") == 0)
+ return popt->title ? pset_quoted_string(popt->title) : pstrdup("");
+ else if (strcmp(param, "tuples_only") == 0)
+ return pstrdup(pset_bool_string(popt->topt.tuples_only));
+ else if (strcmp(param, "unicode_border_linestyle") == 0)
+ return pstrdup(_unicode_linestyle2string(popt->topt.unicode_border_linestyle));
+ else if (strcmp(param, "unicode_column_linestyle") == 0)
+ return pstrdup(_unicode_linestyle2string(popt->topt.unicode_column_linestyle));
+ else if (strcmp(param, "unicode_header_linestyle") == 0)
+ return pstrdup(_unicode_linestyle2string(popt->topt.unicode_header_linestyle));
+ else
+ return pstrdup("ERROR");
+}
+
+
+
+#ifndef WIN32
+#define DEFAULT_SHELL "/bin/sh"
+#else
+/*
+ * CMD.EXE is in different places in different Win32 releases so we
+ * have to rely on the path to find it.
+ */
+#define DEFAULT_SHELL "cmd.exe"
+#endif
+
+static bool
+do_shell(const char *command)
+{
+ int result;
+
+ if (!command)
+ {
+ char *sys;
+ const char *shellName;
+
+ shellName = getenv("SHELL");
+#ifdef WIN32
+ if (shellName == NULL)
+ shellName = getenv("COMSPEC");
+#endif
+ if (shellName == NULL)
+ shellName = DEFAULT_SHELL;
+
+ /* See EDITOR handling comment for an explanation */
+#ifndef WIN32
+ sys = psprintf("exec %s", shellName);
+#else
+ sys = psprintf("\"%s\"", shellName);
+#endif
+ result = system(sys);
+ free(sys);
+ }
+ else
+ result = system(command);
+
+ if (result == 127 || result == -1)
+ {
+ pg_log_error("\\!: failed");
+ return false;
+ }
+ return true;
+}
+
+/*
+ * do_watch -- handler for \watch
+ *
+ * We break this out of exec_command to avoid having to plaster "volatile"
+ * onto a bunch of exec_command's variables to silence stupider compilers.
+ */
+static bool
+do_watch(PQExpBuffer query_buf, double sleep)
+{
+ long sleep_ms = (long) (sleep * 1000);
+ printQueryOpt myopt = pset.popt;
+ const char *strftime_fmt;
+ const char *user_title;
+ char *title;
+ int title_len;
+ int res = 0;
+
+ if (!query_buf || query_buf->len <= 0)
+ {
+ pg_log_error("\\watch cannot be used with an empty query");
+ return false;
+ }
+
+ /*
+ * Choose format for timestamps. We might eventually make this a \pset
+ * option. In the meantime, using a variable for the format suppresses
+ * overly-anal-retentive gcc warnings about %c being Y2K sensitive.
+ */
+ strftime_fmt = "%c";
+
+ /*
+ * Set up rendering options, in particular, disable the pager, because
+ * nobody wants to be prompted while watching the output of 'watch'.
+ */
+ myopt.topt.pager = 0;
+
+ /*
+ * If there's a title in the user configuration, make sure we have room
+ * for it in the title buffer. Allow 128 bytes for the timestamp plus 128
+ * bytes for the rest.
+ */
+ user_title = myopt.title;
+ title_len = (user_title ? strlen(user_title) : 0) + 256;
+ title = pg_malloc(title_len);
+
+ for (;;)
+ {
+ time_t timer;
+ char timebuf[128];
+ long i;
+
+ /*
+ * Prepare title for output. Note that we intentionally include a
+ * newline at the end of the title; this is somewhat historical but it
+ * makes for reasonably nicely formatted output in simple cases.
+ */
+ timer = time(NULL);
+ strftime(timebuf, sizeof(timebuf), strftime_fmt, localtime(&timer));
+
+ if (user_title)
+ snprintf(title, title_len, _("%s\t%s (every %gs)\n"),
+ user_title, timebuf, sleep);
+ else
+ snprintf(title, title_len, _("%s (every %gs)\n"),
+ timebuf, sleep);
+ myopt.title = title;
+
+ /* Run the query and print out the results */
+ res = PSQLexecWatch(query_buf->data, &myopt);
+
+ /*
+ * PSQLexecWatch handles the case where we can no longer repeat the
+ * query, and returns 0 or -1.
+ */
+ if (res <= 0)
+ break;
+
+ /*
+ * Set up cancellation of 'watch' via SIGINT. We redo this each time
+ * through the loop since it's conceivable something inside
+ * PSQLexecWatch could change sigint_interrupt_jmp.
+ */
+ if (sigsetjmp(sigint_interrupt_jmp, 1) != 0)
+ break;
+
+ /*
+ * Enable 'watch' cancellations and wait a while before running the
+ * query again. Break the sleep into short intervals (at most 1s)
+ * since pg_usleep isn't interruptible on some platforms.
+ */
+ sigint_interrupt_enabled = true;
+ i = sleep_ms;
+ while (i > 0)
+ {
+ long s = Min(i, 1000L);
+
+ pg_usleep(s * 1000L);
+ if (cancel_pressed)
+ break;
+ i -= s;
+ }
+ sigint_interrupt_enabled = false;
+ }
+
+ pg_free(title);
+ return (res >= 0);
+}
+
+/*
+ * a little code borrowed from PSQLexec() to manage ECHO_HIDDEN output.
+ * returns true unless we have ECHO_HIDDEN_NOEXEC.
+ */
+static bool
+echo_hidden_command(const char *query)
+{
+ if (pset.echo_hidden != PSQL_ECHO_HIDDEN_OFF)
+ {
+ printf(_("********* QUERY **********\n"
+ "%s\n"
+ "**************************\n\n"), query);
+ fflush(stdout);
+ if (pset.logfile)
+ {
+ fprintf(pset.logfile,
+ _("********* QUERY **********\n"
+ "%s\n"
+ "**************************\n\n"), query);
+ fflush(pset.logfile);
+ }
+
+ if (pset.echo_hidden == PSQL_ECHO_HIDDEN_NOEXEC)
+ return false;
+ }
+ return true;
+}
+
+/*
+ * Look up the object identified by obj_type and desc. If successful,
+ * store its OID in *obj_oid and return true, else return false.
+ *
+ * Note that we'll fail if the object doesn't exist OR if there are multiple
+ * matching candidates OR if there's something syntactically wrong with the
+ * object description; unfortunately it can be hard to tell the difference.
+ */
+static bool
+lookup_object_oid(EditableObjectType obj_type, const char *desc,
+ Oid *obj_oid)
+{
+ bool result = true;
+ PQExpBuffer query = createPQExpBuffer();
+ PGresult *res;
+
+ switch (obj_type)
+ {
+ case EditableFunction:
+
+ /*
+ * We have a function description, e.g. "x" or "x(int)". Issue a
+ * query to retrieve the function's OID using a cast to regproc or
+ * regprocedure (as appropriate).
+ */
+ appendPQExpBufferStr(query, "SELECT ");
+ appendStringLiteralConn(query, desc, pset.db);
+ appendPQExpBuffer(query, "::pg_catalog.%s::pg_catalog.oid",
+ strchr(desc, '(') ? "regprocedure" : "regproc");
+ break;
+
+ case EditableView:
+
+ /*
+ * Convert view name (possibly schema-qualified) to OID. Note:
+ * this code doesn't check if the relation is actually a view.
+ * We'll detect that in get_create_object_cmd().
+ */
+ appendPQExpBufferStr(query, "SELECT ");
+ appendStringLiteralConn(query, desc, pset.db);
+ appendPQExpBufferStr(query, "::pg_catalog.regclass::pg_catalog.oid");
+ break;
+ }
+
+ if (!echo_hidden_command(query->data))
+ {
+ destroyPQExpBuffer(query);
+ return false;
+ }
+ res = PQexec(pset.db, query->data);
+ if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1)
+ *obj_oid = atooid(PQgetvalue(res, 0, 0));
+ else
+ {
+ minimal_error_message(res);
+ result = false;
+ }
+
+ PQclear(res);
+ destroyPQExpBuffer(query);
+
+ return result;
+}
+
+/*
+ * Construct a "CREATE OR REPLACE ..." command that describes the specified
+ * database object. If successful, the result is stored in buf.
+ */
+static bool
+get_create_object_cmd(EditableObjectType obj_type, Oid oid,
+ PQExpBuffer buf)
+{
+ bool result = true;
+ PQExpBuffer query = createPQExpBuffer();
+ PGresult *res;
+
+ switch (obj_type)
+ {
+ case EditableFunction:
+ printfPQExpBuffer(query,
+ "SELECT pg_catalog.pg_get_functiondef(%u)",
+ oid);
+ break;
+
+ case EditableView:
+
+ /*
+ * pg_get_viewdef() just prints the query, so we must prepend
+ * CREATE for ourselves. We must fully qualify the view name to
+ * ensure the right view gets replaced. Also, check relation kind
+ * to be sure it's a view.
+ *
+ * Starting with 9.2, views may have reloptions (security_barrier)
+ * and from 9.4 onwards they may also have WITH [LOCAL|CASCADED]
+ * CHECK OPTION. These are not part of the view definition
+ * returned by pg_get_viewdef() and so need to be retrieved
+ * separately. Materialized views (introduced in 9.3) may have
+ * arbitrary storage parameter reloptions.
+ */
+ if (pset.sversion >= 90400)
+ {
+ printfPQExpBuffer(query,
+ "SELECT nspname, relname, relkind, "
+ "pg_catalog.pg_get_viewdef(c.oid, true), "
+ "pg_catalog.array_remove(pg_catalog.array_remove(c.reloptions,'check_option=local'),'check_option=cascaded') AS reloptions, "
+ "CASE WHEN 'check_option=local' = ANY (c.reloptions) THEN 'LOCAL'::text "
+ "WHEN 'check_option=cascaded' = ANY (c.reloptions) THEN 'CASCADED'::text ELSE NULL END AS checkoption "
+ "FROM pg_catalog.pg_class c "
+ "LEFT JOIN pg_catalog.pg_namespace n "
+ "ON c.relnamespace = n.oid WHERE c.oid = %u",
+ oid);
+ }
+ else if (pset.sversion >= 90200)
+ {
+ printfPQExpBuffer(query,
+ "SELECT nspname, relname, relkind, "
+ "pg_catalog.pg_get_viewdef(c.oid, true), "
+ "c.reloptions AS reloptions, "
+ "NULL AS checkoption "
+ "FROM pg_catalog.pg_class c "
+ "LEFT JOIN pg_catalog.pg_namespace n "
+ "ON c.relnamespace = n.oid WHERE c.oid = %u",
+ oid);
+ }
+ else
+ {
+ printfPQExpBuffer(query,
+ "SELECT nspname, relname, relkind, "
+ "pg_catalog.pg_get_viewdef(c.oid, true), "
+ "NULL AS reloptions, "
+ "NULL AS checkoption "
+ "FROM pg_catalog.pg_class c "
+ "LEFT JOIN pg_catalog.pg_namespace n "
+ "ON c.relnamespace = n.oid WHERE c.oid = %u",
+ oid);
+ }
+ break;
+ }
+
+ if (!echo_hidden_command(query->data))
+ {
+ destroyPQExpBuffer(query);
+ return false;
+ }
+ res = PQexec(pset.db, query->data);
+ if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1)
+ {
+ resetPQExpBuffer(buf);
+ switch (obj_type)
+ {
+ case EditableFunction:
+ appendPQExpBufferStr(buf, PQgetvalue(res, 0, 0));
+ break;
+
+ case EditableView:
+ {
+ char *nspname = PQgetvalue(res, 0, 0);
+ char *relname = PQgetvalue(res, 0, 1);
+ char *relkind = PQgetvalue(res, 0, 2);
+ char *viewdef = PQgetvalue(res, 0, 3);
+ char *reloptions = PQgetvalue(res, 0, 4);
+ char *checkoption = PQgetvalue(res, 0, 5);
+
+ /*
+ * If the backend ever supports CREATE OR REPLACE
+ * MATERIALIZED VIEW, allow that here; but as of today it
+ * does not, so editing a matview definition in this way
+ * is impossible.
+ */
+ switch (relkind[0])
+ {
+#ifdef NOT_USED
+ case RELKIND_MATVIEW:
+ appendPQExpBufferStr(buf, "CREATE OR REPLACE MATERIALIZED VIEW ");
+ break;
+#endif
+ case RELKIND_VIEW:
+ appendPQExpBufferStr(buf, "CREATE OR REPLACE VIEW ");
+ break;
+ default:
+ pg_log_error("\"%s.%s\" is not a view",
+ nspname, relname);
+ result = false;
+ break;
+ }
+ appendPQExpBuffer(buf, "%s.", fmtId(nspname));
+ appendPQExpBufferStr(buf, fmtId(relname));
+
+ /* reloptions, if not an empty array "{}" */
+ if (reloptions != NULL && strlen(reloptions) > 2)
+ {
+ appendPQExpBufferStr(buf, "\n WITH (");
+ if (!appendReloptionsArray(buf, reloptions, "",
+ pset.encoding,
+ standard_strings()))
+ {
+ pg_log_error("could not parse reloptions array");
+ result = false;
+ }
+ appendPQExpBufferChar(buf, ')');
+ }
+
+ /* View definition from pg_get_viewdef (a SELECT query) */
+ appendPQExpBuffer(buf, " AS\n%s", viewdef);
+
+ /* Get rid of the semicolon that pg_get_viewdef appends */
+ if (buf->len > 0 && buf->data[buf->len - 1] == ';')
+ buf->data[--(buf->len)] = '\0';
+
+ /* WITH [LOCAL|CASCADED] CHECK OPTION */
+ if (checkoption && checkoption[0] != '\0')
+ appendPQExpBuffer(buf, "\n WITH %s CHECK OPTION",
+ checkoption);
+ }
+ break;
+ }
+ /* Make sure result ends with a newline */
+ if (buf->len > 0 && buf->data[buf->len - 1] != '\n')
+ appendPQExpBufferChar(buf, '\n');
+ }
+ else
+ {
+ minimal_error_message(res);
+ result = false;
+ }
+
+ PQclear(res);
+ destroyPQExpBuffer(query);
+
+ return result;
+}
+
+/*
+ * If the given argument of \ef or \ev ends with a line number, delete the line
+ * number from the argument string and return it as an integer. (We need
+ * this kluge because we're too lazy to parse \ef's function or \ev's view
+ * argument carefully --- we just slop it up in OT_WHOLE_LINE mode.)
+ *
+ * Returns -1 if no line number is present, 0 on error, or a positive value
+ * on success.
+ */
+static int
+strip_lineno_from_objdesc(char *obj)
+{
+ char *c;
+ int lineno;
+
+ if (!obj || obj[0] == '\0')
+ return -1;
+
+ c = obj + strlen(obj) - 1;
+
+ /*
+ * This business of parsing backwards is dangerous as can be in a
+ * multibyte environment: there is no reason to believe that we are
+ * looking at the first byte of a character, nor are we necessarily
+ * working in a "safe" encoding. Fortunately the bitpatterns we are
+ * looking for are unlikely to occur as non-first bytes, but beware of
+ * trying to expand the set of cases that can be recognized. We must
+ * guard the <ctype.h> macros by using isascii() first, too.
+ */
+
+ /* skip trailing whitespace */
+ while (c > obj && isascii((unsigned char) *c) && isspace((unsigned char) *c))
+ c--;
+
+ /* must have a digit as last non-space char */
+ if (c == obj || !isascii((unsigned char) *c) || !isdigit((unsigned char) *c))
+ return -1;
+
+ /* find start of digit string */
+ while (c > obj && isascii((unsigned char) *c) && isdigit((unsigned char) *c))
+ c--;
+
+ /* digits must be separated from object name by space or closing paren */
+ /* notice also that we are not allowing an empty object name ... */
+ if (c == obj || !isascii((unsigned char) *c) ||
+ !(isspace((unsigned char) *c) || *c == ')'))
+ return -1;
+
+ /* parse digit string */
+ c++;
+ lineno = atoi(c);
+ if (lineno < 1)
+ {
+ pg_log_error("invalid line number: %s", c);
+ return 0;
+ }
+
+ /* strip digit string from object name */
+ *c = '\0';
+
+ return lineno;
+}
+
+/*
+ * Count number of lines in the buffer.
+ * This is used to test if pager is needed or not.
+ */
+static int
+count_lines_in_buf(PQExpBuffer buf)
+{
+ int lineno = 0;
+ const char *lines = buf->data;
+
+ while (*lines != '\0')
+ {
+ lineno++;
+ /* find start of next line */
+ lines = strchr(lines, '\n');
+ if (!lines)
+ break;
+ lines++;
+ }
+
+ return lineno;
+}
+
+/*
+ * Write text at *lines to output with line numbers.
+ *
+ * If header_keyword isn't NULL, then line 1 should be the first line beginning
+ * with header_keyword; lines before that are unnumbered.
+ *
+ * Caution: this scribbles on *lines.
+ */
+static void
+print_with_linenumbers(FILE *output, char *lines,
+ const char *header_keyword)
+{
+ bool in_header = (header_keyword != NULL);
+ size_t header_sz = in_header ? strlen(header_keyword) : 0;
+ int lineno = 0;
+
+ while (*lines != '\0')
+ {
+ char *eol;
+
+ if (in_header && strncmp(lines, header_keyword, header_sz) == 0)
+ in_header = false;
+
+ /* increment lineno only for body's lines */
+ if (!in_header)
+ lineno++;
+
+ /* find and mark end of current line */
+ eol = strchr(lines, '\n');
+ if (eol != NULL)
+ *eol = '\0';
+
+ /* show current line as appropriate */
+ if (in_header)
+ fprintf(output, " %s\n", lines);
+ else
+ fprintf(output, "%-7d %s\n", lineno, lines);
+
+ /* advance to next line, if any */
+ if (eol == NULL)
+ break;
+ lines = ++eol;
+ }
+}
+
+/*
+ * Report just the primary error; this is to avoid cluttering the output
+ * with, for instance, a redisplay of the internally generated query
+ */
+static void
+minimal_error_message(PGresult *res)
+{
+ PQExpBuffer msg;
+ const char *fld;
+
+ msg = createPQExpBuffer();
+
+ fld = PQresultErrorField(res, PG_DIAG_SEVERITY);
+ if (fld)
+ printfPQExpBuffer(msg, "%s: ", fld);
+ else
+ printfPQExpBuffer(msg, "ERROR: ");
+ fld = PQresultErrorField(res, PG_DIAG_MESSAGE_PRIMARY);
+ if (fld)
+ appendPQExpBufferStr(msg, fld);
+ else
+ appendPQExpBufferStr(msg, "(not available)");
+ appendPQExpBufferChar(msg, '\n');
+
+ pg_log_error("%s", msg->data);
+
+ destroyPQExpBuffer(msg);
+}
diff --git a/src/bin/psql/command.h b/src/bin/psql/command.h
new file mode 100644
index 0000000..006832f
--- /dev/null
+++ b/src/bin/psql/command.h
@@ -0,0 +1,49 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/command.h
+ */
+#ifndef COMMAND_H
+#define COMMAND_H
+
+#include "fe_utils/conditional.h"
+#include "fe_utils/print.h"
+#include "fe_utils/psqlscan.h"
+
+typedef enum _backslashResult
+{
+ PSQL_CMD_UNKNOWN = 0, /* not done parsing yet (internal only) */
+ PSQL_CMD_SEND, /* query complete; send off */
+ PSQL_CMD_SKIP_LINE, /* keep building query */
+ PSQL_CMD_TERMINATE, /* quit program */
+ PSQL_CMD_NEWEDIT, /* query buffer was changed (e.g., via \e) */
+ PSQL_CMD_ERROR /* the execution of the backslash command
+ * resulted in an error */
+} backslashResult;
+
+
+extern backslashResult HandleSlashCmds(PsqlScanState scan_state,
+ ConditionalStack cstack,
+ PQExpBuffer query_buf,
+ PQExpBuffer previous_buf);
+
+extern int process_file(char *filename, bool use_relative_path);
+
+extern bool do_pset(const char *param,
+ const char *value,
+ printQueryOpt *popt,
+ bool quiet);
+
+extern printQueryOpt *savePsetInfo(const printQueryOpt *popt);
+
+extern void restorePsetInfo(printQueryOpt *popt, printQueryOpt *save);
+
+extern void connection_warnings(bool in_startup);
+
+extern void SyncVariables(void);
+
+extern void UnsyncVariables(void);
+
+#endif /* COMMAND_H */
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
new file mode 100644
index 0000000..94d5d60
--- /dev/null
+++ b/src/bin/psql/common.c
@@ -0,0 +1,2316 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/common.c
+ */
+#include "postgres_fe.h"
+
+#include <ctype.h>
+#include <limits.h>
+#include <math.h>
+#include <signal.h>
+#ifndef WIN32
+#include <unistd.h> /* for write() */
+#else
+#include <io.h> /* for _write() */
+#include <win32.h>
+#endif
+
+#include "command.h"
+#include "common.h"
+#include "common/logging.h"
+#include "copy.h"
+#include "crosstabview.h"
+#include "fe_utils/cancel.h"
+#include "fe_utils/mbprint.h"
+#include "fe_utils/string_utils.h"
+#include "portability/instr_time.h"
+#include "settings.h"
+
+#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e))
+
+static bool DescribeQuery(const char *query, double *elapsed_msec);
+static bool ExecQueryUsingCursor(const char *query, double *elapsed_msec);
+static bool command_no_begin(const char *query);
+static bool is_select_command(const char *query);
+
+
+/*
+ * openQueryOutputFile --- attempt to open a query output file
+ *
+ * fname == NULL selects stdout, else an initial '|' selects a pipe,
+ * else plain file.
+ *
+ * Returns output file pointer into *fout, and is-a-pipe flag into *is_pipe.
+ * Caller is responsible for adjusting SIGPIPE state if it's a pipe.
+ *
+ * On error, reports suitable error message and returns false.
+ */
+bool
+openQueryOutputFile(const char *fname, FILE **fout, bool *is_pipe)
+{
+ if (!fname || fname[0] == '\0')
+ {
+ *fout = stdout;
+ *is_pipe = false;
+ }
+ else if (*fname == '|')
+ {
+ *fout = popen(fname + 1, "w");
+ *is_pipe = true;
+ }
+ else
+ {
+ *fout = fopen(fname, "w");
+ *is_pipe = false;
+ }
+
+ if (*fout == NULL)
+ {
+ pg_log_error("%s: %m", fname);
+ return false;
+ }
+
+ return true;
+}
+
+/*
+ * setQFout
+ * -- handler for -o command line option and \o command
+ *
+ * On success, updates pset with the new output file and returns true.
+ * On failure, returns false without changing pset state.
+ */
+bool
+setQFout(const char *fname)
+{
+ FILE *fout;
+ bool is_pipe;
+
+ /* First make sure we can open the new output file/pipe */
+ if (!openQueryOutputFile(fname, &fout, &is_pipe))
+ return false;
+
+ /* Close old file/pipe */
+ if (pset.queryFout && pset.queryFout != stdout && pset.queryFout != stderr)
+ {
+ if (pset.queryFoutPipe)
+ pclose(pset.queryFout);
+ else
+ fclose(pset.queryFout);
+ }
+
+ pset.queryFout = fout;
+ pset.queryFoutPipe = is_pipe;
+
+ /* Adjust SIGPIPE handling appropriately: ignore signal if is_pipe */
+ set_sigpipe_trap_state(is_pipe);
+ restore_sigpipe_trap();
+
+ return true;
+}
+
+
+/*
+ * Variable-fetching callback for flex lexer
+ *
+ * If the specified variable exists, return its value as a string (malloc'd
+ * and expected to be freed by the caller); else return NULL.
+ *
+ * If "quote" isn't PQUOTE_PLAIN, then return the value suitably quoted and
+ * escaped for the specified quoting requirement. (Failure in escaping
+ * should lead to printing an error and returning NULL.)
+ *
+ * "passthrough" is the pointer previously given to psql_scan_set_passthrough.
+ * In psql, passthrough points to a ConditionalStack, which we check to
+ * determine whether variable expansion is allowed.
+ */
+char *
+psql_get_variable(const char *varname, PsqlScanQuoteType quote,
+ void *passthrough)
+{
+ char *result = NULL;
+ const char *value;
+
+ /* In an inactive \if branch, suppress all variable substitutions */
+ if (passthrough && !conditional_active((ConditionalStack) passthrough))
+ return NULL;
+
+ value = GetVariable(pset.vars, varname);
+ if (!value)
+ return NULL;
+
+ switch (quote)
+ {
+ case PQUOTE_PLAIN:
+ result = pg_strdup(value);
+ break;
+ case PQUOTE_SQL_LITERAL:
+ case PQUOTE_SQL_IDENT:
+ {
+ /*
+ * For these cases, we use libpq's quoting functions, which
+ * assume the string is in the connection's client encoding.
+ */
+ char *escaped_value;
+
+ if (!pset.db)
+ {
+ pg_log_error("cannot escape without active connection");
+ return NULL;
+ }
+
+ if (quote == PQUOTE_SQL_LITERAL)
+ escaped_value =
+ PQescapeLiteral(pset.db, value, strlen(value));
+ else
+ escaped_value =
+ PQescapeIdentifier(pset.db, value, strlen(value));
+
+ if (escaped_value == NULL)
+ {
+ const char *error = PQerrorMessage(pset.db);
+
+ pg_log_info("%s", error);
+ return NULL;
+ }
+
+ /*
+ * Rather than complicate the lexer's API with a notion of
+ * which free() routine to use, just pay the price of an extra
+ * strdup().
+ */
+ result = pg_strdup(escaped_value);
+ PQfreemem(escaped_value);
+ break;
+ }
+ case PQUOTE_SHELL_ARG:
+ {
+ /*
+ * For this we use appendShellStringNoError, which is
+ * encoding-agnostic, which is fine since the shell probably
+ * is too. In any case, the only special character is "'",
+ * which is not known to appear in valid multibyte characters.
+ */
+ PQExpBufferData buf;
+
+ initPQExpBuffer(&buf);
+ if (!appendShellStringNoError(&buf, value))
+ {
+ pg_log_error("shell command argument contains a newline or carriage return: \"%s\"",
+ value);
+ free(buf.data);
+ return NULL;
+ }
+ result = buf.data;
+ break;
+ }
+
+ /* No default: we want a compiler warning for missing cases */
+ }
+
+ return result;
+}
+
+
+/*
+ * for backend Notice messages (INFO, WARNING, etc)
+ */
+void
+NoticeProcessor(void *arg, const char *message)
+{
+ (void) arg; /* not used */
+ pg_log_info("%s", message);
+}
+
+
+
+/*
+ * Code to support query cancellation
+ *
+ * Before we start a query, we enable the SIGINT signal catcher to send a
+ * cancel request to the backend.
+ *
+ * SIGINT is supposed to abort all long-running psql operations, not only
+ * database queries. In most places, this is accomplished by checking
+ * cancel_pressed during long-running loops. However, that won't work when
+ * blocked on user input (in readline() or fgets()). In those places, we
+ * set sigint_interrupt_enabled true while blocked, instructing the signal
+ * catcher to longjmp through sigint_interrupt_jmp. We assume readline and
+ * fgets are coded to handle possible interruption.
+ *
+ * On Windows, currently this does not work, so control-C is less useful
+ * there.
+ */
+volatile bool sigint_interrupt_enabled = false;
+
+sigjmp_buf sigint_interrupt_jmp;
+
+static void
+psql_cancel_callback(void)
+{
+#ifndef WIN32
+ /* if we are waiting for input, longjmp out of it */
+ if (sigint_interrupt_enabled)
+ {
+ sigint_interrupt_enabled = false;
+ siglongjmp(sigint_interrupt_jmp, 1);
+ }
+#endif
+
+ /* else, set cancel flag to stop any long-running loops */
+ cancel_pressed = true;
+}
+
+void
+psql_setup_cancel_handler(void)
+{
+ setup_cancel_handler(psql_cancel_callback);
+}
+
+
+/* ConnectionUp
+ *
+ * Returns whether our backend connection is still there.
+ */
+static bool
+ConnectionUp(void)
+{
+ return PQstatus(pset.db) != CONNECTION_BAD;
+}
+
+
+
+/* CheckConnection
+ *
+ * Verify that we still have a good connection to the backend, and if not,
+ * see if it can be restored.
+ *
+ * Returns true if either the connection was still there, or it could be
+ * restored successfully; false otherwise. If, however, there was no
+ * connection and the session is non-interactive, this will exit the program
+ * with a code of EXIT_BADCONN.
+ */
+static bool
+CheckConnection(void)
+{
+ bool OK;
+
+ OK = ConnectionUp();
+ if (!OK)
+ {
+ if (!pset.cur_cmd_interactive)
+ {
+ pg_log_fatal("connection to server was lost");
+ exit(EXIT_BADCONN);
+ }
+
+ fprintf(stderr, _("The connection to the server was lost. Attempting reset: "));
+ PQreset(pset.db);
+ OK = ConnectionUp();
+ if (!OK)
+ {
+ fprintf(stderr, _("Failed.\n"));
+
+ /*
+ * Transition to having no connection. Keep this bit in sync with
+ * do_connect().
+ */
+ PQfinish(pset.db);
+ pset.db = NULL;
+ ResetCancelConn();
+ UnsyncVariables();
+ }
+ else
+ {
+ fprintf(stderr, _("Succeeded.\n"));
+
+ /*
+ * Re-sync, just in case anything changed. Keep this in sync with
+ * do_connect().
+ */
+ SyncVariables();
+ connection_warnings(false); /* Must be after SyncVariables */
+ }
+ }
+
+ return OK;
+}
+
+
+
+
+/*
+ * AcceptResult
+ *
+ * Checks whether a result is valid, giving an error message if necessary;
+ * and ensures that the connection to the backend is still up.
+ *
+ * Returns true for valid result, false for error state.
+ */
+static bool
+AcceptResult(const PGresult *result)
+{
+ bool OK;
+
+ if (!result)
+ OK = false;
+ else
+ switch (PQresultStatus(result))
+ {
+ case PGRES_COMMAND_OK:
+ case PGRES_TUPLES_OK:
+ case PGRES_EMPTY_QUERY:
+ case PGRES_COPY_IN:
+ case PGRES_COPY_OUT:
+ /* Fine, do nothing */
+ OK = true;
+ break;
+
+ case PGRES_BAD_RESPONSE:
+ case PGRES_NONFATAL_ERROR:
+ case PGRES_FATAL_ERROR:
+ OK = false;
+ break;
+
+ default:
+ OK = false;
+ pg_log_error("unexpected PQresultStatus: %d",
+ PQresultStatus(result));
+ break;
+ }
+
+ if (!OK)
+ {
+ const char *error = PQerrorMessage(pset.db);
+
+ if (strlen(error))
+ pg_log_info("%s", error);
+
+ CheckConnection();
+ }
+
+ return OK;
+}
+
+
+/*
+ * Set special variables from a query result
+ * - ERROR: true/false, whether an error occurred on this query
+ * - SQLSTATE: code of error, or "00000" if no error, or "" if unknown
+ * - ROW_COUNT: how many rows were returned or affected, or "0"
+ * - LAST_ERROR_SQLSTATE: same for last error
+ * - LAST_ERROR_MESSAGE: message of last error
+ *
+ * Note: current policy is to apply this only to the results of queries
+ * entered by the user, not queries generated by slash commands.
+ */
+static void
+SetResultVariables(PGresult *results, bool success)
+{
+ if (success)
+ {
+ const char *ntuples = PQcmdTuples(results);
+
+ SetVariable(pset.vars, "ERROR", "false");
+ SetVariable(pset.vars, "SQLSTATE", "00000");
+ SetVariable(pset.vars, "ROW_COUNT", *ntuples ? ntuples : "0");
+ }
+ else
+ {
+ const char *code = PQresultErrorField(results, PG_DIAG_SQLSTATE);
+ const char *mesg = PQresultErrorField(results, PG_DIAG_MESSAGE_PRIMARY);
+
+ SetVariable(pset.vars, "ERROR", "true");
+
+ /*
+ * If there is no SQLSTATE code, use an empty string. This can happen
+ * for libpq-detected errors (e.g., lost connection, ENOMEM).
+ */
+ if (code == NULL)
+ code = "";
+ SetVariable(pset.vars, "SQLSTATE", code);
+ SetVariable(pset.vars, "ROW_COUNT", "0");
+ SetVariable(pset.vars, "LAST_ERROR_SQLSTATE", code);
+ SetVariable(pset.vars, "LAST_ERROR_MESSAGE", mesg ? mesg : "");
+ }
+}
+
+
+/*
+ * ClearOrSaveResult
+ *
+ * If the result represents an error, remember it for possible display by
+ * \errverbose. Otherwise, just PQclear() it.
+ *
+ * Note: current policy is to apply this to the results of all queries,
+ * including "back door" queries, for debugging's sake. It's OK to use
+ * PQclear() directly on results known to not be error results, however.
+ */
+static void
+ClearOrSaveResult(PGresult *result)
+{
+ if (result)
+ {
+ switch (PQresultStatus(result))
+ {
+ case PGRES_NONFATAL_ERROR:
+ case PGRES_FATAL_ERROR:
+ if (pset.last_error_result)
+ PQclear(pset.last_error_result);
+ pset.last_error_result = result;
+ break;
+
+ default:
+ PQclear(result);
+ break;
+ }
+ }
+}
+
+
+/*
+ * Print microtiming output. Always print raw milliseconds; if the interval
+ * is >= 1 second, also break it down into days/hours/minutes/seconds.
+ */
+static void
+PrintTiming(double elapsed_msec)
+{
+ double seconds;
+ double minutes;
+ double hours;
+ double days;
+
+ if (elapsed_msec < 1000.0)
+ {
+ /* This is the traditional (pre-v10) output format */
+ printf(_("Time: %.3f ms\n"), elapsed_msec);
+ return;
+ }
+
+ /*
+ * Note: we could print just seconds, in a format like %06.3f, when the
+ * total is less than 1min. But that's hard to interpret unless we tack
+ * on "s" or otherwise annotate it. Forcing the display to include
+ * minutes seems like a better solution.
+ */
+ seconds = elapsed_msec / 1000.0;
+ minutes = floor(seconds / 60.0);
+ seconds -= 60.0 * minutes;
+ if (minutes < 60.0)
+ {
+ printf(_("Time: %.3f ms (%02d:%06.3f)\n"),
+ elapsed_msec, (int) minutes, seconds);
+ return;
+ }
+
+ hours = floor(minutes / 60.0);
+ minutes -= 60.0 * hours;
+ if (hours < 24.0)
+ {
+ printf(_("Time: %.3f ms (%02d:%02d:%06.3f)\n"),
+ elapsed_msec, (int) hours, (int) minutes, seconds);
+ return;
+ }
+
+ days = floor(hours / 24.0);
+ hours -= 24.0 * days;
+ printf(_("Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"),
+ elapsed_msec, days, (int) hours, (int) minutes, seconds);
+}
+
+
+/*
+ * PSQLexec
+ *
+ * This is the way to send "backdoor" queries (those not directly entered
+ * by the user). It is subject to -E but not -e.
+ *
+ * Caller is responsible for handling the ensuing processing if a COPY
+ * command is sent.
+ *
+ * Note: we don't bother to check PQclientEncoding; it is assumed that no
+ * caller uses this path to issue "SET CLIENT_ENCODING".
+ */
+PGresult *
+PSQLexec(const char *query)
+{
+ PGresult *res;
+
+ if (!pset.db)
+ {
+ pg_log_error("You are currently not connected to a database.");
+ return NULL;
+ }
+
+ if (pset.echo_hidden != PSQL_ECHO_HIDDEN_OFF)
+ {
+ printf(_("********* QUERY **********\n"
+ "%s\n"
+ "**************************\n\n"), query);
+ fflush(stdout);
+ if (pset.logfile)
+ {
+ fprintf(pset.logfile,
+ _("********* QUERY **********\n"
+ "%s\n"
+ "**************************\n\n"), query);
+ fflush(pset.logfile);
+ }
+
+ if (pset.echo_hidden == PSQL_ECHO_HIDDEN_NOEXEC)
+ return NULL;
+ }
+
+ SetCancelConn(pset.db);
+
+ res = PQexec(pset.db, query);
+
+ ResetCancelConn();
+
+ if (!AcceptResult(res))
+ {
+ ClearOrSaveResult(res);
+ res = NULL;
+ }
+
+ return res;
+}
+
+
+/*
+ * PSQLexecWatch
+ *
+ * This function is used for \watch command to send the query to
+ * the server and print out the results.
+ *
+ * Returns 1 if the query executed successfully, 0 if it cannot be repeated,
+ * e.g., because of the interrupt, -1 on error.
+ */
+int
+PSQLexecWatch(const char *query, const printQueryOpt *opt)
+{
+ PGresult *res;
+ double elapsed_msec = 0;
+ instr_time before;
+ instr_time after;
+
+ if (!pset.db)
+ {
+ pg_log_error("You are currently not connected to a database.");
+ return 0;
+ }
+
+ SetCancelConn(pset.db);
+
+ if (pset.timing)
+ INSTR_TIME_SET_CURRENT(before);
+
+ res = PQexec(pset.db, query);
+
+ ResetCancelConn();
+
+ if (!AcceptResult(res))
+ {
+ ClearOrSaveResult(res);
+ return 0;
+ }
+
+ if (pset.timing)
+ {
+ INSTR_TIME_SET_CURRENT(after);
+ INSTR_TIME_SUBTRACT(after, before);
+ elapsed_msec = INSTR_TIME_GET_MILLISEC(after);
+ }
+
+ /*
+ * If SIGINT is sent while the query is processing, the interrupt will be
+ * consumed. The user's intention, though, is to cancel the entire watch
+ * process, so detect a sent cancellation request and exit in this case.
+ */
+ if (cancel_pressed)
+ {
+ PQclear(res);
+ return 0;
+ }
+
+ switch (PQresultStatus(res))
+ {
+ case PGRES_TUPLES_OK:
+ printQuery(res, opt, pset.queryFout, false, pset.logfile);
+ break;
+
+ case PGRES_COMMAND_OK:
+ fprintf(pset.queryFout, "%s\n%s\n\n", opt->title, PQcmdStatus(res));
+ break;
+
+ case PGRES_EMPTY_QUERY:
+ pg_log_error("\\watch cannot be used with an empty query");
+ PQclear(res);
+ return -1;
+
+ case PGRES_COPY_OUT:
+ case PGRES_COPY_IN:
+ case PGRES_COPY_BOTH:
+ pg_log_error("\\watch cannot be used with COPY");
+ PQclear(res);
+ return -1;
+
+ default:
+ pg_log_error("unexpected result status for \\watch");
+ PQclear(res);
+ return -1;
+ }
+
+ PQclear(res);
+
+ fflush(pset.queryFout);
+
+ /* Possible microtiming output */
+ if (pset.timing)
+ PrintTiming(elapsed_msec);
+
+ return 1;
+}
+
+
+/*
+ * PrintNotifications: check for asynchronous notifications, and print them out
+ */
+static void
+PrintNotifications(void)
+{
+ PGnotify *notify;
+
+ PQconsumeInput(pset.db);
+ while ((notify = PQnotifies(pset.db)) != NULL)
+ {
+ /* for backward compatibility, only show payload if nonempty */
+ if (notify->extra[0])
+ fprintf(pset.queryFout, _("Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"),
+ notify->relname, notify->extra, notify->be_pid);
+ else
+ fprintf(pset.queryFout, _("Asynchronous notification \"%s\" received from server process with PID %d.\n"),
+ notify->relname, notify->be_pid);
+ fflush(pset.queryFout);
+ PQfreemem(notify);
+ PQconsumeInput(pset.db);
+ }
+}
+
+
+/*
+ * PrintQueryTuples: assuming query result is OK, print its tuples
+ *
+ * Returns true if successful, false otherwise.
+ */
+static bool
+PrintQueryTuples(const PGresult *results)
+{
+ bool result = true;
+
+ /* write output to \g argument, if any */
+ if (pset.gfname)
+ {
+ FILE *fout;
+ bool is_pipe;
+
+ if (!openQueryOutputFile(pset.gfname, &fout, &is_pipe))
+ return false;
+ if (is_pipe)
+ disable_sigpipe_trap();
+
+ printQuery(results, &pset.popt, fout, false, pset.logfile);
+ if (ferror(fout))
+ {
+ pg_log_error("could not print result table: %m");
+ result = false;
+ }
+
+ if (is_pipe)
+ {
+ pclose(fout);
+ restore_sigpipe_trap();
+ }
+ else
+ fclose(fout);
+ }
+ else
+ {
+ printQuery(results, &pset.popt, pset.queryFout, false, pset.logfile);
+ if (ferror(pset.queryFout))
+ {
+ pg_log_error("could not print result table: %m");
+ result = false;
+ }
+ }
+
+ return result;
+}
+
+
+/*
+ * StoreQueryTuple: assuming query result is OK, save data into variables
+ *
+ * Returns true if successful, false otherwise.
+ */
+static bool
+StoreQueryTuple(const PGresult *result)
+{
+ bool success = true;
+
+ if (PQntuples(result) < 1)
+ {
+ pg_log_error("no rows returned for \\gset");
+ success = false;
+ }
+ else if (PQntuples(result) > 1)
+ {
+ pg_log_error("more than one row returned for \\gset");
+ success = false;
+ }
+ else
+ {
+ int i;
+
+ for (i = 0; i < PQnfields(result); i++)
+ {
+ char *colname = PQfname(result, i);
+ char *varname;
+ char *value;
+
+ /* concatenate prefix and column name */
+ varname = psprintf("%s%s", pset.gset_prefix, colname);
+
+ if (VariableHasHook(pset.vars, varname))
+ {
+ pg_log_warning("attempt to \\gset into specially treated variable \"%s\" ignored",
+ varname);
+ continue;
+ }
+
+ if (!PQgetisnull(result, 0, i))
+ value = PQgetvalue(result, 0, i);
+ else
+ {
+ /* for NULL value, unset rather than set the variable */
+ value = NULL;
+ }
+
+ if (!SetVariable(pset.vars, varname, value))
+ {
+ free(varname);
+ success = false;
+ break;
+ }
+
+ free(varname);
+ }
+ }
+
+ return success;
+}
+
+
+/*
+ * ExecQueryTuples: assuming query result is OK, execute each query
+ * result field as a SQL statement
+ *
+ * Returns true if successful, false otherwise.
+ */
+static bool
+ExecQueryTuples(const PGresult *result)
+{
+ bool success = true;
+ int nrows = PQntuples(result);
+ int ncolumns = PQnfields(result);
+ int r,
+ c;
+
+ /*
+ * We must turn off gexec_flag to avoid infinite recursion. Note that
+ * this allows ExecQueryUsingCursor to be applied to the individual query
+ * results. SendQuery prevents it from being applied when fetching the
+ * queries-to-execute, because it can't handle recursion either.
+ */
+ pset.gexec_flag = false;
+
+ for (r = 0; r < nrows; r++)
+ {
+ for (c = 0; c < ncolumns; c++)
+ {
+ if (!PQgetisnull(result, r, c))
+ {
+ const char *query = PQgetvalue(result, r, c);
+
+ /* Abandon execution if cancel_pressed */
+ if (cancel_pressed)
+ goto loop_exit;
+
+ /*
+ * ECHO_ALL mode should echo these queries, but SendQuery
+ * assumes that MainLoop did that, so we have to do it here.
+ */
+ if (pset.echo == PSQL_ECHO_ALL && !pset.singlestep)
+ {
+ puts(query);
+ fflush(stdout);
+ }
+
+ if (!SendQuery(query))
+ {
+ /* Error - abandon execution if ON_ERROR_STOP */
+ success = false;
+ if (pset.on_error_stop)
+ goto loop_exit;
+ }
+ }
+ }
+ }
+
+loop_exit:
+
+ /*
+ * Restore state. We know gexec_flag was on, else we'd not be here. (We
+ * also know it'll get turned off at end of command, but that's not ours
+ * to do here.)
+ */
+ pset.gexec_flag = true;
+
+ /* Return true if all queries were successful */
+ return success;
+}
+
+
+/*
+ * ProcessResult: utility function for use by SendQuery() only
+ *
+ * When our command string contained a COPY FROM STDIN or COPY TO STDOUT,
+ * PQexec() has stopped at the PGresult associated with the first such
+ * command. In that event, we'll marshal data for the COPY and then cycle
+ * through any subsequent PGresult objects.
+ *
+ * When the command string contained no such COPY command, this function
+ * degenerates to an AcceptResult() call.
+ *
+ * Changes its argument to point to the last PGresult of the command string,
+ * or NULL if that result was for a COPY TO STDOUT. (Returning NULL prevents
+ * the command status from being printed, which we want in that case so that
+ * the status line doesn't get taken as part of the COPY data.)
+ *
+ * Returns true on complete success, false otherwise. Possible failure modes
+ * include purely client-side problems; check the transaction status for the
+ * server-side opinion.
+ */
+static bool
+ProcessResult(PGresult **results)
+{
+ bool success = true;
+ bool first_cycle = true;
+
+ for (;;)
+ {
+ ExecStatusType result_status;
+ bool is_copy;
+ PGresult *next_result;
+
+ if (!AcceptResult(*results))
+ {
+ /*
+ * Failure at this point is always a server-side failure or a
+ * failure to submit the command string. Either way, we're
+ * finished with this command string.
+ */
+ success = false;
+ break;
+ }
+
+ result_status = PQresultStatus(*results);
+ switch (result_status)
+ {
+ case PGRES_EMPTY_QUERY:
+ case PGRES_COMMAND_OK:
+ case PGRES_TUPLES_OK:
+ is_copy = false;
+ break;
+
+ case PGRES_COPY_OUT:
+ case PGRES_COPY_IN:
+ is_copy = true;
+ break;
+
+ default:
+ /* AcceptResult() should have caught anything else. */
+ is_copy = false;
+ pg_log_error("unexpected PQresultStatus: %d", result_status);
+ break;
+ }
+
+ if (is_copy)
+ {
+ /*
+ * Marshal the COPY data. Either subroutine will get the
+ * connection out of its COPY state, then call PQresultStatus()
+ * once and report any error.
+ *
+ * For COPY OUT, direct the output to pset.copyStream if it's set,
+ * otherwise to pset.gfname if it's set, otherwise to queryFout.
+ * For COPY IN, use pset.copyStream as data source if it's set,
+ * otherwise cur_cmd_source.
+ */
+ FILE *copystream;
+ PGresult *copy_result;
+
+ SetCancelConn(pset.db);
+ if (result_status == PGRES_COPY_OUT)
+ {
+ bool need_close = false;
+ bool is_pipe = false;
+
+ if (pset.copyStream)
+ {
+ /* invoked by \copy */
+ copystream = pset.copyStream;
+ }
+ else if (pset.gfname)
+ {
+ /* invoked by \g */
+ if (openQueryOutputFile(pset.gfname,
+ &copystream, &is_pipe))
+ {
+ need_close = true;
+ if (is_pipe)
+ disable_sigpipe_trap();
+ }
+ else
+ copystream = NULL; /* discard COPY data entirely */
+ }
+ else
+ {
+ /* fall back to the generic query output stream */
+ copystream = pset.queryFout;
+ }
+
+ success = handleCopyOut(pset.db,
+ copystream,
+ &copy_result)
+ && success
+ && (copystream != NULL);
+
+ /*
+ * Suppress status printing if the report would go to the same
+ * place as the COPY data just went. Note this doesn't
+ * prevent error reporting, since handleCopyOut did that.
+ */
+ if (copystream == pset.queryFout)
+ {
+ PQclear(copy_result);
+ copy_result = NULL;
+ }
+
+ if (need_close)
+ {
+ /* close \g argument file/pipe */
+ if (is_pipe)
+ {
+ pclose(copystream);
+ restore_sigpipe_trap();
+ }
+ else
+ {
+ fclose(copystream);
+ }
+ }
+ }
+ else
+ {
+ /* COPY IN */
+ copystream = pset.copyStream ? pset.copyStream : pset.cur_cmd_source;
+ success = handleCopyIn(pset.db,
+ copystream,
+ PQbinaryTuples(*results),
+ &copy_result) && success;
+ }
+ ResetCancelConn();
+
+ /*
+ * Replace the PGRES_COPY_OUT/IN result with COPY command's exit
+ * status, or with NULL if we want to suppress printing anything.
+ */
+ PQclear(*results);
+ *results = copy_result;
+ }
+ else if (first_cycle)
+ {
+ /* fast path: no COPY commands; PQexec visited all results */
+ break;
+ }
+
+ /*
+ * Check PQgetResult() again. In the typical case of a single-command
+ * string, it will return NULL. Otherwise, we'll have other results
+ * to process that may include other COPYs. We keep the last result.
+ */
+ next_result = PQgetResult(pset.db);
+ if (!next_result)
+ break;
+
+ PQclear(*results);
+ *results = next_result;
+ first_cycle = false;
+ }
+
+ SetResultVariables(*results, success);
+
+ /* may need this to recover from conn loss during COPY */
+ if (!first_cycle && !CheckConnection())
+ return false;
+
+ return success;
+}
+
+
+/*
+ * PrintQueryStatus: report command status as required
+ *
+ * Note: Utility function for use by PrintQueryResults() only.
+ */
+static void
+PrintQueryStatus(PGresult *results)
+{
+ char buf[16];
+
+ if (!pset.quiet)
+ {
+ if (pset.popt.topt.format == PRINT_HTML)
+ {
+ fputs("<p>", pset.queryFout);
+ html_escaped_print(PQcmdStatus(results), pset.queryFout);
+ fputs("</p>\n", pset.queryFout);
+ }
+ else
+ fprintf(pset.queryFout, "%s\n", PQcmdStatus(results));
+ }
+
+ if (pset.logfile)
+ fprintf(pset.logfile, "%s\n", PQcmdStatus(results));
+
+ snprintf(buf, sizeof(buf), "%u", (unsigned int) PQoidValue(results));
+ SetVariable(pset.vars, "LASTOID", buf);
+}
+
+
+/*
+ * PrintQueryResults: print out (or store or execute) query results as required
+ *
+ * Note: Utility function for use by SendQuery() only.
+ *
+ * Returns true if the query executed successfully, false otherwise.
+ */
+static bool
+PrintQueryResults(PGresult *results)
+{
+ bool success;
+ const char *cmdstatus;
+
+ if (!results)
+ return false;
+
+ switch (PQresultStatus(results))
+ {
+ case PGRES_TUPLES_OK:
+ /* store or execute or print the data ... */
+ if (pset.gset_prefix)
+ success = StoreQueryTuple(results);
+ else if (pset.gexec_flag)
+ success = ExecQueryTuples(results);
+ else if (pset.crosstab_flag)
+ success = PrintResultsInCrosstab(results);
+ else
+ success = PrintQueryTuples(results);
+ /* if it's INSERT/UPDATE/DELETE RETURNING, also print status */
+ cmdstatus = PQcmdStatus(results);
+ if (strncmp(cmdstatus, "INSERT", 6) == 0 ||
+ strncmp(cmdstatus, "UPDATE", 6) == 0 ||
+ strncmp(cmdstatus, "DELETE", 6) == 0)
+ PrintQueryStatus(results);
+ break;
+
+ case PGRES_COMMAND_OK:
+ PrintQueryStatus(results);
+ success = true;
+ break;
+
+ case PGRES_EMPTY_QUERY:
+ success = true;
+ break;
+
+ case PGRES_COPY_OUT:
+ case PGRES_COPY_IN:
+ /* nothing to do here */
+ success = true;
+ break;
+
+ case PGRES_BAD_RESPONSE:
+ case PGRES_NONFATAL_ERROR:
+ case PGRES_FATAL_ERROR:
+ success = false;
+ break;
+
+ default:
+ success = false;
+ pg_log_error("unexpected PQresultStatus: %d",
+ PQresultStatus(results));
+ break;
+ }
+
+ fflush(pset.queryFout);
+
+ return success;
+}
+
+
+/*
+ * SendQuery: send the query string to the backend
+ * (and print out results)
+ *
+ * Note: This is the "front door" way to send a query. That is, use it to
+ * send queries actually entered by the user. These queries will be subject to
+ * single step mode.
+ * To send "back door" queries (generated by slash commands, etc.) in a
+ * controlled way, use PSQLexec().
+ *
+ * Returns true if the query executed successfully, false otherwise.
+ */
+bool
+SendQuery(const char *query)
+{
+ PGresult *results;
+ PGTransactionStatusType transaction_status;
+ double elapsed_msec = 0;
+ bool OK = false;
+ int i;
+ bool on_error_rollback_savepoint = false;
+ static bool on_error_rollback_warning = false;
+
+ if (!pset.db)
+ {
+ pg_log_error("You are currently not connected to a database.");
+ goto sendquery_cleanup;
+ }
+
+ if (pset.singlestep)
+ {
+ char buf[3];
+
+ fflush(stderr);
+ printf(_("***(Single step mode: verify command)*******************************************\n"
+ "%s\n"
+ "***(press return to proceed or enter x and return to cancel)********************\n"),
+ query);
+ fflush(stdout);
+ if (fgets(buf, sizeof(buf), stdin) != NULL)
+ if (buf[0] == 'x')
+ goto sendquery_cleanup;
+ if (cancel_pressed)
+ goto sendquery_cleanup;
+ }
+ else if (pset.echo == PSQL_ECHO_QUERIES)
+ {
+ puts(query);
+ fflush(stdout);
+ }
+
+ if (pset.logfile)
+ {
+ fprintf(pset.logfile,
+ _("********* QUERY **********\n"
+ "%s\n"
+ "**************************\n\n"), query);
+ fflush(pset.logfile);
+ }
+
+ SetCancelConn(pset.db);
+
+ transaction_status = PQtransactionStatus(pset.db);
+
+ if (transaction_status == PQTRANS_IDLE &&
+ !pset.autocommit &&
+ !command_no_begin(query))
+ {
+ results = PQexec(pset.db, "BEGIN");
+ if (PQresultStatus(results) != PGRES_COMMAND_OK)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ ClearOrSaveResult(results);
+ ResetCancelConn();
+ goto sendquery_cleanup;
+ }
+ ClearOrSaveResult(results);
+ transaction_status = PQtransactionStatus(pset.db);
+ }
+
+ if (transaction_status == PQTRANS_INTRANS &&
+ pset.on_error_rollback != PSQL_ERROR_ROLLBACK_OFF &&
+ (pset.cur_cmd_interactive ||
+ pset.on_error_rollback == PSQL_ERROR_ROLLBACK_ON))
+ {
+ if (on_error_rollback_warning == false && pset.sversion < 80000)
+ {
+ char sverbuf[32];
+
+ pg_log_warning("The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ on_error_rollback_warning = true;
+ }
+ else
+ {
+ results = PQexec(pset.db, "SAVEPOINT pg_psql_temporary_savepoint");
+ if (PQresultStatus(results) != PGRES_COMMAND_OK)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ ClearOrSaveResult(results);
+ ResetCancelConn();
+ goto sendquery_cleanup;
+ }
+ ClearOrSaveResult(results);
+ on_error_rollback_savepoint = true;
+ }
+ }
+
+ if (pset.gdesc_flag)
+ {
+ /* Describe query's result columns, without executing it */
+ OK = DescribeQuery(query, &elapsed_msec);
+ ResetCancelConn();
+ results = NULL; /* PQclear(NULL) does nothing */
+ }
+ else if (pset.fetch_count <= 0 || pset.gexec_flag ||
+ pset.crosstab_flag || !is_select_command(query))
+ {
+ /* Default fetch-it-all-and-print mode */
+ instr_time before,
+ after;
+
+ if (pset.timing)
+ INSTR_TIME_SET_CURRENT(before);
+
+ results = PQexec(pset.db, query);
+
+ /* these operations are included in the timing result: */
+ ResetCancelConn();
+ OK = ProcessResult(&results);
+
+ if (pset.timing)
+ {
+ INSTR_TIME_SET_CURRENT(after);
+ INSTR_TIME_SUBTRACT(after, before);
+ elapsed_msec = INSTR_TIME_GET_MILLISEC(after);
+ }
+
+ /* but printing results isn't: */
+ if (OK && results)
+ OK = PrintQueryResults(results);
+ }
+ else
+ {
+ /* Fetch-in-segments mode */
+ OK = ExecQueryUsingCursor(query, &elapsed_msec);
+ ResetCancelConn();
+ results = NULL; /* PQclear(NULL) does nothing */
+ }
+
+ if (!OK && pset.echo == PSQL_ECHO_ERRORS)
+ pg_log_info("STATEMENT: %s", query);
+
+ /* If we made a temporary savepoint, possibly release/rollback */
+ if (on_error_rollback_savepoint)
+ {
+ const char *svptcmd = NULL;
+
+ transaction_status = PQtransactionStatus(pset.db);
+
+ switch (transaction_status)
+ {
+ case PQTRANS_INERROR:
+ /* We always rollback on an error */
+ svptcmd = "ROLLBACK TO pg_psql_temporary_savepoint";
+ break;
+
+ case PQTRANS_IDLE:
+ /* If they are no longer in a transaction, then do nothing */
+ break;
+
+ case PQTRANS_INTRANS:
+
+ /*
+ * Do nothing if they are messing with savepoints themselves:
+ * If the user did COMMIT AND CHAIN, RELEASE or ROLLBACK, our
+ * savepoint is gone. If they issued a SAVEPOINT, releasing
+ * ours would remove theirs.
+ */
+ if (results &&
+ (strcmp(PQcmdStatus(results), "COMMIT") == 0 ||
+ strcmp(PQcmdStatus(results), "SAVEPOINT") == 0 ||
+ strcmp(PQcmdStatus(results), "RELEASE") == 0 ||
+ strcmp(PQcmdStatus(results), "ROLLBACK") == 0))
+ svptcmd = NULL;
+ else
+ svptcmd = "RELEASE pg_psql_temporary_savepoint";
+ break;
+
+ case PQTRANS_ACTIVE:
+ case PQTRANS_UNKNOWN:
+ default:
+ OK = false;
+ /* PQTRANS_UNKNOWN is expected given a broken connection. */
+ if (transaction_status != PQTRANS_UNKNOWN || ConnectionUp())
+ pg_log_error("unexpected transaction status (%d)",
+ transaction_status);
+ break;
+ }
+
+ if (svptcmd)
+ {
+ PGresult *svptres;
+
+ svptres = PQexec(pset.db, svptcmd);
+ if (PQresultStatus(svptres) != PGRES_COMMAND_OK)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ ClearOrSaveResult(svptres);
+ OK = false;
+
+ PQclear(results);
+ ResetCancelConn();
+ goto sendquery_cleanup;
+ }
+ PQclear(svptres);
+ }
+ }
+
+ ClearOrSaveResult(results);
+
+ /* Possible microtiming output */
+ if (pset.timing)
+ PrintTiming(elapsed_msec);
+
+ /* check for events that may occur during query execution */
+
+ if (pset.encoding != PQclientEncoding(pset.db) &&
+ PQclientEncoding(pset.db) >= 0)
+ {
+ /* track effects of SET CLIENT_ENCODING */
+ pset.encoding = PQclientEncoding(pset.db);
+ pset.popt.topt.encoding = pset.encoding;
+ SetVariable(pset.vars, "ENCODING",
+ pg_encoding_to_char(pset.encoding));
+ }
+
+ PrintNotifications();
+
+ /* perform cleanup that should occur after any attempted query */
+
+sendquery_cleanup:
+
+ /* reset \g's output-to-filename trigger */
+ if (pset.gfname)
+ {
+ free(pset.gfname);
+ pset.gfname = NULL;
+ }
+
+ /* restore print settings if \g changed them */
+ if (pset.gsavepopt)
+ {
+ restorePsetInfo(&pset.popt, pset.gsavepopt);
+ pset.gsavepopt = NULL;
+ }
+
+ /* reset \gset trigger */
+ if (pset.gset_prefix)
+ {
+ free(pset.gset_prefix);
+ pset.gset_prefix = NULL;
+ }
+
+ /* reset \gdesc trigger */
+ pset.gdesc_flag = false;
+
+ /* reset \gexec trigger */
+ pset.gexec_flag = false;
+
+ /* reset \crosstabview trigger */
+ pset.crosstab_flag = false;
+ for (i = 0; i < lengthof(pset.ctv_args); i++)
+ {
+ pg_free(pset.ctv_args[i]);
+ pset.ctv_args[i] = NULL;
+ }
+
+ return OK;
+}
+
+
+/*
+ * DescribeQuery: describe the result columns of a query, without executing it
+ *
+ * Returns true if the operation executed successfully, false otherwise.
+ *
+ * If pset.timing is on, total query time (exclusive of result-printing) is
+ * stored into *elapsed_msec.
+ */
+static bool
+DescribeQuery(const char *query, double *elapsed_msec)
+{
+ PGresult *results;
+ bool OK;
+ instr_time before,
+ after;
+
+ *elapsed_msec = 0;
+
+ if (pset.timing)
+ INSTR_TIME_SET_CURRENT(before);
+
+ /*
+ * To parse the query but not execute it, we prepare it, using the unnamed
+ * prepared statement. This is invisible to psql users, since there's no
+ * way to access the unnamed prepared statement from psql user space. The
+ * next Parse or Query protocol message would overwrite the statement
+ * anyway. (So there's no great need to clear it when done, which is a
+ * good thing because libpq provides no easy way to do that.)
+ */
+ results = PQprepare(pset.db, "", query, 0, NULL);
+ if (PQresultStatus(results) != PGRES_COMMAND_OK)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ SetResultVariables(results, false);
+ ClearOrSaveResult(results);
+ return false;
+ }
+ PQclear(results);
+
+ results = PQdescribePrepared(pset.db, "");
+ OK = AcceptResult(results) &&
+ (PQresultStatus(results) == PGRES_COMMAND_OK);
+ if (OK && results)
+ {
+ if (PQnfields(results) > 0)
+ {
+ PQExpBufferData buf;
+ int i;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT name AS \"%s\", pg_catalog.format_type(tp, tpm) AS \"%s\"\n"
+ "FROM (VALUES ",
+ gettext_noop("Column"),
+ gettext_noop("Type"));
+
+ for (i = 0; i < PQnfields(results); i++)
+ {
+ const char *name;
+ char *escname;
+
+ if (i > 0)
+ appendPQExpBufferStr(&buf, ",");
+
+ name = PQfname(results, i);
+ escname = PQescapeLiteral(pset.db, name, strlen(name));
+
+ if (escname == NULL)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ PQclear(results);
+ termPQExpBuffer(&buf);
+ return false;
+ }
+
+ appendPQExpBuffer(&buf, "(%s, '%u'::pg_catalog.oid, %d)",
+ escname,
+ PQftype(results, i),
+ PQfmod(results, i));
+
+ PQfreemem(escname);
+ }
+
+ appendPQExpBufferStr(&buf, ") s(name, tp, tpm)");
+ PQclear(results);
+
+ results = PQexec(pset.db, buf.data);
+ OK = AcceptResult(results);
+
+ if (pset.timing)
+ {
+ INSTR_TIME_SET_CURRENT(after);
+ INSTR_TIME_SUBTRACT(after, before);
+ *elapsed_msec += INSTR_TIME_GET_MILLISEC(after);
+ }
+
+ if (OK && results)
+ OK = PrintQueryResults(results);
+
+ termPQExpBuffer(&buf);
+ }
+ else
+ fprintf(pset.queryFout,
+ _("The command has no result, or the result has no columns.\n"));
+ }
+
+ SetResultVariables(results, OK);
+ ClearOrSaveResult(results);
+
+ return OK;
+}
+
+
+/*
+ * ExecQueryUsingCursor: run a SELECT-like query using a cursor
+ *
+ * This feature allows result sets larger than RAM to be dealt with.
+ *
+ * Returns true if the query executed successfully, false otherwise.
+ *
+ * If pset.timing is on, total query time (exclusive of result-printing) is
+ * stored into *elapsed_msec.
+ */
+static bool
+ExecQueryUsingCursor(const char *query, double *elapsed_msec)
+{
+ bool OK = true;
+ PGresult *results;
+ PQExpBufferData buf;
+ printQueryOpt my_popt = pset.popt;
+ FILE *fout;
+ bool is_pipe;
+ bool is_pager = false;
+ bool started_txn = false;
+ int64 total_tuples = 0;
+ int ntuples;
+ int fetch_count;
+ char fetch_cmd[64];
+ instr_time before,
+ after;
+ int flush_error;
+
+ *elapsed_msec = 0;
+
+ /* initialize print options for partial table output */
+ my_popt.topt.start_table = true;
+ my_popt.topt.stop_table = false;
+ my_popt.topt.prior_records = 0;
+
+ if (pset.timing)
+ INSTR_TIME_SET_CURRENT(before);
+
+ /* if we're not in a transaction, start one */
+ if (PQtransactionStatus(pset.db) == PQTRANS_IDLE)
+ {
+ results = PQexec(pset.db, "BEGIN");
+ OK = AcceptResult(results) &&
+ (PQresultStatus(results) == PGRES_COMMAND_OK);
+ ClearOrSaveResult(results);
+ if (!OK)
+ return false;
+ started_txn = true;
+ }
+
+ /* Send DECLARE CURSOR */
+ initPQExpBuffer(&buf);
+ appendPQExpBuffer(&buf, "DECLARE _psql_cursor NO SCROLL CURSOR FOR\n%s",
+ query);
+
+ results = PQexec(pset.db, buf.data);
+ OK = AcceptResult(results) &&
+ (PQresultStatus(results) == PGRES_COMMAND_OK);
+ if (!OK)
+ SetResultVariables(results, OK);
+ ClearOrSaveResult(results);
+ termPQExpBuffer(&buf);
+ if (!OK)
+ goto cleanup;
+
+ if (pset.timing)
+ {
+ INSTR_TIME_SET_CURRENT(after);
+ INSTR_TIME_SUBTRACT(after, before);
+ *elapsed_msec += INSTR_TIME_GET_MILLISEC(after);
+ }
+
+ /*
+ * In \gset mode, we force the fetch count to be 2, so that we will throw
+ * the appropriate error if the query returns more than one row.
+ */
+ if (pset.gset_prefix)
+ fetch_count = 2;
+ else
+ fetch_count = pset.fetch_count;
+
+ snprintf(fetch_cmd, sizeof(fetch_cmd),
+ "FETCH FORWARD %d FROM _psql_cursor",
+ fetch_count);
+
+ /* prepare to write output to \g argument, if any */
+ if (pset.gfname)
+ {
+ if (!openQueryOutputFile(pset.gfname, &fout, &is_pipe))
+ {
+ OK = false;
+ goto cleanup;
+ }
+ if (is_pipe)
+ disable_sigpipe_trap();
+ }
+ else
+ {
+ fout = pset.queryFout;
+ is_pipe = false; /* doesn't matter */
+ }
+
+ /* clear any pre-existing error indication on the output stream */
+ clearerr(fout);
+
+ for (;;)
+ {
+ if (pset.timing)
+ INSTR_TIME_SET_CURRENT(before);
+
+ /* get fetch_count tuples at a time */
+ results = PQexec(pset.db, fetch_cmd);
+
+ if (pset.timing)
+ {
+ INSTR_TIME_SET_CURRENT(after);
+ INSTR_TIME_SUBTRACT(after, before);
+ *elapsed_msec += INSTR_TIME_GET_MILLISEC(after);
+ }
+
+ if (PQresultStatus(results) != PGRES_TUPLES_OK)
+ {
+ /* shut down pager before printing error message */
+ if (is_pager)
+ {
+ ClosePager(fout);
+ is_pager = false;
+ }
+
+ OK = AcceptResult(results);
+ Assert(!OK);
+ SetResultVariables(results, OK);
+ ClearOrSaveResult(results);
+ break;
+ }
+
+ if (pset.gset_prefix)
+ {
+ /* StoreQueryTuple will complain if not exactly one row */
+ OK = StoreQueryTuple(results);
+ ClearOrSaveResult(results);
+ break;
+ }
+
+ /*
+ * Note we do not deal with \gdesc, \gexec or \crosstabview modes here
+ */
+
+ ntuples = PQntuples(results);
+ total_tuples += ntuples;
+
+ if (ntuples < fetch_count)
+ {
+ /* this is the last result set, so allow footer decoration */
+ my_popt.topt.stop_table = true;
+ }
+ else if (fout == stdout && !is_pager)
+ {
+ /*
+ * If query requires multiple result sets, hack to ensure that
+ * only one pager instance is used for the whole mess
+ */
+ fout = PageOutput(INT_MAX, &(my_popt.topt));
+ is_pager = true;
+ }
+
+ printQuery(results, &my_popt, fout, is_pager, pset.logfile);
+
+ ClearOrSaveResult(results);
+
+ /* after the first result set, disallow header decoration */
+ my_popt.topt.start_table = false;
+ my_popt.topt.prior_records += ntuples;
+
+ /*
+ * Make sure to flush the output stream, so intermediate results are
+ * visible to the client immediately. We check the results because if
+ * the pager dies/exits/etc, there's no sense throwing more data at
+ * it.
+ */
+ flush_error = fflush(fout);
+
+ /*
+ * Check if we are at the end, if a cancel was pressed, or if there
+ * were any errors either trying to flush out the results, or more
+ * generally on the output stream at all. If we hit any errors
+ * writing things to the stream, we presume $PAGER has disappeared and
+ * stop bothering to pull down more data.
+ */
+ if (ntuples < fetch_count || cancel_pressed || flush_error ||
+ ferror(fout))
+ break;
+ }
+
+ if (pset.gfname)
+ {
+ /* close \g argument file/pipe */
+ if (is_pipe)
+ {
+ pclose(fout);
+ restore_sigpipe_trap();
+ }
+ else
+ fclose(fout);
+ }
+ else if (is_pager)
+ {
+ /* close transient pager */
+ ClosePager(fout);
+ }
+
+ if (OK)
+ {
+ /*
+ * We don't have a PGresult here, and even if we did it wouldn't have
+ * the right row count, so fake SetResultVariables(). In error cases,
+ * we already set the result variables above.
+ */
+ char buf[32];
+
+ SetVariable(pset.vars, "ERROR", "false");
+ SetVariable(pset.vars, "SQLSTATE", "00000");
+ snprintf(buf, sizeof(buf), INT64_FORMAT, total_tuples);
+ SetVariable(pset.vars, "ROW_COUNT", buf);
+ }
+
+cleanup:
+ if (pset.timing)
+ INSTR_TIME_SET_CURRENT(before);
+
+ /*
+ * We try to close the cursor on either success or failure, but on failure
+ * ignore the result (it's probably just a bleat about being in an aborted
+ * transaction)
+ */
+ results = PQexec(pset.db, "CLOSE _psql_cursor");
+ if (OK)
+ {
+ OK = AcceptResult(results) &&
+ (PQresultStatus(results) == PGRES_COMMAND_OK);
+ ClearOrSaveResult(results);
+ }
+ else
+ PQclear(results);
+
+ if (started_txn)
+ {
+ results = PQexec(pset.db, OK ? "COMMIT" : "ROLLBACK");
+ OK &= AcceptResult(results) &&
+ (PQresultStatus(results) == PGRES_COMMAND_OK);
+ ClearOrSaveResult(results);
+ }
+
+ if (pset.timing)
+ {
+ INSTR_TIME_SET_CURRENT(after);
+ INSTR_TIME_SUBTRACT(after, before);
+ *elapsed_msec += INSTR_TIME_GET_MILLISEC(after);
+ }
+
+ return OK;
+}
+
+
+/*
+ * Advance the given char pointer over white space and SQL comments.
+ */
+static const char *
+skip_white_space(const char *query)
+{
+ int cnestlevel = 0; /* slash-star comment nest level */
+
+ while (*query)
+ {
+ int mblen = PQmblenBounded(query, pset.encoding);
+
+ /*
+ * Note: we assume the encoding is a superset of ASCII, so that for
+ * example "query[0] == '/'" is meaningful. However, we do NOT assume
+ * that the second and subsequent bytes of a multibyte character
+ * couldn't look like ASCII characters; so it is critical to advance
+ * by mblen, not 1, whenever we haven't exactly identified the
+ * character we are skipping over.
+ */
+ if (isspace((unsigned char) *query))
+ query += mblen;
+ else if (query[0] == '/' && query[1] == '*')
+ {
+ cnestlevel++;
+ query += 2;
+ }
+ else if (cnestlevel > 0 && query[0] == '*' && query[1] == '/')
+ {
+ cnestlevel--;
+ query += 2;
+ }
+ else if (cnestlevel == 0 && query[0] == '-' && query[1] == '-')
+ {
+ query += 2;
+
+ /*
+ * We have to skip to end of line since any slash-star inside the
+ * -- comment does NOT start a slash-star comment.
+ */
+ while (*query)
+ {
+ if (*query == '\n')
+ {
+ query++;
+ break;
+ }
+ query += PQmblenBounded(query, pset.encoding);
+ }
+ }
+ else if (cnestlevel > 0)
+ query += mblen;
+ else
+ break; /* found first token */
+ }
+
+ return query;
+}
+
+
+/*
+ * Check whether a command is one of those for which we should NOT start
+ * a new transaction block (ie, send a preceding BEGIN).
+ *
+ * These include the transaction control statements themselves, plus
+ * certain statements that the backend disallows inside transaction blocks.
+ */
+static bool
+command_no_begin(const char *query)
+{
+ int wordlen;
+
+ /*
+ * First we must advance over any whitespace and comments.
+ */
+ query = skip_white_space(query);
+
+ /*
+ * Check word length (since "beginx" is not "begin").
+ */
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ /*
+ * Transaction control commands. These should include every keyword that
+ * gives rise to a TransactionStmt in the backend grammar, except for the
+ * savepoint-related commands.
+ *
+ * (We assume that START must be START TRANSACTION, since there is
+ * presently no other "START foo" command.)
+ */
+ if (wordlen == 5 && pg_strncasecmp(query, "abort", 5) == 0)
+ return true;
+ if (wordlen == 5 && pg_strncasecmp(query, "begin", 5) == 0)
+ return true;
+ if (wordlen == 5 && pg_strncasecmp(query, "start", 5) == 0)
+ return true;
+ if (wordlen == 6 && pg_strncasecmp(query, "commit", 6) == 0)
+ return true;
+ if (wordlen == 3 && pg_strncasecmp(query, "end", 3) == 0)
+ return true;
+ if (wordlen == 8 && pg_strncasecmp(query, "rollback", 8) == 0)
+ return true;
+ if (wordlen == 7 && pg_strncasecmp(query, "prepare", 7) == 0)
+ {
+ /* PREPARE TRANSACTION is a TC command, PREPARE foo is not */
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ if (wordlen == 11 && pg_strncasecmp(query, "transaction", 11) == 0)
+ return true;
+ return false;
+ }
+
+ /*
+ * Commands not allowed within transactions. The statements checked for
+ * here should be exactly those that call PreventInTransactionBlock() in
+ * the backend.
+ */
+ if (wordlen == 6 && pg_strncasecmp(query, "vacuum", 6) == 0)
+ return true;
+ if (wordlen == 7 && pg_strncasecmp(query, "cluster", 7) == 0)
+ {
+ /* CLUSTER with any arguments is allowed in transactions */
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ if (isalpha((unsigned char) query[0]))
+ return false; /* has additional words */
+ return true; /* it's CLUSTER without arguments */
+ }
+
+ if (wordlen == 6 && pg_strncasecmp(query, "create", 6) == 0)
+ {
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0)
+ return true;
+ if (wordlen == 10 && pg_strncasecmp(query, "tablespace", 10) == 0)
+ return true;
+
+ /* CREATE [UNIQUE] INDEX CONCURRENTLY isn't allowed in xacts */
+ if (wordlen == 6 && pg_strncasecmp(query, "unique", 6) == 0)
+ {
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+ }
+
+ if (wordlen == 5 && pg_strncasecmp(query, "index", 5) == 0)
+ {
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ if (wordlen == 12 && pg_strncasecmp(query, "concurrently", 12) == 0)
+ return true;
+ }
+
+ return false;
+ }
+
+ if (wordlen == 5 && pg_strncasecmp(query, "alter", 5) == 0)
+ {
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ /* ALTER SYSTEM isn't allowed in xacts */
+ if (wordlen == 6 && pg_strncasecmp(query, "system", 6) == 0)
+ return true;
+
+ return false;
+ }
+
+ /*
+ * Note: these tests will match DROP SYSTEM and REINDEX TABLESPACE, which
+ * aren't really valid commands so we don't care much. The other four
+ * possible matches are correct.
+ */
+ if ((wordlen == 4 && pg_strncasecmp(query, "drop", 4) == 0) ||
+ (wordlen == 7 && pg_strncasecmp(query, "reindex", 7) == 0))
+ {
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ if (wordlen == 8 && pg_strncasecmp(query, "database", 8) == 0)
+ return true;
+ if (wordlen == 6 && pg_strncasecmp(query, "system", 6) == 0)
+ return true;
+ if (wordlen == 10 && pg_strncasecmp(query, "tablespace", 10) == 0)
+ return true;
+ if (wordlen == 5 && (pg_strncasecmp(query, "index", 5) == 0 ||
+ pg_strncasecmp(query, "table", 5) == 0))
+ {
+ query += wordlen;
+ query = skip_white_space(query);
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ /*
+ * REINDEX [ TABLE | INDEX ] CONCURRENTLY are not allowed in
+ * xacts.
+ */
+ if (wordlen == 12 && pg_strncasecmp(query, "concurrently", 12) == 0)
+ return true;
+ }
+
+ /* DROP INDEX CONCURRENTLY isn't allowed in xacts */
+ if (wordlen == 5 && pg_strncasecmp(query, "index", 5) == 0)
+ {
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ if (wordlen == 12 && pg_strncasecmp(query, "concurrently", 12) == 0)
+ return true;
+
+ return false;
+ }
+
+ return false;
+ }
+
+ /* DISCARD ALL isn't allowed in xacts, but other variants are allowed. */
+ if (wordlen == 7 && pg_strncasecmp(query, "discard", 7) == 0)
+ {
+ query += wordlen;
+
+ query = skip_white_space(query);
+
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ if (wordlen == 3 && pg_strncasecmp(query, "all", 3) == 0)
+ return true;
+ return false;
+ }
+
+ return false;
+}
+
+
+/*
+ * Check whether the specified command is a SELECT (or VALUES).
+ */
+static bool
+is_select_command(const char *query)
+{
+ int wordlen;
+
+ /*
+ * First advance over any whitespace, comments and left parentheses.
+ */
+ for (;;)
+ {
+ query = skip_white_space(query);
+ if (query[0] == '(')
+ query++;
+ else
+ break;
+ }
+
+ /*
+ * Check word length (since "selectx" is not "select").
+ */
+ wordlen = 0;
+ while (isalpha((unsigned char) query[wordlen]))
+ wordlen += PQmblenBounded(&query[wordlen], pset.encoding);
+
+ if (wordlen == 6 && pg_strncasecmp(query, "select", 6) == 0)
+ return true;
+
+ if (wordlen == 6 && pg_strncasecmp(query, "values", 6) == 0)
+ return true;
+
+ return false;
+}
+
+
+/*
+ * Test if the current user is a database superuser.
+ *
+ * Note: this will correctly detect superuserness only with a protocol-3.0
+ * or newer backend; otherwise it will always say "false".
+ */
+bool
+is_superuser(void)
+{
+ const char *val;
+
+ if (!pset.db)
+ return false;
+
+ val = PQparameterStatus(pset.db, "is_superuser");
+
+ if (val && strcmp(val, "on") == 0)
+ return true;
+
+ return false;
+}
+
+
+/*
+ * Test if the current session uses standard string literals.
+ *
+ * Note: With a pre-protocol-3.0 connection this will always say "false",
+ * which should be the right answer.
+ */
+bool
+standard_strings(void)
+{
+ const char *val;
+
+ if (!pset.db)
+ return false;
+
+ val = PQparameterStatus(pset.db, "standard_conforming_strings");
+
+ if (val && strcmp(val, "on") == 0)
+ return true;
+
+ return false;
+}
+
+
+/*
+ * Return the session user of the current connection.
+ *
+ * Note: this will correctly detect the session user only with a
+ * protocol-3.0 or newer backend; otherwise it will return the
+ * connection user.
+ */
+const char *
+session_username(void)
+{
+ const char *val;
+
+ if (!pset.db)
+ return NULL;
+
+ val = PQparameterStatus(pset.db, "session_authorization");
+ if (val)
+ return val;
+ else
+ return PQuser(pset.db);
+}
+
+
+/* expand_tilde
+ *
+ * substitute '~' with HOME or '~username' with username's home dir
+ *
+ */
+void
+expand_tilde(char **filename)
+{
+ if (!filename || !(*filename))
+ return;
+
+ /*
+ * WIN32 doesn't use tilde expansion for file names. Also, it uses tilde
+ * for short versions of long file names, though the tilde is usually
+ * toward the end, not at the beginning.
+ */
+#ifndef WIN32
+
+ /* try tilde expansion */
+ if (**filename == '~')
+ {
+ char *fn;
+ char oldp,
+ *p;
+ struct passwd *pw;
+ char home[MAXPGPATH];
+
+ fn = *filename;
+ *home = '\0';
+
+ p = fn + 1;
+ while (*p != '/' && *p != '\0')
+ p++;
+
+ oldp = *p;
+ *p = '\0';
+
+ if (*(fn + 1) == '\0')
+ get_home_path(home); /* ~ or ~/ only */
+ else if ((pw = getpwnam(fn + 1)) != NULL)
+ strlcpy(home, pw->pw_dir, sizeof(home)); /* ~user */
+
+ *p = oldp;
+ if (strlen(home) != 0)
+ {
+ char *newfn;
+
+ newfn = psprintf("%s%s", home, p);
+ free(fn);
+ *filename = newfn;
+ }
+ }
+#endif
+}
+
+/*
+ * Checks if connection string starts with either of the valid URI prefix
+ * designators.
+ *
+ * Returns the URI prefix length, 0 if the string doesn't contain a URI prefix.
+ *
+ * XXX This is a duplicate of the eponymous libpq function.
+ */
+static int
+uri_prefix_length(const char *connstr)
+{
+ /* The connection URI must start with either of the following designators: */
+ static const char uri_designator[] = "postgresql://";
+ static const char short_uri_designator[] = "postgres://";
+
+ if (strncmp(connstr, uri_designator,
+ sizeof(uri_designator) - 1) == 0)
+ return sizeof(uri_designator) - 1;
+
+ if (strncmp(connstr, short_uri_designator,
+ sizeof(short_uri_designator) - 1) == 0)
+ return sizeof(short_uri_designator) - 1;
+
+ return 0;
+}
+
+/*
+ * Recognized connection string either starts with a valid URI prefix or
+ * contains a "=" in it.
+ *
+ * Must be consistent with parse_connection_string: anything for which this
+ * returns true should at least look like it's parseable by that routine.
+ *
+ * XXX This is a duplicate of the eponymous libpq function.
+ */
+bool
+recognized_connection_string(const char *connstr)
+{
+ return uri_prefix_length(connstr) != 0 || strchr(connstr, '=') != NULL;
+}
diff --git a/src/bin/psql/common.h b/src/bin/psql/common.h
new file mode 100644
index 0000000..ec4e83c
--- /dev/null
+++ b/src/bin/psql/common.h
@@ -0,0 +1,44 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/common.h
+ */
+#ifndef COMMON_H
+#define COMMON_H
+
+#include <setjmp.h>
+
+#include "fe_utils/print.h"
+#include "fe_utils/psqlscan.h"
+#include "libpq-fe.h"
+
+extern bool openQueryOutputFile(const char *fname, FILE **fout, bool *is_pipe);
+extern bool setQFout(const char *fname);
+
+extern char *psql_get_variable(const char *varname, PsqlScanQuoteType quote,
+ void *passthrough);
+
+extern void NoticeProcessor(void *arg, const char *message);
+
+extern volatile bool sigint_interrupt_enabled;
+
+extern sigjmp_buf sigint_interrupt_jmp;
+
+extern void psql_setup_cancel_handler(void);
+
+extern PGresult *PSQLexec(const char *query);
+extern int PSQLexecWatch(const char *query, const printQueryOpt *opt);
+
+extern bool SendQuery(const char *query);
+
+extern bool is_superuser(void);
+extern bool standard_strings(void);
+extern const char *session_username(void);
+
+extern void expand_tilde(char **filename);
+
+extern bool recognized_connection_string(const char *connstr);
+
+#endif /* COMMON_H */
diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c
new file mode 100644
index 0000000..f59db8d
--- /dev/null
+++ b/src/bin/psql/copy.c
@@ -0,0 +1,712 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/copy.c
+ */
+#include "postgres_fe.h"
+
+#include <signal.h>
+#include <sys/stat.h>
+#ifndef WIN32
+#include <unistd.h> /* for isatty */
+#else
+#include <io.h> /* I think */
+#endif
+
+#include "common.h"
+#include "common/logging.h"
+#include "copy.h"
+#include "libpq-fe.h"
+#include "pqexpbuffer.h"
+#include "prompt.h"
+#include "settings.h"
+#include "stringutils.h"
+
+/*
+ * parse_slash_copy
+ * -- parses \copy command line
+ *
+ * The documented syntax is:
+ * \copy tablename [(columnlist)] from|to filename [options]
+ * \copy ( query stmt ) to filename [options]
+ *
+ * where 'filename' can be one of the following:
+ * '<file path>' | PROGRAM '<command>' | stdin | stdout | pstdout | pstdout
+ * and 'query' can be one of the following:
+ * SELECT | UPDATE | INSERT | DELETE
+ *
+ * An undocumented fact is that you can still write BINARY before the
+ * tablename; this is a hangover from the pre-7.3 syntax. The options
+ * syntax varies across backend versions, but we avoid all that mess
+ * by just transmitting the stuff after the filename literally.
+ *
+ * table name can be double-quoted and can have a schema part.
+ * column names can be double-quoted.
+ * filename can be single-quoted like SQL literals.
+ * command must be single-quoted like SQL literals.
+ *
+ * returns a malloc'ed structure with the options, or NULL on parsing error
+ */
+
+struct copy_options
+{
+ char *before_tofrom; /* COPY string before TO/FROM */
+ char *after_tofrom; /* COPY string after TO/FROM filename */
+ char *file; /* NULL = stdin/stdout */
+ bool program; /* is 'file' a program to popen? */
+ bool psql_inout; /* true = use psql stdin/stdout */
+ bool from; /* true = FROM, false = TO */
+};
+
+
+static void
+free_copy_options(struct copy_options *ptr)
+{
+ if (!ptr)
+ return;
+ free(ptr->before_tofrom);
+ free(ptr->after_tofrom);
+ free(ptr->file);
+ free(ptr);
+}
+
+
+/* concatenate "more" onto "var", freeing the original value of *var */
+static void
+xstrcat(char **var, const char *more)
+{
+ char *newvar;
+
+ newvar = psprintf("%s%s", *var, more);
+ free(*var);
+ *var = newvar;
+}
+
+
+static struct copy_options *
+parse_slash_copy(const char *args)
+{
+ struct copy_options *result;
+ char *token;
+ const char *whitespace = " \t\n\r";
+ char nonstd_backslash = standard_strings() ? 0 : '\\';
+
+ if (!args)
+ {
+ pg_log_error("\\copy: arguments required");
+ return NULL;
+ }
+
+ result = pg_malloc0(sizeof(struct copy_options));
+
+ result->before_tofrom = pg_strdup(""); /* initialize for appending */
+
+ token = strtokx(args, whitespace, ".,()", "\"",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+
+ /* The following can be removed when we drop 7.3 syntax support */
+ if (pg_strcasecmp(token, "binary") == 0)
+ {
+ xstrcat(&result->before_tofrom, token);
+ token = strtokx(NULL, whitespace, ".,()", "\"",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+ }
+
+ /* Handle COPY (query) case */
+ if (token[0] == '(')
+ {
+ int parens = 1;
+
+ while (parens > 0)
+ {
+ xstrcat(&result->before_tofrom, " ");
+ xstrcat(&result->before_tofrom, token);
+ token = strtokx(NULL, whitespace, "()", "\"'",
+ nonstd_backslash, true, false, pset.encoding);
+ if (!token)
+ goto error;
+ if (token[0] == '(')
+ parens++;
+ else if (token[0] == ')')
+ parens--;
+ }
+ }
+
+ xstrcat(&result->before_tofrom, " ");
+ xstrcat(&result->before_tofrom, token);
+ token = strtokx(NULL, whitespace, ".,()", "\"",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+
+ /*
+ * strtokx() will not have returned a multi-character token starting with
+ * '.', so we don't need strcmp() here. Likewise for '(', etc, below.
+ */
+ if (token[0] == '.')
+ {
+ /* handle schema . table */
+ xstrcat(&result->before_tofrom, token);
+ token = strtokx(NULL, whitespace, ".,()", "\"",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+ xstrcat(&result->before_tofrom, token);
+ token = strtokx(NULL, whitespace, ".,()", "\"",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+ }
+
+ if (token[0] == '(')
+ {
+ /* handle parenthesized column list */
+ for (;;)
+ {
+ xstrcat(&result->before_tofrom, " ");
+ xstrcat(&result->before_tofrom, token);
+ token = strtokx(NULL, whitespace, "()", "\"",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+ if (token[0] == ')')
+ break;
+ }
+ xstrcat(&result->before_tofrom, " ");
+ xstrcat(&result->before_tofrom, token);
+ token = strtokx(NULL, whitespace, ".,()", "\"",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+ }
+
+ if (pg_strcasecmp(token, "from") == 0)
+ result->from = true;
+ else if (pg_strcasecmp(token, "to") == 0)
+ result->from = false;
+ else
+ goto error;
+
+ /* { 'filename' | PROGRAM 'command' | STDIN | STDOUT | PSTDIN | PSTDOUT } */
+ token = strtokx(NULL, whitespace, ";", "'",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+
+ if (pg_strcasecmp(token, "program") == 0)
+ {
+ int toklen;
+
+ token = strtokx(NULL, whitespace, ";", "'",
+ 0, false, false, pset.encoding);
+ if (!token)
+ goto error;
+
+ /*
+ * The shell command must be quoted. This isn't fool-proof, but
+ * catches most quoting errors.
+ */
+ toklen = strlen(token);
+ if (token[0] != '\'' || toklen < 2 || token[toklen - 1] != '\'')
+ goto error;
+
+ strip_quotes(token, '\'', 0, pset.encoding);
+
+ result->program = true;
+ result->file = pg_strdup(token);
+ }
+ else if (pg_strcasecmp(token, "stdin") == 0 ||
+ pg_strcasecmp(token, "stdout") == 0)
+ {
+ result->file = NULL;
+ }
+ else if (pg_strcasecmp(token, "pstdin") == 0 ||
+ pg_strcasecmp(token, "pstdout") == 0)
+ {
+ result->psql_inout = true;
+ result->file = NULL;
+ }
+ else
+ {
+ /* filename can be optionally quoted */
+ strip_quotes(token, '\'', 0, pset.encoding);
+ result->file = pg_strdup(token);
+ expand_tilde(&result->file);
+ }
+
+ /* Collect the rest of the line (COPY options) */
+ token = strtokx(NULL, "", NULL, NULL,
+ 0, false, false, pset.encoding);
+ if (token)
+ result->after_tofrom = pg_strdup(token);
+
+ return result;
+
+error:
+ if (token)
+ pg_log_error("\\copy: parse error at \"%s\"", token);
+ else
+ pg_log_error("\\copy: parse error at end of line");
+ free_copy_options(result);
+
+ return NULL;
+}
+
+
+/*
+ * Execute a \copy command (frontend copy). We have to open a file (or execute
+ * a command), then submit a COPY query to the backend and either feed it data
+ * from the file or route its response into the file.
+ */
+bool
+do_copy(const char *args)
+{
+ PQExpBufferData query;
+ FILE *copystream;
+ struct copy_options *options;
+ bool success;
+
+ /* parse options */
+ options = parse_slash_copy(args);
+
+ if (!options)
+ return false;
+
+ /* prepare to read or write the target file */
+ if (options->file && !options->program)
+ canonicalize_path(options->file);
+
+ if (options->from)
+ {
+ if (options->file)
+ {
+ if (options->program)
+ {
+ fflush(stdout);
+ fflush(stderr);
+ errno = 0;
+ copystream = popen(options->file, PG_BINARY_R);
+ }
+ else
+ copystream = fopen(options->file, PG_BINARY_R);
+ }
+ else if (!options->psql_inout)
+ copystream = pset.cur_cmd_source;
+ else
+ copystream = stdin;
+ }
+ else
+ {
+ if (options->file)
+ {
+ if (options->program)
+ {
+ fflush(stdout);
+ fflush(stderr);
+ errno = 0;
+ disable_sigpipe_trap();
+ copystream = popen(options->file, PG_BINARY_W);
+ }
+ else
+ copystream = fopen(options->file, PG_BINARY_W);
+ }
+ else if (!options->psql_inout)
+ copystream = pset.queryFout;
+ else
+ copystream = stdout;
+ }
+
+ if (!copystream)
+ {
+ if (options->program)
+ pg_log_error("could not execute command \"%s\": %m",
+ options->file);
+ else
+ pg_log_error("%s: %m",
+ options->file);
+ free_copy_options(options);
+ return false;
+ }
+
+ if (!options->program)
+ {
+ struct stat st;
+ int result;
+
+ /* make sure the specified file is not a directory */
+ if ((result = fstat(fileno(copystream), &st)) < 0)
+ pg_log_error("could not stat file \"%s\": %m",
+ options->file);
+
+ if (result == 0 && S_ISDIR(st.st_mode))
+ pg_log_error("%s: cannot copy from/to a directory",
+ options->file);
+
+ if (result < 0 || S_ISDIR(st.st_mode))
+ {
+ fclose(copystream);
+ free_copy_options(options);
+ return false;
+ }
+ }
+
+ /* build the command we will send to the backend */
+ initPQExpBuffer(&query);
+ printfPQExpBuffer(&query, "COPY ");
+ appendPQExpBufferStr(&query, options->before_tofrom);
+ if (options->from)
+ appendPQExpBufferStr(&query, " FROM STDIN ");
+ else
+ appendPQExpBufferStr(&query, " TO STDOUT ");
+ if (options->after_tofrom)
+ appendPQExpBufferStr(&query, options->after_tofrom);
+
+ /* run it like a user command, but with copystream as data source/sink */
+ pset.copyStream = copystream;
+ success = SendQuery(query.data);
+ pset.copyStream = NULL;
+ termPQExpBuffer(&query);
+
+ if (options->file != NULL)
+ {
+ if (options->program)
+ {
+ int pclose_rc = pclose(copystream);
+
+ if (pclose_rc != 0)
+ {
+ if (pclose_rc < 0)
+ pg_log_error("could not close pipe to external command: %m");
+ else
+ {
+ char *reason = wait_result_to_str(pclose_rc);
+
+ pg_log_error("%s: %s", options->file,
+ reason ? reason : "");
+ if (reason)
+ free(reason);
+ }
+ success = false;
+ }
+ restore_sigpipe_trap();
+ }
+ else
+ {
+ if (fclose(copystream) != 0)
+ {
+ pg_log_error("%s: %m", options->file);
+ success = false;
+ }
+ }
+ }
+ free_copy_options(options);
+ return success;
+}
+
+
+/*
+ * Functions for handling COPY IN/OUT data transfer.
+ *
+ * If you want to use COPY TO STDOUT/FROM STDIN in your application,
+ * this is the code to steal ;)
+ */
+
+/*
+ * handleCopyOut
+ * receives data as a result of a COPY ... TO STDOUT command
+ *
+ * conn should be a database connection that you just issued COPY TO on
+ * and got back a PGRES_COPY_OUT result.
+ *
+ * copystream is the file stream for the data to go to.
+ * copystream can be NULL to eat the data without writing it anywhere.
+ *
+ * The final status for the COPY is returned into *res (but note
+ * we already reported the error, if it's not a success result).
+ *
+ * result is true if successful, false if not.
+ */
+bool
+handleCopyOut(PGconn *conn, FILE *copystream, PGresult **res)
+{
+ bool OK = true;
+ char *buf;
+ int ret;
+
+ for (;;)
+ {
+ ret = PQgetCopyData(conn, &buf, 0);
+
+ if (ret < 0)
+ break; /* done or server/connection error */
+
+ if (buf)
+ {
+ if (OK && copystream && fwrite(buf, 1, ret, copystream) != ret)
+ {
+ pg_log_error("could not write COPY data: %m");
+ /* complain only once, keep reading data from server */
+ OK = false;
+ }
+ PQfreemem(buf);
+ }
+ }
+
+ if (OK && copystream && fflush(copystream))
+ {
+ pg_log_error("could not write COPY data: %m");
+ OK = false;
+ }
+
+ if (ret == -2)
+ {
+ pg_log_error("COPY data transfer failed: %s", PQerrorMessage(conn));
+ OK = false;
+ }
+
+ /*
+ * Check command status and return to normal libpq state.
+ *
+ * If for some reason libpq is still reporting PGRES_COPY_OUT state, we
+ * would like to forcibly exit that state, since our caller would be
+ * unable to distinguish that situation from reaching the next COPY in a
+ * command string that happened to contain two consecutive COPY TO STDOUT
+ * commands. However, libpq provides no API for doing that, and in
+ * principle it's a libpq bug anyway if PQgetCopyData() returns -1 or -2
+ * but hasn't exited COPY_OUT state internally. So we ignore the
+ * possibility here.
+ */
+ *res = PQgetResult(conn);
+ if (PQresultStatus(*res) != PGRES_COMMAND_OK)
+ {
+ pg_log_info("%s", PQerrorMessage(conn));
+ OK = false;
+ }
+
+ return OK;
+}
+
+/*
+ * handleCopyIn
+ * sends data to complete a COPY ... FROM STDIN command
+ *
+ * conn should be a database connection that you just issued COPY FROM on
+ * and got back a PGRES_COPY_IN result.
+ * copystream is the file stream to read the data from.
+ * isbinary can be set from PQbinaryTuples().
+ * The final status for the COPY is returned into *res (but note
+ * we already reported the error, if it's not a success result).
+ *
+ * result is true if successful, false if not.
+ */
+
+/* read chunk size for COPY IN - size is not critical */
+#define COPYBUFSIZ 8192
+
+bool
+handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary, PGresult **res)
+{
+ bool OK;
+ char buf[COPYBUFSIZ];
+ bool showprompt;
+
+ /*
+ * Establish longjmp destination for exiting from wait-for-input. (This is
+ * only effective while sigint_interrupt_enabled is TRUE.)
+ */
+ if (sigsetjmp(sigint_interrupt_jmp, 1) != 0)
+ {
+ /* got here with longjmp */
+
+ /* Terminate data transfer */
+ PQputCopyEnd(conn,
+ (PQprotocolVersion(conn) < 3) ? NULL :
+ _("canceled by user"));
+
+ OK = false;
+ goto copyin_cleanup;
+ }
+
+ /* Prompt if interactive input */
+ if (isatty(fileno(copystream)))
+ {
+ showprompt = true;
+ if (!pset.quiet)
+ puts(_("Enter data to be copied followed by a newline.\n"
+ "End with a backslash and a period on a line by itself, or an EOF signal."));
+ }
+ else
+ showprompt = false;
+
+ OK = true;
+
+ if (isbinary)
+ {
+ /* interactive input probably silly, but give one prompt anyway */
+ if (showprompt)
+ {
+ const char *prompt = get_prompt(PROMPT_COPY, NULL);
+
+ fputs(prompt, stdout);
+ fflush(stdout);
+ }
+
+ for (;;)
+ {
+ int buflen;
+
+ /* enable longjmp while waiting for input */
+ sigint_interrupt_enabled = true;
+
+ buflen = fread(buf, 1, COPYBUFSIZ, copystream);
+
+ sigint_interrupt_enabled = false;
+
+ if (buflen <= 0)
+ break;
+
+ if (PQputCopyData(conn, buf, buflen) <= 0)
+ {
+ OK = false;
+ break;
+ }
+ }
+ }
+ else
+ {
+ bool copydone = false;
+
+ while (!copydone)
+ { /* for each input line ... */
+ bool firstload;
+ bool linedone;
+
+ if (showprompt)
+ {
+ const char *prompt = get_prompt(PROMPT_COPY, NULL);
+
+ fputs(prompt, stdout);
+ fflush(stdout);
+ }
+
+ firstload = true;
+ linedone = false;
+
+ while (!linedone)
+ { /* for each bufferload in line ... */
+ int linelen;
+ char *fgresult;
+
+ /* enable longjmp while waiting for input */
+ sigint_interrupt_enabled = true;
+
+ fgresult = fgets(buf, sizeof(buf), copystream);
+
+ sigint_interrupt_enabled = false;
+
+ if (!fgresult)
+ {
+ copydone = true;
+ break;
+ }
+
+ linelen = strlen(buf);
+
+ /* current line is done? */
+ if (linelen > 0 && buf[linelen - 1] == '\n')
+ linedone = true;
+
+ /* check for EOF marker, but not on a partial line */
+ if (firstload)
+ {
+ /*
+ * This code erroneously assumes '\.' on a line alone
+ * inside a quoted CSV string terminates the \copy.
+ * https://www.postgresql.org/message-id/E1TdNVQ-0001ju-GO@wrigleys.postgresql.org
+ */
+ if (strcmp(buf, "\\.\n") == 0 ||
+ strcmp(buf, "\\.\r\n") == 0)
+ {
+ copydone = true;
+ break;
+ }
+
+ firstload = false;
+ }
+
+ if (PQputCopyData(conn, buf, linelen) <= 0)
+ {
+ OK = false;
+ copydone = true;
+ break;
+ }
+ }
+
+ if (copystream == pset.cur_cmd_source)
+ {
+ pset.lineno++;
+ pset.stmt_lineno++;
+ }
+ }
+ }
+
+ /* Check for read error */
+ if (ferror(copystream))
+ OK = false;
+
+ /*
+ * Terminate data transfer. We can't send an error message if we're using
+ * protocol version 2.
+ */
+ if (PQputCopyEnd(conn,
+ (OK || PQprotocolVersion(conn) < 3) ? NULL :
+ _("aborted because of read failure")) <= 0)
+ OK = false;
+
+copyin_cleanup:
+
+ /*
+ * Clear the EOF flag on the stream, in case copying ended due to an EOF
+ * signal. This allows an interactive TTY session to perform another COPY
+ * FROM STDIN later. (In non-STDIN cases, we're about to close the file
+ * anyway, so it doesn't matter.) Although we don't ever test the flag
+ * with feof(), some fread() implementations won't read more data if it's
+ * set. This also clears the error flag, but we already checked that.
+ */
+ clearerr(copystream);
+
+ /*
+ * Check command status and return to normal libpq state.
+ *
+ * We do not want to return with the status still PGRES_COPY_IN: our
+ * caller would be unable to distinguish that situation from reaching the
+ * next COPY in a command string that happened to contain two consecutive
+ * COPY FROM STDIN commands. We keep trying PQputCopyEnd() in the hope
+ * it'll work eventually. (What's actually likely to happen is that in
+ * attempting to flush the data, libpq will eventually realize that the
+ * connection is lost. But that's fine; it will get us out of COPY_IN
+ * state, which is what we need.)
+ */
+ while (*res = PQgetResult(conn), PQresultStatus(*res) == PGRES_COPY_IN)
+ {
+ OK = false;
+ PQclear(*res);
+ /* We can't send an error message if we're using protocol version 2 */
+ PQputCopyEnd(conn,
+ (PQprotocolVersion(conn) < 3) ? NULL :
+ _("trying to exit copy mode"));
+ }
+ if (PQresultStatus(*res) != PGRES_COMMAND_OK)
+ {
+ pg_log_info("%s", PQerrorMessage(conn));
+ OK = false;
+ }
+
+ return OK;
+}
diff --git a/src/bin/psql/copy.h b/src/bin/psql/copy.h
new file mode 100644
index 0000000..b2daf91
--- /dev/null
+++ b/src/bin/psql/copy.h
@@ -0,0 +1,24 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/copy.h
+ */
+#ifndef COPY_H
+#define COPY_H
+
+#include "libpq-fe.h"
+
+
+/* handler for \copy */
+extern bool do_copy(const char *args);
+
+/* lower level processors for copy in/out streams */
+
+extern bool handleCopyOut(PGconn *conn, FILE *copystream,
+ PGresult **res);
+extern bool handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary,
+ PGresult **res);
+
+#endif
diff --git a/src/bin/psql/create_help.pl b/src/bin/psql/create_help.pl
new file mode 100644
index 0000000..ee82e64
--- /dev/null
+++ b/src/bin/psql/create_help.pl
@@ -0,0 +1,218 @@
+#! /usr/bin/perl
+
+#################################################################
+# create_help.pl -- converts SGML docs to internal psql help
+#
+# Copyright (c) 2000-2020, PostgreSQL Global Development Group
+#
+# src/bin/psql/create_help.pl
+#################################################################
+
+#
+# This script automatically generates the help on SQL in psql from
+# the SGML docs. So far the format of the docs was consistent
+# enough that this worked, but this here is by no means an SGML
+# parser.
+#
+# Call: perl create_help.pl docdir sql_help
+# The name of the header file doesn't matter to this script, but it
+# sure does matter to the rest of the source.
+#
+
+use strict;
+use warnings;
+
+my $docdir = $ARGV[0] or die "$0: missing required argument: docdir\n";
+my $hfile = $ARGV[1] . '.h'
+ or die "$0: missing required argument: output file\n";
+my $cfile = $ARGV[1] . '.c';
+
+my $hfilebasename;
+if ($hfile =~ m!.*/([^/]+)$!)
+{
+ $hfilebasename = $1;
+}
+else
+{
+ $hfilebasename = $hfile;
+}
+
+my $define = $hfilebasename;
+$define =~ tr/a-z/A-Z/;
+$define =~ s/\W/_/g;
+
+opendir(DIR, $docdir)
+ or die "$0: could not open documentation source dir '$docdir': $!\n";
+open(my $hfile_handle, '>', $hfile)
+ or die "$0: could not open output file '$hfile': $!\n";
+open(my $cfile_handle, '>', $cfile)
+ or die "$0: could not open output file '$cfile': $!\n";
+
+print $hfile_handle "/*
+ * *** Do not change this file by hand. It is automatically
+ * *** generated from the DocBook documentation.
+ *
+ * generated by src/bin/psql/create_help.pl
+ *
+ */
+
+#ifndef $define
+#define $define
+
+#include \"pqexpbuffer.h\"
+
+struct _helpStruct
+{
+ const char *cmd; /* the command name */
+ const char *help; /* the help associated with it */
+ const char *docbook_id; /* DocBook XML id (for generating URL) */
+ void (*syntaxfunc)(PQExpBuffer); /* function that prints the syntax associated with it */
+ int nl_count; /* number of newlines in syntax (for pager) */
+};
+
+extern const struct _helpStruct QL_HELP[];
+";
+
+print $cfile_handle "/*
+ * *** Do not change this file by hand. It is automatically
+ * *** generated from the DocBook documentation.
+ *
+ * generated by src/bin/psql/create_help.pl
+ *
+ */
+
+#define N_(x) (x) /* gettext noop */
+
+#include \"postgres_fe.h\"
+#include \"$hfile\"
+
+";
+
+my $maxlen = 0;
+
+my %entries;
+
+foreach my $file (sort readdir DIR)
+{
+ my ($cmdid, @cmdnames, $cmddesc, $cmdsynopsis);
+ $file =~ /\.sgml$/ or next;
+
+ open(my $fh, '<', "$docdir/$file") or next;
+ my $filecontent = join('', <$fh>);
+ close $fh;
+
+ # Ignore files that are not for SQL language statements
+ $filecontent =~
+ m!<refmiscinfo>\s*SQL - Language Statements\s*</refmiscinfo>!i
+ or next;
+
+ $filecontent =~ m!<refentry id="([a-z-]+)">!
+ and $cmdid = $1;
+
+ # Collect multiple refnames
+ LOOP:
+ {
+ $filecontent =~ m!\G.*?<refname>\s*([a-z ]+?)\s*</refname>!cgis
+ and push @cmdnames, $1
+ and redo LOOP;
+ }
+ $filecontent =~ m!<refpurpose>\s*(.+?)\s*</refpurpose>!is
+ and $cmddesc = $1;
+ $filecontent =~ m!<synopsis>\s*(.+?)\s*</synopsis>!is
+ and $cmdsynopsis = $1;
+
+ if (@cmdnames && $cmddesc && $cmdid && $cmdsynopsis)
+ {
+ s/\"/\\"/g foreach @cmdnames;
+
+ $cmddesc =~ s/<[^>]+>//g;
+ $cmddesc =~ s/\s+/ /g;
+ $cmddesc =~ s/\"/\\"/g;
+
+ my @params = ();
+
+ my $nl_count = () = $cmdsynopsis =~ /\n/g;
+
+ $cmdsynopsis =~ s/%/%%/g;
+
+ while ($cmdsynopsis =~ m!<(\w+)[^>]*>(.+?)</\1[^>]*>!)
+ {
+ my $match = $2;
+ $match =~ s/<[^>]+>//g;
+ $match =~ s/%%/%/g;
+ push @params, $match;
+ $cmdsynopsis =~ s!<(\w+)[^>]*>.+?</\1[^>]*>!%s!;
+ }
+ $cmdsynopsis =~ s/\r?\n/\\n/g;
+ $cmdsynopsis =~ s/\"/\\"/g;
+
+ foreach my $cmdname (@cmdnames)
+ {
+ $entries{$cmdname} = {
+ cmdid => $cmdid,
+ cmddesc => $cmddesc,
+ cmdsynopsis => $cmdsynopsis,
+ params => \@params,
+ nl_count => $nl_count
+ };
+ $maxlen =
+ ($maxlen >= length $cmdname) ? $maxlen : length $cmdname;
+ }
+ }
+ else
+ {
+ die "$0: parsing file '$file' failed (N='@cmdnames' D='$cmddesc')\n";
+ }
+}
+
+foreach (sort keys %entries)
+{
+ my $prefix = "\t" x 5 . ' ';
+ my $id = $_;
+ $id =~ s/ /_/g;
+ my $synopsis = "\"$entries{$_}{cmdsynopsis}\"";
+ $synopsis =~ s/\\n/\\n"\n$prefix"/g;
+ my @args =
+ ("buf", $synopsis, map("_(\"$_\")", @{ $entries{$_}{params} }));
+ print $cfile_handle "static void
+sql_help_$id(PQExpBuffer buf)
+{
+\tappendPQExpBuffer(" . join(",\n$prefix", @args) . ");
+}
+
+";
+}
+
+print $cfile_handle "
+const struct _helpStruct QL_HELP[] = {
+";
+foreach (sort keys %entries)
+{
+ my $id = $_;
+ $id =~ s/ /_/g;
+ print $cfile_handle " { \"$_\",
+ N_(\"$entries{$_}{cmddesc}\"),
+ \"$entries{$_}{cmdid}\",
+ sql_help_$id,
+ $entries{$_}{nl_count} },
+
+";
+}
+
+print $cfile_handle "
+ { NULL, NULL, NULL } /* End of list marker */
+};
+";
+
+print $hfile_handle "
+#define QL_HELP_COUNT "
+ . scalar(keys %entries) . " /* number of help items */
+#define QL_MAX_CMD_LEN $maxlen /* largest strlen(cmd) */
+
+
+#endif /* $define */
+";
+
+close $cfile_handle;
+close $hfile_handle;
+closedir DIR;
diff --git a/src/bin/psql/crosstabview.c b/src/bin/psql/crosstabview.c
new file mode 100644
index 0000000..f06cb06
--- /dev/null
+++ b/src/bin/psql/crosstabview.c
@@ -0,0 +1,713 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/crosstabview.c
+ */
+#include "postgres_fe.h"
+
+#include "common.h"
+#include "common/logging.h"
+#include "crosstabview.h"
+#include "pqexpbuffer.h"
+#include "psqlscanslash.h"
+#include "settings.h"
+
+/*
+ * Value/position from the resultset that goes into the horizontal or vertical
+ * crosstabview header.
+ */
+typedef struct _pivot_field
+{
+ /*
+ * Pointer obtained from PQgetvalue() for colV or colH. Each distinct
+ * value becomes an entry in the vertical header (colV), or horizontal
+ * header (colH). A Null value is represented by a NULL pointer.
+ */
+ char *name;
+
+ /*
+ * When a sort is requested on an alternative column, this holds
+ * PQgetvalue() for the sort column corresponding to <name>. If <name>
+ * appear multiple times, it's the first value in the order of the results
+ * that is kept. A Null value is represented by a NULL pointer.
+ */
+ char *sort_value;
+
+ /*
+ * Rank of this value, starting at 0. Initially, it's the relative
+ * position of the first appearance of <name> in the resultset. For
+ * example, if successive rows contain B,A,C,A,D then it's B:0,A:1,C:2,D:3
+ * When a sort column is specified, ranks get updated in a final pass to
+ * reflect the desired order.
+ */
+ int rank;
+} pivot_field;
+
+/* Node in avl_tree */
+typedef struct _avl_node
+{
+ /* Node contents */
+ pivot_field field;
+
+ /*
+ * Height of this node in the tree (number of nodes on the longest path to
+ * a leaf).
+ */
+ int height;
+
+ /*
+ * Child nodes. [0] points to left subtree, [1] to right subtree. Never
+ * NULL, points to the empty node avl_tree.end when no left or right
+ * value.
+ */
+ struct _avl_node *children[2];
+} avl_node;
+
+/*
+ * Control structure for the AVL tree (binary search tree kept
+ * balanced with the AVL algorithm)
+ */
+typedef struct _avl_tree
+{
+ int count; /* Total number of nodes */
+ avl_node *root; /* root of the tree */
+ avl_node *end; /* Immutable dereferenceable empty tree */
+} avl_tree;
+
+
+static bool printCrosstab(const PGresult *results,
+ int num_columns, pivot_field *piv_columns, int field_for_columns,
+ int num_rows, pivot_field *piv_rows, int field_for_rows,
+ int field_for_data);
+static void avlInit(avl_tree *tree);
+static void avlMergeValue(avl_tree *tree, char *name, char *sort_value);
+static int avlCollectFields(avl_tree *tree, avl_node *node,
+ pivot_field *fields, int idx);
+static void avlFree(avl_tree *tree, avl_node *node);
+static void rankSort(int num_columns, pivot_field *piv_columns);
+static int indexOfColumn(char *arg, const PGresult *res);
+static int pivotFieldCompare(const void *a, const void *b);
+static int rankCompare(const void *a, const void *b);
+
+
+/*
+ * Main entry point to this module.
+ *
+ * Process the data from *res according to the options in pset (global),
+ * to generate the horizontal and vertical headers contents,
+ * then call printCrosstab() for the actual output.
+ */
+bool
+PrintResultsInCrosstab(const PGresult *res)
+{
+ bool retval = false;
+ avl_tree piv_columns;
+ avl_tree piv_rows;
+ pivot_field *array_columns = NULL;
+ pivot_field *array_rows = NULL;
+ int num_columns = 0;
+ int num_rows = 0;
+ int field_for_rows;
+ int field_for_columns;
+ int field_for_data;
+ int sort_field_for_columns;
+ int rn;
+
+ avlInit(&piv_rows);
+ avlInit(&piv_columns);
+
+ if (PQresultStatus(res) != PGRES_TUPLES_OK)
+ {
+ pg_log_error("\\crosstabview: statement did not return a result set");
+ goto error_return;
+ }
+
+ if (PQnfields(res) < 3)
+ {
+ pg_log_error("\\crosstabview: query must return at least three columns");
+ goto error_return;
+ }
+
+ /* Process first optional arg (vertical header column) */
+ if (pset.ctv_args[0] == NULL)
+ field_for_rows = 0;
+ else
+ {
+ field_for_rows = indexOfColumn(pset.ctv_args[0], res);
+ if (field_for_rows < 0)
+ goto error_return;
+ }
+
+ /* Process second optional arg (horizontal header column) */
+ if (pset.ctv_args[1] == NULL)
+ field_for_columns = 1;
+ else
+ {
+ field_for_columns = indexOfColumn(pset.ctv_args[1], res);
+ if (field_for_columns < 0)
+ goto error_return;
+ }
+
+ /* Insist that header columns be distinct */
+ if (field_for_columns == field_for_rows)
+ {
+ pg_log_error("\\crosstabview: vertical and horizontal headers must be different columns");
+ goto error_return;
+ }
+
+ /* Process third optional arg (data column) */
+ if (pset.ctv_args[2] == NULL)
+ {
+ int i;
+
+ /*
+ * If the data column was not specified, we search for the one not
+ * used as either vertical or horizontal headers. Must be exactly
+ * three columns, or this won't be unique.
+ */
+ if (PQnfields(res) != 3)
+ {
+ pg_log_error("\\crosstabview: data column must be specified when query returns more than three columns");
+ goto error_return;
+ }
+
+ field_for_data = -1;
+ for (i = 0; i < PQnfields(res); i++)
+ {
+ if (i != field_for_rows && i != field_for_columns)
+ {
+ field_for_data = i;
+ break;
+ }
+ }
+ Assert(field_for_data >= 0);
+ }
+ else
+ {
+ field_for_data = indexOfColumn(pset.ctv_args[2], res);
+ if (field_for_data < 0)
+ goto error_return;
+ }
+
+ /* Process fourth optional arg (horizontal header sort column) */
+ if (pset.ctv_args[3] == NULL)
+ sort_field_for_columns = -1; /* no sort column */
+ else
+ {
+ sort_field_for_columns = indexOfColumn(pset.ctv_args[3], res);
+ if (sort_field_for_columns < 0)
+ goto error_return;
+ }
+
+ /*
+ * First part: accumulate the names that go into the vertical and
+ * horizontal headers, each into an AVL binary tree to build the set of
+ * DISTINCT values.
+ */
+
+ for (rn = 0; rn < PQntuples(res); rn++)
+ {
+ char *val;
+ char *val1;
+
+ /* horizontal */
+ val = PQgetisnull(res, rn, field_for_columns) ? NULL :
+ PQgetvalue(res, rn, field_for_columns);
+ val1 = NULL;
+
+ if (sort_field_for_columns >= 0 &&
+ !PQgetisnull(res, rn, sort_field_for_columns))
+ val1 = PQgetvalue(res, rn, sort_field_for_columns);
+
+ avlMergeValue(&piv_columns, val, val1);
+
+ if (piv_columns.count > CROSSTABVIEW_MAX_COLUMNS)
+ {
+ pg_log_error("\\crosstabview: maximum number of columns (%d) exceeded",
+ CROSSTABVIEW_MAX_COLUMNS);
+ goto error_return;
+ }
+
+ /* vertical */
+ val = PQgetisnull(res, rn, field_for_rows) ? NULL :
+ PQgetvalue(res, rn, field_for_rows);
+
+ avlMergeValue(&piv_rows, val, NULL);
+ }
+
+ /*
+ * Second part: Generate sorted arrays from the AVL trees.
+ */
+
+ num_columns = piv_columns.count;
+ num_rows = piv_rows.count;
+
+ array_columns = (pivot_field *)
+ pg_malloc(sizeof(pivot_field) * num_columns);
+
+ array_rows = (pivot_field *)
+ pg_malloc(sizeof(pivot_field) * num_rows);
+
+ avlCollectFields(&piv_columns, piv_columns.root, array_columns, 0);
+ avlCollectFields(&piv_rows, piv_rows.root, array_rows, 0);
+
+ /*
+ * Third part: optionally, process the ranking data for the horizontal
+ * header
+ */
+ if (sort_field_for_columns >= 0)
+ rankSort(num_columns, array_columns);
+
+ /*
+ * Fourth part: print the crosstab'ed results.
+ */
+ retval = printCrosstab(res,
+ num_columns, array_columns, field_for_columns,
+ num_rows, array_rows, field_for_rows,
+ field_for_data);
+
+error_return:
+ avlFree(&piv_columns, piv_columns.root);
+ avlFree(&piv_rows, piv_rows.root);
+ pg_free(array_columns);
+ pg_free(array_rows);
+
+ return retval;
+}
+
+/*
+ * Output the pivoted resultset with the printTable* functions. Return true
+ * if successful, false otherwise.
+ */
+static bool
+printCrosstab(const PGresult *results,
+ int num_columns, pivot_field *piv_columns, int field_for_columns,
+ int num_rows, pivot_field *piv_rows, int field_for_rows,
+ int field_for_data)
+{
+ printQueryOpt popt = pset.popt;
+ printTableContent cont;
+ int i,
+ rn;
+ char col_align;
+ int *horiz_map;
+ bool retval = false;
+
+ printTableInit(&cont, &popt.topt, popt.title, num_columns + 1, num_rows);
+
+ /* Step 1: set target column names (horizontal header) */
+
+ /* The name of the first column is kept unchanged by the pivoting */
+ printTableAddHeader(&cont,
+ PQfname(results, field_for_rows),
+ false,
+ column_type_alignment(PQftype(results,
+ field_for_rows)));
+
+ /*
+ * To iterate over piv_columns[] by piv_columns[].rank, create a reverse
+ * map associating each piv_columns[].rank to its index in piv_columns.
+ * This avoids an O(N^2) loop later.
+ */
+ horiz_map = (int *) pg_malloc(sizeof(int) * num_columns);
+ for (i = 0; i < num_columns; i++)
+ horiz_map[piv_columns[i].rank] = i;
+
+ /*
+ * The display alignment depends on its PQftype().
+ */
+ col_align = column_type_alignment(PQftype(results, field_for_data));
+
+ for (i = 0; i < num_columns; i++)
+ {
+ char *colname;
+
+ colname = piv_columns[horiz_map[i]].name ?
+ piv_columns[horiz_map[i]].name :
+ (popt.nullPrint ? popt.nullPrint : "");
+
+ printTableAddHeader(&cont, colname, false, col_align);
+ }
+ pg_free(horiz_map);
+
+ /* Step 2: set row names in the first output column (vertical header) */
+ for (i = 0; i < num_rows; i++)
+ {
+ int k = piv_rows[i].rank;
+
+ cont.cells[k * (num_columns + 1)] = piv_rows[i].name ?
+ piv_rows[i].name :
+ (popt.nullPrint ? popt.nullPrint : "");
+ }
+ cont.cellsadded = num_rows * (num_columns + 1);
+
+ /*
+ * Step 3: fill in the content cells.
+ */
+ for (rn = 0; rn < PQntuples(results); rn++)
+ {
+ int row_number;
+ int col_number;
+ pivot_field *rp,
+ *cp;
+ pivot_field elt;
+
+ /* Find target row */
+ if (!PQgetisnull(results, rn, field_for_rows))
+ elt.name = PQgetvalue(results, rn, field_for_rows);
+ else
+ elt.name = NULL;
+ rp = (pivot_field *) bsearch(&elt,
+ piv_rows,
+ num_rows,
+ sizeof(pivot_field),
+ pivotFieldCompare);
+ Assert(rp != NULL);
+ row_number = rp->rank;
+
+ /* Find target column */
+ if (!PQgetisnull(results, rn, field_for_columns))
+ elt.name = PQgetvalue(results, rn, field_for_columns);
+ else
+ elt.name = NULL;
+
+ cp = (pivot_field *) bsearch(&elt,
+ piv_columns,
+ num_columns,
+ sizeof(pivot_field),
+ pivotFieldCompare);
+ Assert(cp != NULL);
+ col_number = cp->rank;
+
+ /* Place value into cell */
+ if (col_number >= 0 && row_number >= 0)
+ {
+ int idx;
+
+ /* index into the cont.cells array */
+ idx = 1 + col_number + row_number * (num_columns + 1);
+
+ /*
+ * If the cell already contains a value, raise an error.
+ */
+ if (cont.cells[idx] != NULL)
+ {
+ pg_log_error("\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"",
+ rp->name ? rp->name :
+ (popt.nullPrint ? popt.nullPrint : "(null)"),
+ cp->name ? cp->name :
+ (popt.nullPrint ? popt.nullPrint : "(null)"));
+ goto error;
+ }
+
+ cont.cells[idx] = !PQgetisnull(results, rn, field_for_data) ?
+ PQgetvalue(results, rn, field_for_data) :
+ (popt.nullPrint ? popt.nullPrint : "");
+ }
+ }
+
+ /*
+ * The non-initialized cells must be set to an empty string for the print
+ * functions
+ */
+ for (i = 0; i < cont.cellsadded; i++)
+ {
+ if (cont.cells[i] == NULL)
+ cont.cells[i] = "";
+ }
+
+ printTable(&cont, pset.queryFout, false, pset.logfile);
+ retval = true;
+
+error:
+ printTableCleanup(&cont);
+
+ return retval;
+}
+
+/*
+ * The avl* functions below provide a minimalistic implementation of AVL binary
+ * trees, to efficiently collect the distinct values that will form the horizontal
+ * and vertical headers. It only supports adding new values, no removal or even
+ * search.
+ */
+static void
+avlInit(avl_tree *tree)
+{
+ tree->end = (avl_node *) pg_malloc0(sizeof(avl_node));
+ tree->end->children[0] = tree->end->children[1] = tree->end;
+ tree->count = 0;
+ tree->root = tree->end;
+}
+
+/* Deallocate recursively an AVL tree, starting from node */
+static void
+avlFree(avl_tree *tree, avl_node *node)
+{
+ if (node->children[0] != tree->end)
+ {
+ avlFree(tree, node->children[0]);
+ pg_free(node->children[0]);
+ }
+ if (node->children[1] != tree->end)
+ {
+ avlFree(tree, node->children[1]);
+ pg_free(node->children[1]);
+ }
+ if (node == tree->root)
+ {
+ /* free the root separately as it's not child of anything */
+ if (node != tree->end)
+ pg_free(node);
+ /* free the tree->end struct only once and when all else is freed */
+ pg_free(tree->end);
+ }
+}
+
+/* Set the height to 1 plus the greatest of left and right heights */
+static void
+avlUpdateHeight(avl_node *n)
+{
+ n->height = 1 + (n->children[0]->height > n->children[1]->height ?
+ n->children[0]->height :
+ n->children[1]->height);
+}
+
+/* Rotate a subtree left (dir=0) or right (dir=1). Not recursive */
+static avl_node *
+avlRotate(avl_node **current, int dir)
+{
+ avl_node *before = *current;
+ avl_node *after = (*current)->children[dir];
+
+ *current = after;
+ before->children[dir] = after->children[!dir];
+ avlUpdateHeight(before);
+ after->children[!dir] = before;
+
+ return after;
+}
+
+static int
+avlBalance(avl_node *n)
+{
+ return n->children[0]->height - n->children[1]->height;
+}
+
+/*
+ * After an insertion, possibly rebalance the tree so that the left and right
+ * node heights don't differ by more than 1.
+ * May update *node.
+ */
+static void
+avlAdjustBalance(avl_tree *tree, avl_node **node)
+{
+ avl_node *current = *node;
+ int b = avlBalance(current) / 2;
+
+ if (b != 0)
+ {
+ int dir = (1 - b) / 2;
+
+ if (avlBalance(current->children[dir]) == -b)
+ avlRotate(&current->children[dir], !dir);
+ current = avlRotate(node, dir);
+ }
+ if (current != tree->end)
+ avlUpdateHeight(current);
+}
+
+/*
+ * Insert a new value/field, starting from *node, reaching the correct position
+ * in the tree by recursion. Possibly rebalance the tree and possibly update
+ * *node. Do nothing if the value is already present in the tree.
+ */
+static void
+avlInsertNode(avl_tree *tree, avl_node **node, pivot_field field)
+{
+ avl_node *current = *node;
+
+ if (current == tree->end)
+ {
+ avl_node *new_node = (avl_node *)
+ pg_malloc(sizeof(avl_node));
+
+ new_node->height = 1;
+ new_node->field = field;
+ new_node->children[0] = new_node->children[1] = tree->end;
+ tree->count++;
+ *node = new_node;
+ }
+ else
+ {
+ int cmp = pivotFieldCompare(&field, &current->field);
+
+ if (cmp != 0)
+ {
+ avlInsertNode(tree,
+ cmp > 0 ? &current->children[1] : &current->children[0],
+ field);
+ avlAdjustBalance(tree, node);
+ }
+ }
+}
+
+/* Insert the value into the AVL tree, if it does not preexist */
+static void
+avlMergeValue(avl_tree *tree, char *name, char *sort_value)
+{
+ pivot_field field;
+
+ field.name = name;
+ field.rank = tree->count;
+ field.sort_value = sort_value;
+ avlInsertNode(tree, &tree->root, field);
+}
+
+/*
+ * Recursively extract node values into the names array, in sorted order with a
+ * left-to-right tree traversal.
+ * Return the next candidate offset to write into the names array.
+ * fields[] must be preallocated to hold tree->count entries
+ */
+static int
+avlCollectFields(avl_tree *tree, avl_node *node, pivot_field *fields, int idx)
+{
+ if (node == tree->end)
+ return idx;
+
+ idx = avlCollectFields(tree, node->children[0], fields, idx);
+ fields[idx] = node->field;
+ return avlCollectFields(tree, node->children[1], fields, idx + 1);
+}
+
+static void
+rankSort(int num_columns, pivot_field *piv_columns)
+{
+ int *hmap; /* [[offset in piv_columns, rank], ...for
+ * every header entry] */
+ int i;
+
+ hmap = (int *) pg_malloc(sizeof(int) * num_columns * 2);
+ for (i = 0; i < num_columns; i++)
+ {
+ char *val = piv_columns[i].sort_value;
+
+ /* ranking information is valid if non null and matches /^-?\d+$/ */
+ if (val &&
+ ((*val == '-' &&
+ strspn(val + 1, "0123456789") == strlen(val + 1)) ||
+ strspn(val, "0123456789") == strlen(val)))
+ {
+ hmap[i * 2] = atoi(val);
+ hmap[i * 2 + 1] = i;
+ }
+ else
+ {
+ /* invalid rank information ignored (equivalent to rank 0) */
+ hmap[i * 2] = 0;
+ hmap[i * 2 + 1] = i;
+ }
+ }
+
+ qsort(hmap, num_columns, sizeof(int) * 2, rankCompare);
+
+ for (i = 0; i < num_columns; i++)
+ {
+ piv_columns[hmap[i * 2 + 1]].rank = i;
+ }
+
+ pg_free(hmap);
+}
+
+/*
+ * Look up a column reference, which can be either:
+ * - a number from 1 to PQnfields(res)
+ * - a column name matching one of PQfname(res,...)
+ *
+ * Returns zero-based column number, or -1 if not found or ambiguous.
+ *
+ * Note: may modify contents of "arg" string.
+ */
+static int
+indexOfColumn(char *arg, const PGresult *res)
+{
+ int idx;
+
+ if (arg[0] && strspn(arg, "0123456789") == strlen(arg))
+ {
+ /* if arg contains only digits, it's a column number */
+ idx = atoi(arg) - 1;
+ if (idx < 0 || idx >= PQnfields(res))
+ {
+ pg_log_error("\\crosstabview: column number %d is out of range 1..%d",
+ idx + 1, PQnfields(res));
+ return -1;
+ }
+ }
+ else
+ {
+ int i;
+
+ /*
+ * Dequote and downcase the column name. By checking for all-digits
+ * before doing this, we can ensure that a quoted name is treated as a
+ * name even if it's all digits.
+ */
+ dequote_downcase_identifier(arg, true, pset.encoding);
+
+ /* Now look for match(es) among res' column names */
+ idx = -1;
+ for (i = 0; i < PQnfields(res); i++)
+ {
+ if (strcmp(arg, PQfname(res, i)) == 0)
+ {
+ if (idx >= 0)
+ {
+ /* another idx was already found for the same name */
+ pg_log_error("\\crosstabview: ambiguous column name: \"%s\"", arg);
+ return -1;
+ }
+ idx = i;
+ }
+ }
+ if (idx == -1)
+ {
+ pg_log_error("\\crosstabview: column name not found: \"%s\"", arg);
+ return -1;
+ }
+ }
+
+ return idx;
+}
+
+/*
+ * Value comparator for vertical and horizontal headers
+ * used for deduplication only.
+ * - null values are considered equal
+ * - non-null < null
+ * - non-null values are compared with strcmp()
+ */
+static int
+pivotFieldCompare(const void *a, const void *b)
+{
+ const pivot_field *pa = (const pivot_field *) a;
+ const pivot_field *pb = (const pivot_field *) b;
+
+ /* test null values */
+ if (!pb->name)
+ return pa->name ? -1 : 0;
+ else if (!pa->name)
+ return 1;
+
+ /* non-null values */
+ return strcmp(pa->name, pb->name);
+}
+
+static int
+rankCompare(const void *a, const void *b)
+{
+ return *((const int *) a) - *((const int *) b);
+}
diff --git a/src/bin/psql/crosstabview.h b/src/bin/psql/crosstabview.h
new file mode 100644
index 0000000..096e76b
--- /dev/null
+++ b/src/bin/psql/crosstabview.h
@@ -0,0 +1,29 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/crosstabview.h
+ */
+
+#ifndef CROSSTABVIEW_H
+#define CROSSTABVIEW_H
+
+#include "libpq-fe.h"
+
+/*
+ * Limit the number of output columns generated in memory by the crosstabview
+ * algorithm. A new output column is added for each distinct value found in the
+ * column that pivots (to form the horizontal header).
+ * The purpose of this limit is to fail early instead of over-allocating or spending
+ * too much time if the crosstab to generate happens to be unreasonably large
+ * (worst case: a NxN cartesian product with N=number of tuples).
+ * The value of 1600 corresponds to the maximum columns per table in storage,
+ * but it could be as much as INT_MAX theoretically.
+ */
+#define CROSSTABVIEW_MAX_COLUMNS 1600
+
+/* prototypes */
+extern bool PrintResultsInCrosstab(const PGresult *res);
+
+#endif /* CROSSTABVIEW_H */
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
new file mode 100644
index 0000000..4bdf6ce
--- /dev/null
+++ b/src/bin/psql/describe.c
@@ -0,0 +1,6406 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Support for the various \d ("describe") commands. Note that the current
+ * expectation is that all functions in this file will succeed when working
+ * with servers of versions 7.4 and up. It's okay to omit irrelevant
+ * information for an old server, but not to fail outright.
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/describe.c
+ */
+#include "postgres_fe.h"
+
+#include <ctype.h>
+
+#include "catalog/pg_am.h"
+#include "catalog/pg_attribute_d.h"
+#include "catalog/pg_cast_d.h"
+#include "catalog/pg_class_d.h"
+#include "catalog/pg_default_acl_d.h"
+#include "common.h"
+#include "common/logging.h"
+#include "describe.h"
+#include "fe_utils/mbprint.h"
+#include "fe_utils/print.h"
+#include "fe_utils/string_utils.h"
+#include "settings.h"
+#include "variables.h"
+
+static bool describeOneTableDetails(const char *schemaname,
+ const char *relationname,
+ const char *oid,
+ bool verbose);
+static void add_tablespace_footer(printTableContent *const cont, char relkind,
+ Oid tablespace, const bool newline);
+static void add_role_attribute(PQExpBuffer buf, const char *const str);
+static bool listTSParsersVerbose(const char *pattern);
+static bool describeOneTSParser(const char *oid, const char *nspname,
+ const char *prsname);
+static bool listTSConfigsVerbose(const char *pattern);
+static bool describeOneTSConfig(const char *oid, const char *nspname,
+ const char *cfgname,
+ const char *pnspname, const char *prsname);
+static void printACLColumn(PQExpBuffer buf, const char *colname);
+static bool listOneExtensionContents(const char *extname, const char *oid);
+
+
+/*----------------
+ * Handlers for various slash commands displaying some sort of list
+ * of things in the database.
+ *
+ * Note: try to format the queries to look nice in -E output.
+ *----------------
+ */
+
+
+/*
+ * \da
+ * Takes an optional regexp to select particular aggregates
+ */
+bool
+describeAggregates(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " p.proname AS \"%s\",\n"
+ " pg_catalog.format_type(p.prorettype, NULL) AS \"%s\",\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Result data type"));
+
+ if (pset.sversion >= 80400)
+ appendPQExpBuffer(&buf,
+ " CASE WHEN p.pronargs = 0\n"
+ " THEN CAST('*' AS pg_catalog.text)\n"
+ " ELSE pg_catalog.pg_get_function_arguments(p.oid)\n"
+ " END AS \"%s\",\n",
+ gettext_noop("Argument data types"));
+ else if (pset.sversion >= 80200)
+ appendPQExpBuffer(&buf,
+ " CASE WHEN p.pronargs = 0\n"
+ " THEN CAST('*' AS pg_catalog.text)\n"
+ " ELSE\n"
+ " pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT\n"
+ " pg_catalog.format_type(p.proargtypes[s.i], NULL)\n"
+ " FROM\n"
+ " pg_catalog.generate_series(0, pg_catalog.array_upper(p.proargtypes, 1)) AS s(i)\n"
+ " ), ', ')\n"
+ " END AS \"%s\",\n",
+ gettext_noop("Argument data types"));
+ else
+ appendPQExpBuffer(&buf,
+ " pg_catalog.format_type(p.proargtypes[0], NULL) AS \"%s\",\n",
+ gettext_noop("Argument data types"));
+
+ if (pset.sversion >= 110000)
+ appendPQExpBuffer(&buf,
+ " pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"\n"
+ "FROM pg_catalog.pg_proc p\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"
+ "WHERE p.prokind = 'a'\n",
+ gettext_noop("Description"));
+ else
+ appendPQExpBuffer(&buf,
+ " pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"\n"
+ "FROM pg_catalog.pg_proc p\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"
+ "WHERE p.proisagg\n",
+ gettext_noop("Description"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "p.proname", NULL,
+ "pg_catalog.pg_function_is_visible(p.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 4;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of aggregate functions");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dA
+ * Takes an optional regexp to select particular access methods
+ */
+bool
+describeAccessMethods(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, true, false, false};
+
+ if (pset.sversion < 90600)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support access methods.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT amname AS \"%s\",\n"
+ " CASE amtype"
+ " WHEN 'i' THEN '%s'"
+ " WHEN 't' THEN '%s'"
+ " END AS \"%s\"",
+ gettext_noop("Name"),
+ gettext_noop("Index"),
+ gettext_noop("Table"),
+ gettext_noop("Type"));
+
+ if (verbose)
+ {
+ appendPQExpBuffer(&buf,
+ ",\n amhandler AS \"%s\",\n"
+ " pg_catalog.obj_description(oid, 'pg_am') AS \"%s\"",
+ gettext_noop("Handler"),
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_am\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "amname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of access methods");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \db
+ * Takes an optional regexp to select particular tablespaces
+ */
+bool
+describeTablespaces(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80000)
+ {
+ char sverbuf[32];
+
+ pg_log_info("The server (version %s) does not support tablespaces.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ if (pset.sversion >= 90200)
+ printfPQExpBuffer(&buf,
+ "SELECT spcname AS \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(spcowner) AS \"%s\",\n"
+ " pg_catalog.pg_tablespace_location(oid) AS \"%s\"",
+ gettext_noop("Name"),
+ gettext_noop("Owner"),
+ gettext_noop("Location"));
+ else
+ printfPQExpBuffer(&buf,
+ "SELECT spcname AS \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(spcowner) AS \"%s\",\n"
+ " spclocation AS \"%s\"",
+ gettext_noop("Name"),
+ gettext_noop("Owner"),
+ gettext_noop("Location"));
+
+ if (verbose)
+ {
+ appendPQExpBufferStr(&buf, ",\n ");
+ printACLColumn(&buf, "spcacl");
+ }
+
+ if (verbose && pset.sversion >= 90000)
+ appendPQExpBuffer(&buf,
+ ",\n spcoptions AS \"%s\"",
+ gettext_noop("Options"));
+
+ if (verbose && pset.sversion >= 90200)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS \"%s\"",
+ gettext_noop("Size"));
+
+ if (verbose && pset.sversion >= 80200)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.shobj_description(oid, 'pg_tablespace') AS \"%s\"",
+ gettext_noop("Description"));
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_tablespace\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "spcname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of tablespaces");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \df
+ * Takes an optional regexp to select particular functions.
+ *
+ * As with \d, you can specify the kinds of functions you want:
+ *
+ * a for aggregates
+ * n for normal
+ * p for procedure
+ * t for trigger
+ * w for window
+ *
+ * and you can mix and match these in any order.
+ */
+bool
+describeFunctions(const char *functypes, const char *pattern, bool verbose, bool showSystem)
+{
+ bool showAggregate = strchr(functypes, 'a') != NULL;
+ bool showNormal = strchr(functypes, 'n') != NULL;
+ bool showProcedure = strchr(functypes, 'p') != NULL;
+ bool showTrigger = strchr(functypes, 't') != NULL;
+ bool showWindow = strchr(functypes, 'w') != NULL;
+ bool have_where;
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, false, false, true, true, true, false, true, false, false, false, false};
+
+ /* No "Parallel" column before 9.6 */
+ static const bool translate_columns_pre_96[] = {false, false, false, false, true, true, false, true, false, false, false, false};
+
+ if (strlen(functypes) != strspn(functypes, "anptwS+"))
+ {
+ pg_log_error("\\df only takes [anptwS+] as options");
+ return true;
+ }
+
+ if (showProcedure && pset.sversion < 110000)
+ {
+ char sverbuf[32];
+
+ pg_log_error("\\df does not take a \"%c\" option with server version %s",
+ 'p',
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ if (showWindow && pset.sversion < 80400)
+ {
+ char sverbuf[32];
+
+ pg_log_error("\\df does not take a \"%c\" option with server version %s",
+ 'w',
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ if (!showAggregate && !showNormal && !showProcedure && !showTrigger && !showWindow)
+ {
+ showAggregate = showNormal = showTrigger = true;
+ if (pset.sversion >= 110000)
+ showProcedure = true;
+ if (pset.sversion >= 80400)
+ showWindow = true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " p.proname as \"%s\",\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"));
+
+ if (pset.sversion >= 110000)
+ appendPQExpBuffer(&buf,
+ " pg_catalog.pg_get_function_result(p.oid) as \"%s\",\n"
+ " pg_catalog.pg_get_function_arguments(p.oid) as \"%s\",\n"
+ " CASE p.prokind\n"
+ " WHEN 'a' THEN '%s'\n"
+ " WHEN 'w' THEN '%s'\n"
+ " WHEN 'p' THEN '%s'\n"
+ " ELSE '%s'\n"
+ " END as \"%s\"",
+ gettext_noop("Result data type"),
+ gettext_noop("Argument data types"),
+ /* translator: "agg" is short for "aggregate" */
+ gettext_noop("agg"),
+ gettext_noop("window"),
+ gettext_noop("proc"),
+ gettext_noop("func"),
+ gettext_noop("Type"));
+ else if (pset.sversion >= 80400)
+ appendPQExpBuffer(&buf,
+ " pg_catalog.pg_get_function_result(p.oid) as \"%s\",\n"
+ " pg_catalog.pg_get_function_arguments(p.oid) as \"%s\",\n"
+ " CASE\n"
+ " WHEN p.proisagg THEN '%s'\n"
+ " WHEN p.proiswindow THEN '%s'\n"
+ " WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN '%s'\n"
+ " ELSE '%s'\n"
+ " END as \"%s\"",
+ gettext_noop("Result data type"),
+ gettext_noop("Argument data types"),
+ /* translator: "agg" is short for "aggregate" */
+ gettext_noop("agg"),
+ gettext_noop("window"),
+ gettext_noop("trigger"),
+ gettext_noop("func"),
+ gettext_noop("Type"));
+ else if (pset.sversion >= 80100)
+ appendPQExpBuffer(&buf,
+ " CASE WHEN p.proretset THEN 'SETOF ' ELSE '' END ||\n"
+ " pg_catalog.format_type(p.prorettype, NULL) as \"%s\",\n"
+ " CASE WHEN proallargtypes IS NOT NULL THEN\n"
+ " pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT\n"
+ " CASE\n"
+ " WHEN p.proargmodes[s.i] = 'i' THEN ''\n"
+ " WHEN p.proargmodes[s.i] = 'o' THEN 'OUT '\n"
+ " WHEN p.proargmodes[s.i] = 'b' THEN 'INOUT '\n"
+ " WHEN p.proargmodes[s.i] = 'v' THEN 'VARIADIC '\n"
+ " END ||\n"
+ " CASE\n"
+ " WHEN COALESCE(p.proargnames[s.i], '') = '' THEN ''\n"
+ " ELSE p.proargnames[s.i] || ' '\n"
+ " END ||\n"
+ " pg_catalog.format_type(p.proallargtypes[s.i], NULL)\n"
+ " FROM\n"
+ " pg_catalog.generate_series(1, pg_catalog.array_upper(p.proallargtypes, 1)) AS s(i)\n"
+ " ), ', ')\n"
+ " ELSE\n"
+ " pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT\n"
+ " CASE\n"
+ " WHEN COALESCE(p.proargnames[s.i+1], '') = '' THEN ''\n"
+ " ELSE p.proargnames[s.i+1] || ' '\n"
+ " END ||\n"
+ " pg_catalog.format_type(p.proargtypes[s.i], NULL)\n"
+ " FROM\n"
+ " pg_catalog.generate_series(0, pg_catalog.array_upper(p.proargtypes, 1)) AS s(i)\n"
+ " ), ', ')\n"
+ " END AS \"%s\",\n"
+ " CASE\n"
+ " WHEN p.proisagg THEN '%s'\n"
+ " WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN '%s'\n"
+ " ELSE '%s'\n"
+ " END AS \"%s\"",
+ gettext_noop("Result data type"),
+ gettext_noop("Argument data types"),
+ /* translator: "agg" is short for "aggregate" */
+ gettext_noop("agg"),
+ gettext_noop("trigger"),
+ gettext_noop("func"),
+ gettext_noop("Type"));
+ else
+ appendPQExpBuffer(&buf,
+ " CASE WHEN p.proretset THEN 'SETOF ' ELSE '' END ||\n"
+ " pg_catalog.format_type(p.prorettype, NULL) as \"%s\",\n"
+ " pg_catalog.oidvectortypes(p.proargtypes) as \"%s\",\n"
+ " CASE\n"
+ " WHEN p.proisagg THEN '%s'\n"
+ " WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN '%s'\n"
+ " ELSE '%s'\n"
+ " END AS \"%s\"",
+ gettext_noop("Result data type"),
+ gettext_noop("Argument data types"),
+ /* translator: "agg" is short for "aggregate" */
+ gettext_noop("agg"),
+ gettext_noop("trigger"),
+ gettext_noop("func"),
+ gettext_noop("Type"));
+
+ if (verbose)
+ {
+ appendPQExpBuffer(&buf,
+ ",\n CASE\n"
+ " WHEN p.provolatile = 'i' THEN '%s'\n"
+ " WHEN p.provolatile = 's' THEN '%s'\n"
+ " WHEN p.provolatile = 'v' THEN '%s'\n"
+ " END as \"%s\"",
+ gettext_noop("immutable"),
+ gettext_noop("stable"),
+ gettext_noop("volatile"),
+ gettext_noop("Volatility"));
+ if (pset.sversion >= 90600)
+ appendPQExpBuffer(&buf,
+ ",\n CASE\n"
+ " WHEN p.proparallel = 'r' THEN '%s'\n"
+ " WHEN p.proparallel = 's' THEN '%s'\n"
+ " WHEN p.proparallel = 'u' THEN '%s'\n"
+ " END as \"%s\"",
+ gettext_noop("restricted"),
+ gettext_noop("safe"),
+ gettext_noop("unsafe"),
+ gettext_noop("Parallel"));
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.pg_get_userbyid(p.proowner) as \"%s\""
+ ",\n CASE WHEN prosecdef THEN '%s' ELSE '%s' END AS \"%s\"",
+ gettext_noop("Owner"),
+ gettext_noop("definer"),
+ gettext_noop("invoker"),
+ gettext_noop("Security"));
+ appendPQExpBufferStr(&buf, ",\n ");
+ printACLColumn(&buf, "p.proacl");
+ appendPQExpBuffer(&buf,
+ ",\n l.lanname as \"%s\""
+ ",\n p.prosrc as \"%s\""
+ ",\n pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"",
+ gettext_noop("Language"),
+ gettext_noop("Source code"),
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_proc p"
+ "\n LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n");
+
+ if (verbose)
+ appendPQExpBufferStr(&buf,
+ " LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang\n");
+
+ have_where = false;
+
+ /* filter by function type, if requested */
+ if (showNormal && showAggregate && showProcedure && showTrigger && showWindow)
+ /* Do nothing */ ;
+ else if (showNormal)
+ {
+ if (!showAggregate)
+ {
+ if (have_where)
+ appendPQExpBufferStr(&buf, " AND ");
+ else
+ {
+ appendPQExpBufferStr(&buf, "WHERE ");
+ have_where = true;
+ }
+ if (pset.sversion >= 110000)
+ appendPQExpBufferStr(&buf, "p.prokind <> 'a'\n");
+ else
+ appendPQExpBufferStr(&buf, "NOT p.proisagg\n");
+ }
+ if (!showProcedure && pset.sversion >= 110000)
+ {
+ if (have_where)
+ appendPQExpBufferStr(&buf, " AND ");
+ else
+ {
+ appendPQExpBufferStr(&buf, "WHERE ");
+ have_where = true;
+ }
+ appendPQExpBufferStr(&buf, "p.prokind <> 'p'\n");
+ }
+ if (!showTrigger)
+ {
+ if (have_where)
+ appendPQExpBufferStr(&buf, " AND ");
+ else
+ {
+ appendPQExpBufferStr(&buf, "WHERE ");
+ have_where = true;
+ }
+ appendPQExpBufferStr(&buf, "p.prorettype <> 'pg_catalog.trigger'::pg_catalog.regtype\n");
+ }
+ if (!showWindow && pset.sversion >= 80400)
+ {
+ if (have_where)
+ appendPQExpBufferStr(&buf, " AND ");
+ else
+ {
+ appendPQExpBufferStr(&buf, "WHERE ");
+ have_where = true;
+ }
+ if (pset.sversion >= 110000)
+ appendPQExpBufferStr(&buf, "p.prokind <> 'w'\n");
+ else
+ appendPQExpBufferStr(&buf, "NOT p.proiswindow\n");
+ }
+ }
+ else
+ {
+ bool needs_or = false;
+
+ appendPQExpBufferStr(&buf, "WHERE (\n ");
+ have_where = true;
+ /* Note: at least one of these must be true ... */
+ if (showAggregate)
+ {
+ if (pset.sversion >= 110000)
+ appendPQExpBufferStr(&buf, "p.prokind = 'a'\n");
+ else
+ appendPQExpBufferStr(&buf, "p.proisagg\n");
+ needs_or = true;
+ }
+ if (showTrigger)
+ {
+ if (needs_or)
+ appendPQExpBufferStr(&buf, " OR ");
+ appendPQExpBufferStr(&buf,
+ "p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype\n");
+ needs_or = true;
+ }
+ if (showProcedure)
+ {
+ if (needs_or)
+ appendPQExpBufferStr(&buf, " OR ");
+ appendPQExpBufferStr(&buf, "p.prokind = 'p'\n");
+ needs_or = true;
+ }
+ if (showWindow)
+ {
+ if (needs_or)
+ appendPQExpBufferStr(&buf, " OR ");
+ if (pset.sversion >= 110000)
+ appendPQExpBufferStr(&buf, "p.prokind = 'w'\n");
+ else
+ appendPQExpBufferStr(&buf, "p.proiswindow\n");
+ needs_or = true;
+ }
+ appendPQExpBufferStr(&buf, " )\n");
+ }
+
+ processSQLNamePattern(pset.db, &buf, pattern, have_where, false,
+ "n.nspname", "p.proname", NULL,
+ "pg_catalog.pg_function_is_visible(p.oid)");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 4;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of functions");
+ myopt.translate_header = true;
+ if (pset.sversion >= 90600)
+ {
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+ }
+ else
+ {
+ myopt.translate_columns = translate_columns_pre_96;
+ myopt.n_translate_columns = lengthof(translate_columns_pre_96);
+ }
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+
+/*
+ * \dT
+ * describe types
+ */
+bool
+describeTypes(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " pg_catalog.format_type(t.oid, NULL) AS \"%s\",\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"));
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ " t.typname AS \"%s\",\n"
+ " CASE WHEN t.typrelid != 0\n"
+ " THEN CAST('tuple' AS pg_catalog.text)\n"
+ " WHEN t.typlen < 0\n"
+ " THEN CAST('var' AS pg_catalog.text)\n"
+ " ELSE CAST(t.typlen AS pg_catalog.text)\n"
+ " END AS \"%s\",\n",
+ gettext_noop("Internal name"),
+ gettext_noop("Size"));
+ if (verbose && pset.sversion >= 80300)
+ {
+ appendPQExpBufferStr(&buf,
+ " pg_catalog.array_to_string(\n"
+ " ARRAY(\n"
+ " SELECT e.enumlabel\n"
+ " FROM pg_catalog.pg_enum e\n"
+ " WHERE e.enumtypid = t.oid\n");
+
+ if (pset.sversion >= 90100)
+ appendPQExpBufferStr(&buf,
+ " ORDER BY e.enumsortorder\n");
+ else
+ appendPQExpBufferStr(&buf,
+ " ORDER BY e.oid\n");
+
+ appendPQExpBuffer(&buf,
+ " ),\n"
+ " E'\\n'\n"
+ " ) AS \"%s\",\n",
+ gettext_noop("Elements"));
+ }
+ if (verbose)
+ {
+ appendPQExpBuffer(&buf,
+ " pg_catalog.pg_get_userbyid(t.typowner) AS \"%s\",\n",
+ gettext_noop("Owner"));
+ }
+ if (verbose && pset.sversion >= 90200)
+ {
+ printACLColumn(&buf, "t.typacl");
+ appendPQExpBufferStr(&buf, ",\n ");
+ }
+
+ appendPQExpBuffer(&buf,
+ " pg_catalog.obj_description(t.oid, 'pg_type') as \"%s\"\n",
+ gettext_noop("Description"));
+
+ appendPQExpBufferStr(&buf, "FROM pg_catalog.pg_type t\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n");
+
+ /*
+ * do not include complex types (typrelid!=0) unless they are standalone
+ * composite types
+ */
+ appendPQExpBufferStr(&buf, "WHERE (t.typrelid = 0 ");
+ appendPQExpBufferStr(&buf, "OR (SELECT c.relkind = " CppAsString2(RELKIND_COMPOSITE_TYPE)
+ " FROM pg_catalog.pg_class c "
+ "WHERE c.oid = t.typrelid))\n");
+
+ /*
+ * do not include array types (before 8.3 we have to use the assumption
+ * that their names start with underscore)
+ */
+ if (pset.sversion >= 80300)
+ appendPQExpBufferStr(&buf, " AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid)\n");
+ else
+ appendPQExpBufferStr(&buf, " AND t.typname !~ '^_'\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ /* Match name pattern against either internal or external name */
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "t.typname",
+ "pg_catalog.format_type(t.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(t.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of data types");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \do
+ * Describe operators
+ */
+bool
+describeOperators(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+
+ /*
+ * Note: before Postgres 9.1, we did not assign comments to any built-in
+ * operators, preferring to let the comment on the underlying function
+ * suffice. The coalesce() on the obj_description() calls below supports
+ * this convention by providing a fallback lookup of a comment on the
+ * operator's function. As of 9.1 there is a policy that every built-in
+ * operator should have a comment; so the coalesce() is no longer
+ * necessary so far as built-in operators are concerned. We keep it
+ * anyway, for now, because (1) third-party modules may still be following
+ * the old convention, and (2) we'd need to do it anyway when talking to a
+ * pre-9.1 server.
+ */
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " o.oprname AS \"%s\",\n"
+ " CASE WHEN o.oprkind='l' THEN NULL ELSE pg_catalog.format_type(o.oprleft, NULL) END AS \"%s\",\n"
+ " CASE WHEN o.oprkind='r' THEN NULL ELSE pg_catalog.format_type(o.oprright, NULL) END AS \"%s\",\n"
+ " pg_catalog.format_type(o.oprresult, NULL) AS \"%s\",\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Left arg type"),
+ gettext_noop("Right arg type"),
+ gettext_noop("Result type"));
+
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ " o.oprcode AS \"%s\",\n",
+ gettext_noop("Function"));
+
+ appendPQExpBuffer(&buf,
+ " coalesce(pg_catalog.obj_description(o.oid, 'pg_operator'),\n"
+ " pg_catalog.obj_description(o.oprcode, 'pg_proc')) AS \"%s\"\n"
+ "FROM pg_catalog.pg_operator o\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = o.oprnamespace\n",
+ gettext_noop("Description"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, !showSystem && !pattern, true,
+ "n.nspname", "o.oprname", NULL,
+ "pg_catalog.pg_operator_is_visible(o.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 3, 4;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of operators");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * listAllDbs
+ *
+ * for \l, \list, and -l switch
+ */
+bool
+listAllDbs(const char *pattern, bool verbose)
+{
+ PGresult *res;
+ PQExpBufferData buf;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT d.datname as \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(d.datdba) as \"%s\",\n"
+ " pg_catalog.pg_encoding_to_char(d.encoding) as \"%s\",\n",
+ gettext_noop("Name"),
+ gettext_noop("Owner"),
+ gettext_noop("Encoding"));
+ if (pset.sversion >= 80400)
+ appendPQExpBuffer(&buf,
+ " d.datcollate as \"%s\",\n"
+ " d.datctype as \"%s\",\n",
+ gettext_noop("Collate"),
+ gettext_noop("Ctype"));
+ appendPQExpBufferStr(&buf, " ");
+ printACLColumn(&buf, "d.datacl");
+ if (verbose && pset.sversion >= 80200)
+ appendPQExpBuffer(&buf,
+ ",\n CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')\n"
+ " THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))\n"
+ " ELSE 'No Access'\n"
+ " END as \"%s\"",
+ gettext_noop("Size"));
+ if (verbose && pset.sversion >= 80000)
+ appendPQExpBuffer(&buf,
+ ",\n t.spcname as \"%s\"",
+ gettext_noop("Tablespace"));
+ if (verbose && pset.sversion >= 80200)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.shobj_description(d.oid, 'pg_database') as \"%s\"",
+ gettext_noop("Description"));
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_database d\n");
+ if (verbose && pset.sversion >= 80000)
+ appendPQExpBufferStr(&buf,
+ " JOIN pg_catalog.pg_tablespace t on d.dattablespace = t.oid\n");
+
+ if (pattern)
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "d.datname", NULL, NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of databases");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * List Tables' Grant/Revoke Permissions
+ * \z (now also \dp -- perhaps more mnemonic)
+ */
+bool
+permissionsList(const char *pattern)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, true, false, false, false};
+
+ initPQExpBuffer(&buf);
+
+ /*
+ * we ignore indexes and toast tables since they have no meaningful rights
+ */
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " c.relname as \"%s\",\n"
+ " CASE c.relkind"
+ " WHEN " CppAsString2(RELKIND_RELATION) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_VIEW) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_MATVIEW) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_SEQUENCE) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_FOREIGN_TABLE) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_PARTITIONED_TABLE) " THEN '%s'"
+ " END as \"%s\",\n"
+ " ",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("table"),
+ gettext_noop("view"),
+ gettext_noop("materialized view"),
+ gettext_noop("sequence"),
+ gettext_noop("foreign table"),
+ gettext_noop("partitioned table"),
+ gettext_noop("Type"));
+
+ printACLColumn(&buf, "c.relacl");
+
+ if (pset.sversion >= 80400)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT attname || E':\\n ' || pg_catalog.array_to_string(attacl, E'\\n ')\n"
+ " FROM pg_catalog.pg_attribute a\n"
+ " WHERE attrelid = c.oid AND NOT attisdropped AND attacl IS NOT NULL\n"
+ " ), E'\\n') AS \"%s\"",
+ gettext_noop("Column privileges"));
+
+ if (pset.sversion >= 90500 && pset.sversion < 100000)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT polname\n"
+ " || CASE WHEN polcmd != '*' THEN\n"
+ " E' (' || polcmd || E'):'\n"
+ " ELSE E':'\n"
+ " END\n"
+ " || CASE WHEN polqual IS NOT NULL THEN\n"
+ " E'\\n (u): ' || pg_catalog.pg_get_expr(polqual, polrelid)\n"
+ " ELSE E''\n"
+ " END\n"
+ " || CASE WHEN polwithcheck IS NOT NULL THEN\n"
+ " E'\\n (c): ' || pg_catalog.pg_get_expr(polwithcheck, polrelid)\n"
+ " ELSE E''\n"
+ " END"
+ " || CASE WHEN polroles <> '{0}' THEN\n"
+ " E'\\n to: ' || pg_catalog.array_to_string(\n"
+ " ARRAY(\n"
+ " SELECT rolname\n"
+ " FROM pg_catalog.pg_roles\n"
+ " WHERE oid = ANY (polroles)\n"
+ " ORDER BY 1\n"
+ " ), E', ')\n"
+ " ELSE E''\n"
+ " END\n"
+ " FROM pg_catalog.pg_policy pol\n"
+ " WHERE polrelid = c.oid), E'\\n')\n"
+ " AS \"%s\"",
+ gettext_noop("Policies"));
+
+ if (pset.sversion >= 100000)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT polname\n"
+ " || CASE WHEN NOT polpermissive THEN\n"
+ " E' (RESTRICTIVE)'\n"
+ " ELSE '' END\n"
+ " || CASE WHEN polcmd != '*' THEN\n"
+ " E' (' || polcmd || E'):'\n"
+ " ELSE E':'\n"
+ " END\n"
+ " || CASE WHEN polqual IS NOT NULL THEN\n"
+ " E'\\n (u): ' || pg_catalog.pg_get_expr(polqual, polrelid)\n"
+ " ELSE E''\n"
+ " END\n"
+ " || CASE WHEN polwithcheck IS NOT NULL THEN\n"
+ " E'\\n (c): ' || pg_catalog.pg_get_expr(polwithcheck, polrelid)\n"
+ " ELSE E''\n"
+ " END"
+ " || CASE WHEN polroles <> '{0}' THEN\n"
+ " E'\\n to: ' || pg_catalog.array_to_string(\n"
+ " ARRAY(\n"
+ " SELECT rolname\n"
+ " FROM pg_catalog.pg_roles\n"
+ " WHERE oid = ANY (polroles)\n"
+ " ORDER BY 1\n"
+ " ), E', ')\n"
+ " ELSE E''\n"
+ " END\n"
+ " FROM pg_catalog.pg_policy pol\n"
+ " WHERE polrelid = c.oid), E'\\n')\n"
+ " AS \"%s\"",
+ gettext_noop("Policies"));
+
+ appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_class c\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n"
+ "WHERE c.relkind IN ("
+ CppAsString2(RELKIND_RELATION) ","
+ CppAsString2(RELKIND_VIEW) ","
+ CppAsString2(RELKIND_MATVIEW) ","
+ CppAsString2(RELKIND_SEQUENCE) ","
+ CppAsString2(RELKIND_FOREIGN_TABLE) ","
+ CppAsString2(RELKIND_PARTITIONED_TABLE) ")\n");
+
+ /*
+ * Unless a schema pattern is specified, we suppress system and temp
+ * tables, since they normally aren't very interesting from a permissions
+ * point of view. You can see 'em by explicit request though, eg with \z
+ * pg_catalog.*
+ */
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "c.relname", NULL,
+ "n.nspname !~ '^pg_' AND pg_catalog.pg_table_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ if (!res)
+ {
+ termPQExpBuffer(&buf);
+ return false;
+ }
+
+ myopt.nullPrint = NULL;
+ printfPQExpBuffer(&buf, _("Access privileges"));
+ myopt.title = buf.data;
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ termPQExpBuffer(&buf);
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \ddp
+ *
+ * List Default ACLs. The pattern can match either schema or role name.
+ */
+bool
+listDefaultACLs(const char *pattern)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, true, false};
+
+ if (pset.sversion < 90000)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support altering default privileges.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT pg_catalog.pg_get_userbyid(d.defaclrole) AS \"%s\",\n"
+ " n.nspname AS \"%s\",\n"
+ " CASE d.defaclobjtype WHEN '%c' THEN '%s' WHEN '%c' THEN '%s' WHEN '%c' THEN '%s' WHEN '%c' THEN '%s' WHEN '%c' THEN '%s' END AS \"%s\",\n"
+ " ",
+ gettext_noop("Owner"),
+ gettext_noop("Schema"),
+ DEFACLOBJ_RELATION,
+ gettext_noop("table"),
+ DEFACLOBJ_SEQUENCE,
+ gettext_noop("sequence"),
+ DEFACLOBJ_FUNCTION,
+ gettext_noop("function"),
+ DEFACLOBJ_TYPE,
+ gettext_noop("type"),
+ DEFACLOBJ_NAMESPACE,
+ gettext_noop("schema"),
+ gettext_noop("Type"));
+
+ printACLColumn(&buf, "d.defaclacl");
+
+ appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_default_acl d\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.defaclnamespace\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL,
+ "n.nspname",
+ "pg_catalog.pg_get_userbyid(d.defaclrole)",
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 3;");
+
+ res = PSQLexec(buf.data);
+ if (!res)
+ {
+ termPQExpBuffer(&buf);
+ return false;
+ }
+
+ myopt.nullPrint = NULL;
+ printfPQExpBuffer(&buf, _("Default access privileges"));
+ myopt.title = buf.data;
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ termPQExpBuffer(&buf);
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * Get object comments
+ *
+ * \dd [foo]
+ *
+ * Note: This command only lists comments for object types which do not have
+ * their comments displayed by their own backslash commands. The following
+ * types of objects will be displayed: constraint, operator class,
+ * operator family, rule, and trigger.
+ *
+ */
+bool
+objectDescription(const char *pattern, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, true, false};
+
+ initPQExpBuffer(&buf);
+
+ appendPQExpBuffer(&buf,
+ "SELECT DISTINCT tt.nspname AS \"%s\", tt.name AS \"%s\", tt.object AS \"%s\", d.description AS \"%s\"\n"
+ "FROM (\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Object"),
+ gettext_noop("Description"));
+
+ /* Table constraint descriptions */
+ appendPQExpBuffer(&buf,
+ " SELECT pgc.oid as oid, pgc.tableoid AS tableoid,\n"
+ " n.nspname as nspname,\n"
+ " CAST(pgc.conname AS pg_catalog.text) as name,"
+ " CAST('%s' AS pg_catalog.text) as object\n"
+ " FROM pg_catalog.pg_constraint pgc\n"
+ " JOIN pg_catalog.pg_class c "
+ "ON c.oid = pgc.conrelid\n"
+ " LEFT JOIN pg_catalog.pg_namespace n "
+ " ON n.oid = c.relnamespace\n",
+ gettext_noop("table constraint"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, !showSystem && !pattern,
+ false, "n.nspname", "pgc.conname", NULL,
+ "pg_catalog.pg_table_is_visible(c.oid)");
+
+ /* Domain constraint descriptions */
+ appendPQExpBuffer(&buf,
+ "UNION ALL\n"
+ " SELECT pgc.oid as oid, pgc.tableoid AS tableoid,\n"
+ " n.nspname as nspname,\n"
+ " CAST(pgc.conname AS pg_catalog.text) as name,"
+ " CAST('%s' AS pg_catalog.text) as object\n"
+ " FROM pg_catalog.pg_constraint pgc\n"
+ " JOIN pg_catalog.pg_type t "
+ "ON t.oid = pgc.contypid\n"
+ " LEFT JOIN pg_catalog.pg_namespace n "
+ " ON n.oid = t.typnamespace\n",
+ gettext_noop("domain constraint"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, !showSystem && !pattern,
+ false, "n.nspname", "pgc.conname", NULL,
+ "pg_catalog.pg_type_is_visible(t.oid)");
+
+
+ /*
+ * pg_opclass.opcmethod only available in 8.3+
+ */
+ if (pset.sversion >= 80300)
+ {
+ /* Operator class descriptions */
+ appendPQExpBuffer(&buf,
+ "UNION ALL\n"
+ " SELECT o.oid as oid, o.tableoid as tableoid,\n"
+ " n.nspname as nspname,\n"
+ " CAST(o.opcname AS pg_catalog.text) as name,\n"
+ " CAST('%s' AS pg_catalog.text) as object\n"
+ " FROM pg_catalog.pg_opclass o\n"
+ " JOIN pg_catalog.pg_am am ON "
+ "o.opcmethod = am.oid\n"
+ " JOIN pg_catalog.pg_namespace n ON "
+ "n.oid = o.opcnamespace\n",
+ gettext_noop("operator class"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "o.opcname", NULL,
+ "pg_catalog.pg_opclass_is_visible(o.oid)");
+ }
+
+ /*
+ * although operator family comments have been around since 8.3,
+ * pg_opfamily_is_visible is only available in 9.2+
+ */
+ if (pset.sversion >= 90200)
+ {
+ /* Operator family descriptions */
+ appendPQExpBuffer(&buf,
+ "UNION ALL\n"
+ " SELECT opf.oid as oid, opf.tableoid as tableoid,\n"
+ " n.nspname as nspname,\n"
+ " CAST(opf.opfname AS pg_catalog.text) AS name,\n"
+ " CAST('%s' AS pg_catalog.text) as object\n"
+ " FROM pg_catalog.pg_opfamily opf\n"
+ " JOIN pg_catalog.pg_am am "
+ "ON opf.opfmethod = am.oid\n"
+ " JOIN pg_catalog.pg_namespace n "
+ "ON opf.opfnamespace = n.oid\n",
+ gettext_noop("operator family"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "opf.opfname", NULL,
+ "pg_catalog.pg_opfamily_is_visible(opf.oid)");
+ }
+
+ /* Rule descriptions (ignore rules for views) */
+ appendPQExpBuffer(&buf,
+ "UNION ALL\n"
+ " SELECT r.oid as oid, r.tableoid as tableoid,\n"
+ " n.nspname as nspname,\n"
+ " CAST(r.rulename AS pg_catalog.text) as name,"
+ " CAST('%s' AS pg_catalog.text) as object\n"
+ " FROM pg_catalog.pg_rewrite r\n"
+ " JOIN pg_catalog.pg_class c ON c.oid = r.ev_class\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n"
+ " WHERE r.rulename != '_RETURN'\n",
+ gettext_noop("rule"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "r.rulename", NULL,
+ "pg_catalog.pg_table_is_visible(c.oid)");
+
+ /* Trigger descriptions */
+ appendPQExpBuffer(&buf,
+ "UNION ALL\n"
+ " SELECT t.oid as oid, t.tableoid as tableoid,\n"
+ " n.nspname as nspname,\n"
+ " CAST(t.tgname AS pg_catalog.text) as name,"
+ " CAST('%s' AS pg_catalog.text) as object\n"
+ " FROM pg_catalog.pg_trigger t\n"
+ " JOIN pg_catalog.pg_class c ON c.oid = t.tgrelid\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n",
+ gettext_noop("trigger"));
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, !showSystem && !pattern, false,
+ "n.nspname", "t.tgname", NULL,
+ "pg_catalog.pg_table_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf,
+ ") AS tt\n"
+ " JOIN pg_catalog.pg_description d ON (tt.oid = d.objoid AND tt.tableoid = d.classoid AND d.objsubid = 0)\n");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 3;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("Object descriptions");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * describeTableDetails (for \d)
+ *
+ * This routine finds the tables to be displayed, and calls
+ * describeOneTableDetails for each one.
+ *
+ * verbose: if true, this is \d+
+ */
+bool
+describeTableDetails(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ int i;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT c.oid,\n"
+ " n.nspname,\n"
+ " c.relname\n"
+ "FROM pg_catalog.pg_class c\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, !showSystem && !pattern, false,
+ "n.nspname", "c.relname", NULL,
+ "pg_catalog.pg_table_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 2, 3;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ if (PQntuples(res) == 0)
+ {
+ if (!pset.quiet)
+ {
+ if (pattern)
+ pg_log_error("Did not find any relation named \"%s\".",
+ pattern);
+ else
+ pg_log_error("Did not find any relations.");
+ }
+ PQclear(res);
+ return false;
+ }
+
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ const char *oid;
+ const char *nspname;
+ const char *relname;
+
+ oid = PQgetvalue(res, i, 0);
+ nspname = PQgetvalue(res, i, 1);
+ relname = PQgetvalue(res, i, 2);
+
+ if (!describeOneTableDetails(nspname, relname, oid, verbose))
+ {
+ PQclear(res);
+ return false;
+ }
+ if (cancel_pressed)
+ {
+ PQclear(res);
+ return false;
+ }
+ }
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * describeOneTableDetails (for \d)
+ *
+ * Unfortunately, the information presented here is so complicated that it
+ * cannot be done in a single query. So we have to assemble the printed table
+ * by hand and pass it to the underlying printTable() function.
+ */
+static bool
+describeOneTableDetails(const char *schemaname,
+ const char *relationname,
+ const char *oid,
+ bool verbose)
+{
+ bool retval = false;
+ PQExpBufferData buf;
+ PGresult *res = NULL;
+ printTableOpt myopt = pset.popt.topt;
+ printTableContent cont;
+ bool printTableInitialized = false;
+ int i;
+ char *view_def = NULL;
+ char *headers[11];
+ PQExpBufferData title;
+ PQExpBufferData tmpbuf;
+ int cols;
+ int attname_col = -1, /* column indexes in "res" */
+ atttype_col = -1,
+ attrdef_col = -1,
+ attnotnull_col = -1,
+ attcoll_col = -1,
+ attidentity_col = -1,
+ attgenerated_col = -1,
+ isindexkey_col = -1,
+ indexdef_col = -1,
+ fdwopts_col = -1,
+ attstorage_col = -1,
+ attstattarget_col = -1,
+ attdescr_col = -1;
+ int numrows;
+ struct
+ {
+ int16 checks;
+ char relkind;
+ bool hasindex;
+ bool hasrules;
+ bool hastriggers;
+ bool rowsecurity;
+ bool forcerowsecurity;
+ bool hasoids;
+ bool ispartition;
+ Oid tablespace;
+ char *reloptions;
+ char *reloftype;
+ char relpersistence;
+ char relreplident;
+ char *relam;
+ } tableinfo;
+ bool show_column_details = false;
+
+ myopt.default_footer = false;
+ /* This output looks confusing in expanded mode. */
+ myopt.expanded = false;
+
+ initPQExpBuffer(&buf);
+ initPQExpBuffer(&title);
+ initPQExpBuffer(&tmpbuf);
+
+ /* Get general table info */
+ if (pset.sversion >= 120000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
+ "c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, "
+ "false AS relhasoids, c.relispartition, %s, c.reltablespace, "
+ "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
+ "c.relpersistence, c.relreplident, am.amname\n"
+ "FROM pg_catalog.pg_class c\n "
+ "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
+ "LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)\n"
+ "WHERE c.oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(c.reloptions || "
+ "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
+ : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 100000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
+ "c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, "
+ "c.relhasoids, c.relispartition, %s, c.reltablespace, "
+ "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
+ "c.relpersistence, c.relreplident\n"
+ "FROM pg_catalog.pg_class c\n "
+ "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
+ "WHERE c.oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(c.reloptions || "
+ "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
+ : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 90500)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
+ "c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, "
+ "c.relhasoids, false as relispartition, %s, c.reltablespace, "
+ "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
+ "c.relpersistence, c.relreplident\n"
+ "FROM pg_catalog.pg_class c\n "
+ "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
+ "WHERE c.oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(c.reloptions || "
+ "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
+ : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 90400)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
+ "c.relhastriggers, false, false, c.relhasoids, "
+ "false as relispartition, %s, c.reltablespace, "
+ "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
+ "c.relpersistence, c.relreplident\n"
+ "FROM pg_catalog.pg_class c\n "
+ "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
+ "WHERE c.oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(c.reloptions || "
+ "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
+ : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 90100)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
+ "c.relhastriggers, false, false, c.relhasoids, "
+ "false as relispartition, %s, c.reltablespace, "
+ "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, "
+ "c.relpersistence\n"
+ "FROM pg_catalog.pg_class c\n "
+ "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
+ "WHERE c.oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(c.reloptions || "
+ "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
+ : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 90000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
+ "c.relhastriggers, false, false, c.relhasoids, "
+ "false as relispartition, %s, c.reltablespace, "
+ "CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END\n"
+ "FROM pg_catalog.pg_class c\n "
+ "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
+ "WHERE c.oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(c.reloptions || "
+ "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
+ : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 80400)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, "
+ "c.relhastriggers, false, false, c.relhasoids, "
+ "false as relispartition, %s, c.reltablespace\n"
+ "FROM pg_catalog.pg_class c\n "
+ "LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
+ "WHERE c.oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(c.reloptions || "
+ "array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
+ : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 80200)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT relchecks, relkind, relhasindex, relhasrules, "
+ "reltriggers <> 0, false, false, relhasoids, "
+ "false as relispartition, %s, reltablespace\n"
+ "FROM pg_catalog.pg_class WHERE oid = '%s';",
+ (verbose ?
+ "pg_catalog.array_to_string(reloptions, E', ')" : "''"),
+ oid);
+ }
+ else if (pset.sversion >= 80000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT relchecks, relkind, relhasindex, relhasrules, "
+ "reltriggers <> 0, false, false, relhasoids, "
+ "false as relispartition, '', reltablespace\n"
+ "FROM pg_catalog.pg_class WHERE oid = '%s';",
+ oid);
+ }
+ else
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT relchecks, relkind, relhasindex, relhasrules, "
+ "reltriggers <> 0, false, false, relhasoids, "
+ "false as relispartition, '', ''\n"
+ "FROM pg_catalog.pg_class WHERE oid = '%s';",
+ oid);
+ }
+
+ res = PSQLexec(buf.data);
+ if (!res)
+ goto error_return;
+
+ /* Did we get anything? */
+ if (PQntuples(res) == 0)
+ {
+ if (!pset.quiet)
+ pg_log_error("Did not find any relation with OID %s.", oid);
+ goto error_return;
+ }
+
+ tableinfo.checks = atoi(PQgetvalue(res, 0, 0));
+ tableinfo.relkind = *(PQgetvalue(res, 0, 1));
+ tableinfo.hasindex = strcmp(PQgetvalue(res, 0, 2), "t") == 0;
+ tableinfo.hasrules = strcmp(PQgetvalue(res, 0, 3), "t") == 0;
+ tableinfo.hastriggers = strcmp(PQgetvalue(res, 0, 4), "t") == 0;
+ tableinfo.rowsecurity = strcmp(PQgetvalue(res, 0, 5), "t") == 0;
+ tableinfo.forcerowsecurity = strcmp(PQgetvalue(res, 0, 6), "t") == 0;
+ tableinfo.hasoids = strcmp(PQgetvalue(res, 0, 7), "t") == 0;
+ tableinfo.ispartition = strcmp(PQgetvalue(res, 0, 8), "t") == 0;
+ tableinfo.reloptions = (pset.sversion >= 80200) ?
+ pg_strdup(PQgetvalue(res, 0, 9)) : NULL;
+ tableinfo.tablespace = (pset.sversion >= 80000) ?
+ atooid(PQgetvalue(res, 0, 10)) : 0;
+ tableinfo.reloftype = (pset.sversion >= 90000 &&
+ strcmp(PQgetvalue(res, 0, 11), "") != 0) ?
+ pg_strdup(PQgetvalue(res, 0, 11)) : NULL;
+ tableinfo.relpersistence = (pset.sversion >= 90100) ?
+ *(PQgetvalue(res, 0, 12)) : 0;
+ tableinfo.relreplident = (pset.sversion >= 90400) ?
+ *(PQgetvalue(res, 0, 13)) : 'd';
+ if (pset.sversion >= 120000)
+ tableinfo.relam = PQgetisnull(res, 0, 14) ?
+ (char *) NULL : pg_strdup(PQgetvalue(res, 0, 14));
+ else
+ tableinfo.relam = NULL;
+ PQclear(res);
+ res = NULL;
+
+ /*
+ * If it's a sequence, deal with it here separately.
+ */
+ if (tableinfo.relkind == RELKIND_SEQUENCE)
+ {
+ PGresult *result = NULL;
+ printQueryOpt myopt = pset.popt;
+ char *footers[2] = {NULL, NULL};
+
+ if (pset.sversion >= 100000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT pg_catalog.format_type(seqtypid, NULL) AS \"%s\",\n"
+ " seqstart AS \"%s\",\n"
+ " seqmin AS \"%s\",\n"
+ " seqmax AS \"%s\",\n"
+ " seqincrement AS \"%s\",\n"
+ " CASE WHEN seqcycle THEN '%s' ELSE '%s' END AS \"%s\",\n"
+ " seqcache AS \"%s\"\n",
+ gettext_noop("Type"),
+ gettext_noop("Start"),
+ gettext_noop("Minimum"),
+ gettext_noop("Maximum"),
+ gettext_noop("Increment"),
+ gettext_noop("yes"),
+ gettext_noop("no"),
+ gettext_noop("Cycles?"),
+ gettext_noop("Cache"));
+ appendPQExpBuffer(&buf,
+ "FROM pg_catalog.pg_sequence\n"
+ "WHERE seqrelid = '%s';",
+ oid);
+ }
+ else
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT 'bigint' AS \"%s\",\n"
+ " start_value AS \"%s\",\n"
+ " min_value AS \"%s\",\n"
+ " max_value AS \"%s\",\n"
+ " increment_by AS \"%s\",\n"
+ " CASE WHEN is_cycled THEN '%s' ELSE '%s' END AS \"%s\",\n"
+ " cache_value AS \"%s\"\n",
+ gettext_noop("Type"),
+ gettext_noop("Start"),
+ gettext_noop("Minimum"),
+ gettext_noop("Maximum"),
+ gettext_noop("Increment"),
+ gettext_noop("yes"),
+ gettext_noop("no"),
+ gettext_noop("Cycles?"),
+ gettext_noop("Cache"));
+ appendPQExpBuffer(&buf, "FROM %s", fmtId(schemaname));
+ /* must be separate because fmtId isn't reentrant */
+ appendPQExpBuffer(&buf, ".%s;", fmtId(relationname));
+ }
+
+ res = PSQLexec(buf.data);
+ if (!res)
+ goto error_return;
+
+ /* Footer information about a sequence */
+
+ /* Get the column that owns this sequence */
+ printfPQExpBuffer(&buf, "SELECT pg_catalog.quote_ident(nspname) || '.' ||"
+ "\n pg_catalog.quote_ident(relname) || '.' ||"
+ "\n pg_catalog.quote_ident(attname),"
+ "\n d.deptype"
+ "\nFROM pg_catalog.pg_class c"
+ "\nINNER JOIN pg_catalog.pg_depend d ON c.oid=d.refobjid"
+ "\nINNER JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace"
+ "\nINNER JOIN pg_catalog.pg_attribute a ON ("
+ "\n a.attrelid=c.oid AND"
+ "\n a.attnum=d.refobjsubid)"
+ "\nWHERE d.classid='pg_catalog.pg_class'::pg_catalog.regclass"
+ "\n AND d.refclassid='pg_catalog.pg_class'::pg_catalog.regclass"
+ "\n AND d.objid='%s'"
+ "\n AND d.deptype IN ('a', 'i')",
+ oid);
+
+ result = PSQLexec(buf.data);
+
+ /*
+ * If we get no rows back, don't show anything (obviously). We should
+ * never get more than one row back, but if we do, just ignore it and
+ * don't print anything.
+ */
+ if (!result)
+ goto error_return;
+ else if (PQntuples(result) == 1)
+ {
+ switch (PQgetvalue(result, 0, 1)[0])
+ {
+ case 'a':
+ footers[0] = psprintf(_("Owned by: %s"),
+ PQgetvalue(result, 0, 0));
+ break;
+ case 'i':
+ footers[0] = psprintf(_("Sequence for identity column: %s"),
+ PQgetvalue(result, 0, 0));
+ break;
+ }
+ }
+ PQclear(result);
+
+ printfPQExpBuffer(&title, _("Sequence \"%s.%s\""),
+ schemaname, relationname);
+
+ myopt.footers = footers;
+ myopt.topt.default_footer = false;
+ myopt.title = title.data;
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ if (footers[0])
+ free(footers[0]);
+
+ retval = true;
+ goto error_return; /* not an error, just return early */
+ }
+
+ /* Identify whether we should print collation, nullable, default vals */
+ if (tableinfo.relkind == RELKIND_RELATION ||
+ tableinfo.relkind == RELKIND_VIEW ||
+ tableinfo.relkind == RELKIND_MATVIEW ||
+ tableinfo.relkind == RELKIND_FOREIGN_TABLE ||
+ tableinfo.relkind == RELKIND_COMPOSITE_TYPE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_TABLE)
+ show_column_details = true;
+
+ /*
+ * Get per-column info
+ *
+ * Since the set of query columns we need varies depending on relkind and
+ * server version, we compute all the column numbers on-the-fly. Column
+ * number variables for columns not fetched are left as -1; this avoids
+ * duplicative test logic below.
+ */
+ cols = 0;
+ printfPQExpBuffer(&buf, "SELECT a.attname");
+ attname_col = cols++;
+ appendPQExpBufferStr(&buf, ",\n pg_catalog.format_type(a.atttypid, a.atttypmod)");
+ atttype_col = cols++;
+
+ if (show_column_details)
+ {
+ /* use "pretty" mode for expression to avoid excessive parentheses */
+ appendPQExpBufferStr(&buf,
+ ",\n (SELECT pg_catalog.pg_get_expr(d.adbin, d.adrelid, true)"
+ "\n FROM pg_catalog.pg_attrdef d"
+ "\n WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef)"
+ ",\n a.attnotnull");
+ attrdef_col = cols++;
+ attnotnull_col = cols++;
+ if (pset.sversion >= 90100)
+ appendPQExpBufferStr(&buf, ",\n (SELECT c.collname FROM pg_catalog.pg_collation c, pg_catalog.pg_type t\n"
+ " WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation <> t.typcollation) AS attcollation");
+ else
+ appendPQExpBufferStr(&buf, ",\n NULL AS attcollation");
+ attcoll_col = cols++;
+ if (pset.sversion >= 100000)
+ appendPQExpBufferStr(&buf, ",\n a.attidentity");
+ else
+ appendPQExpBufferStr(&buf, ",\n ''::pg_catalog.char AS attidentity");
+ attidentity_col = cols++;
+ if (pset.sversion >= 120000)
+ appendPQExpBufferStr(&buf, ",\n a.attgenerated");
+ else
+ appendPQExpBufferStr(&buf, ",\n ''::pg_catalog.char AS attgenerated");
+ attgenerated_col = cols++;
+ }
+ if (tableinfo.relkind == RELKIND_INDEX ||
+ tableinfo.relkind == RELKIND_PARTITIONED_INDEX)
+ {
+ if (pset.sversion >= 110000)
+ {
+ appendPQExpBuffer(&buf, ",\n CASE WHEN a.attnum <= (SELECT i.indnkeyatts FROM pg_catalog.pg_index i WHERE i.indexrelid = '%s') THEN '%s' ELSE '%s' END AS is_key",
+ oid,
+ gettext_noop("yes"),
+ gettext_noop("no"));
+ isindexkey_col = cols++;
+ }
+ appendPQExpBufferStr(&buf, ",\n pg_catalog.pg_get_indexdef(a.attrelid, a.attnum, TRUE) AS indexdef");
+ indexdef_col = cols++;
+ }
+ /* FDW options for foreign table column, only for 9.2 or later */
+ if (tableinfo.relkind == RELKIND_FOREIGN_TABLE && pset.sversion >= 90200)
+ {
+ appendPQExpBufferStr(&buf, ",\n CASE WHEN attfdwoptions IS NULL THEN '' ELSE "
+ " '(' || pg_catalog.array_to_string(ARRAY(SELECT pg_catalog.quote_ident(option_name) || ' ' || pg_catalog.quote_literal(option_value) FROM "
+ " pg_catalog.pg_options_to_table(attfdwoptions)), ', ') || ')' END AS attfdwoptions");
+ fdwopts_col = cols++;
+ }
+ if (verbose)
+ {
+ appendPQExpBufferStr(&buf, ",\n a.attstorage");
+ attstorage_col = cols++;
+
+ /* stats target, if relevant to relkind */
+ if (tableinfo.relkind == RELKIND_RELATION ||
+ tableinfo.relkind == RELKIND_INDEX ||
+ tableinfo.relkind == RELKIND_PARTITIONED_INDEX ||
+ tableinfo.relkind == RELKIND_MATVIEW ||
+ tableinfo.relkind == RELKIND_FOREIGN_TABLE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_TABLE)
+ {
+ appendPQExpBufferStr(&buf, ",\n CASE WHEN a.attstattarget=-1 THEN NULL ELSE a.attstattarget END AS attstattarget");
+ attstattarget_col = cols++;
+ }
+
+ /*
+ * In 9.0+, we have column comments for: relations, views, composite
+ * types, and foreign tables (cf. CommentObject() in comment.c).
+ */
+ if (tableinfo.relkind == RELKIND_RELATION ||
+ tableinfo.relkind == RELKIND_VIEW ||
+ tableinfo.relkind == RELKIND_MATVIEW ||
+ tableinfo.relkind == RELKIND_FOREIGN_TABLE ||
+ tableinfo.relkind == RELKIND_COMPOSITE_TYPE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_TABLE)
+ {
+ appendPQExpBufferStr(&buf, ",\n pg_catalog.col_description(a.attrelid, a.attnum)");
+ attdescr_col = cols++;
+ }
+ }
+
+ appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_attribute a");
+ appendPQExpBuffer(&buf, "\nWHERE a.attrelid = '%s' AND a.attnum > 0 AND NOT a.attisdropped", oid);
+ appendPQExpBufferStr(&buf, "\nORDER BY a.attnum;");
+
+ res = PSQLexec(buf.data);
+ if (!res)
+ goto error_return;
+ numrows = PQntuples(res);
+
+ /* Make title */
+ switch (tableinfo.relkind)
+ {
+ case RELKIND_RELATION:
+ if (tableinfo.relpersistence == 'u')
+ printfPQExpBuffer(&title, _("Unlogged table \"%s.%s\""),
+ schemaname, relationname);
+ else
+ printfPQExpBuffer(&title, _("Table \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_VIEW:
+ printfPQExpBuffer(&title, _("View \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_MATVIEW:
+ if (tableinfo.relpersistence == 'u')
+ printfPQExpBuffer(&title, _("Unlogged materialized view \"%s.%s\""),
+ schemaname, relationname);
+ else
+ printfPQExpBuffer(&title, _("Materialized view \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_INDEX:
+ if (tableinfo.relpersistence == 'u')
+ printfPQExpBuffer(&title, _("Unlogged index \"%s.%s\""),
+ schemaname, relationname);
+ else
+ printfPQExpBuffer(&title, _("Index \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_PARTITIONED_INDEX:
+ if (tableinfo.relpersistence == 'u')
+ printfPQExpBuffer(&title, _("Unlogged partitioned index \"%s.%s\""),
+ schemaname, relationname);
+ else
+ printfPQExpBuffer(&title, _("Partitioned index \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case 's':
+ /* not used as of 8.2, but keep it for backwards compatibility */
+ printfPQExpBuffer(&title, _("Special relation \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_TOASTVALUE:
+ printfPQExpBuffer(&title, _("TOAST table \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_COMPOSITE_TYPE:
+ printfPQExpBuffer(&title, _("Composite type \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_FOREIGN_TABLE:
+ printfPQExpBuffer(&title, _("Foreign table \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ case RELKIND_PARTITIONED_TABLE:
+ if (tableinfo.relpersistence == 'u')
+ printfPQExpBuffer(&title, _("Unlogged partitioned table \"%s.%s\""),
+ schemaname, relationname);
+ else
+ printfPQExpBuffer(&title, _("Partitioned table \"%s.%s\""),
+ schemaname, relationname);
+ break;
+ default:
+ /* untranslated unknown relkind */
+ printfPQExpBuffer(&title, "?%c? \"%s.%s\"",
+ tableinfo.relkind, schemaname, relationname);
+ break;
+ }
+
+ /* Fill headers[] with the names of the columns we will output */
+ cols = 0;
+ headers[cols++] = gettext_noop("Column");
+ headers[cols++] = gettext_noop("Type");
+ if (show_column_details)
+ {
+ headers[cols++] = gettext_noop("Collation");
+ headers[cols++] = gettext_noop("Nullable");
+ headers[cols++] = gettext_noop("Default");
+ }
+ if (isindexkey_col >= 0)
+ headers[cols++] = gettext_noop("Key?");
+ if (indexdef_col >= 0)
+ headers[cols++] = gettext_noop("Definition");
+ if (fdwopts_col >= 0)
+ headers[cols++] = gettext_noop("FDW options");
+ if (attstorage_col >= 0)
+ headers[cols++] = gettext_noop("Storage");
+ if (attstattarget_col >= 0)
+ headers[cols++] = gettext_noop("Stats target");
+ if (attdescr_col >= 0)
+ headers[cols++] = gettext_noop("Description");
+
+ Assert(cols <= lengthof(headers));
+
+ printTableInit(&cont, &myopt, title.data, cols, numrows);
+ printTableInitialized = true;
+
+ for (i = 0; i < cols; i++)
+ printTableAddHeader(&cont, headers[i], true, 'l');
+
+ /* Generate table cells to be printed */
+ for (i = 0; i < numrows; i++)
+ {
+ /* Column */
+ printTableAddCell(&cont, PQgetvalue(res, i, attname_col), false, false);
+
+ /* Type */
+ printTableAddCell(&cont, PQgetvalue(res, i, atttype_col), false, false);
+
+ /* Collation, Nullable, Default */
+ if (show_column_details)
+ {
+ char *identity;
+ char *generated;
+ char *default_str;
+ bool mustfree = false;
+
+ printTableAddCell(&cont, PQgetvalue(res, i, attcoll_col), false, false);
+
+ printTableAddCell(&cont,
+ strcmp(PQgetvalue(res, i, attnotnull_col), "t") == 0 ? "not null" : "",
+ false, false);
+
+ identity = PQgetvalue(res, i, attidentity_col);
+ generated = PQgetvalue(res, i, attgenerated_col);
+
+ if (identity[0] == ATTRIBUTE_IDENTITY_ALWAYS)
+ default_str = "generated always as identity";
+ else if (identity[0] == ATTRIBUTE_IDENTITY_BY_DEFAULT)
+ default_str = "generated by default as identity";
+ else if (generated[0] == ATTRIBUTE_GENERATED_STORED)
+ {
+ default_str = psprintf("generated always as (%s) stored",
+ PQgetvalue(res, i, attrdef_col));
+ mustfree = true;
+ }
+ else
+ default_str = PQgetvalue(res, i, attrdef_col);
+
+ printTableAddCell(&cont, default_str, false, mustfree);
+ }
+
+ /* Info for index columns */
+ if (isindexkey_col >= 0)
+ printTableAddCell(&cont, PQgetvalue(res, i, isindexkey_col), true, false);
+ if (indexdef_col >= 0)
+ printTableAddCell(&cont, PQgetvalue(res, i, indexdef_col), false, false);
+
+ /* FDW options for foreign table columns */
+ if (fdwopts_col >= 0)
+ printTableAddCell(&cont, PQgetvalue(res, i, fdwopts_col), false, false);
+
+ /* Storage and Description */
+ if (attstorage_col >= 0)
+ {
+ char *storage = PQgetvalue(res, i, attstorage_col);
+
+ /* these strings are literal in our syntax, so not translated. */
+ printTableAddCell(&cont, (storage[0] == 'p' ? "plain" :
+ (storage[0] == 'm' ? "main" :
+ (storage[0] == 'x' ? "extended" :
+ (storage[0] == 'e' ? "external" :
+ "???")))),
+ false, false);
+ }
+
+ /* Statistics target, if the relkind supports this feature */
+ if (attstattarget_col >= 0)
+ printTableAddCell(&cont, PQgetvalue(res, i, attstattarget_col),
+ false, false);
+
+ /* Column comments, if the relkind supports this feature */
+ if (attdescr_col >= 0)
+ printTableAddCell(&cont, PQgetvalue(res, i, attdescr_col),
+ false, false);
+ }
+
+ /* Make footers */
+
+ if (tableinfo.ispartition)
+ {
+ /* Footer information for a partition child table */
+ PGresult *result;
+
+ printfPQExpBuffer(&buf,
+ "SELECT inhparent::pg_catalog.regclass,\n"
+ " pg_catalog.pg_get_expr(c.relpartbound, c.oid)");
+ /* If verbose, also request the partition constraint definition */
+ if (verbose)
+ appendPQExpBufferStr(&buf,
+ ",\n pg_catalog.pg_get_partition_constraintdef(c.oid)");
+ appendPQExpBuffer(&buf,
+ "\nFROM pg_catalog.pg_class c"
+ " JOIN pg_catalog.pg_inherits i"
+ " ON c.oid = inhrelid"
+ "\nWHERE c.oid = '%s';", oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+
+ if (PQntuples(result) > 0)
+ {
+ char *parent_name = PQgetvalue(result, 0, 0);
+ char *partdef = PQgetvalue(result, 0, 1);
+
+ printfPQExpBuffer(&tmpbuf, _("Partition of: %s %s"), parent_name,
+ partdef);
+ printTableAddFooter(&cont, tmpbuf.data);
+
+ if (verbose)
+ {
+ char *partconstraintdef = NULL;
+
+ if (!PQgetisnull(result, 0, 2))
+ partconstraintdef = PQgetvalue(result, 0, 2);
+ /* If there isn't any constraint, show that explicitly */
+ if (partconstraintdef == NULL || partconstraintdef[0] == '\0')
+ printfPQExpBuffer(&tmpbuf, _("No partition constraint"));
+ else
+ printfPQExpBuffer(&tmpbuf, _("Partition constraint: %s"),
+ partconstraintdef);
+ printTableAddFooter(&cont, tmpbuf.data);
+ }
+ }
+ PQclear(result);
+ }
+
+ if (tableinfo.relkind == RELKIND_PARTITIONED_TABLE)
+ {
+ /* Footer information for a partitioned table (partitioning parent) */
+ PGresult *result;
+
+ printfPQExpBuffer(&buf,
+ "SELECT pg_catalog.pg_get_partkeydef('%s'::pg_catalog.oid);",
+ oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+
+ if (PQntuples(result) == 1)
+ {
+ char *partkeydef = PQgetvalue(result, 0, 0);
+
+ printfPQExpBuffer(&tmpbuf, _("Partition key: %s"), partkeydef);
+ printTableAddFooter(&cont, tmpbuf.data);
+ }
+ PQclear(result);
+ }
+
+ if (tableinfo.relkind == RELKIND_TOASTVALUE)
+ {
+ /* For a TOAST table, print name of owning table */
+ PGresult *result;
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname, c.relname\n"
+ "FROM pg_catalog.pg_class c"
+ " JOIN pg_catalog.pg_namespace n"
+ " ON n.oid = c.relnamespace\n"
+ "WHERE reltoastrelid = '%s';", oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+
+ if (PQntuples(result) == 1)
+ {
+ char *schemaname = PQgetvalue(result, 0, 0);
+ char *relname = PQgetvalue(result, 0, 1);
+
+ printfPQExpBuffer(&tmpbuf, _("Owning table: \"%s.%s\""),
+ schemaname, relname);
+ printTableAddFooter(&cont, tmpbuf.data);
+ }
+ PQclear(result);
+ }
+
+ if (tableinfo.relkind == RELKIND_INDEX ||
+ tableinfo.relkind == RELKIND_PARTITIONED_INDEX)
+ {
+ /* Footer information about an index */
+ PGresult *result;
+
+ printfPQExpBuffer(&buf,
+ "SELECT i.indisunique, i.indisprimary, i.indisclustered, ");
+ if (pset.sversion >= 80200)
+ appendPQExpBufferStr(&buf, "i.indisvalid,\n");
+ else
+ appendPQExpBufferStr(&buf, "true AS indisvalid,\n");
+ if (pset.sversion >= 90000)
+ appendPQExpBufferStr(&buf,
+ " (NOT i.indimmediate) AND "
+ "EXISTS (SELECT 1 FROM pg_catalog.pg_constraint "
+ "WHERE conrelid = i.indrelid AND "
+ "conindid = i.indexrelid AND "
+ "contype IN ('p','u','x') AND "
+ "condeferrable) AS condeferrable,\n"
+ " (NOT i.indimmediate) AND "
+ "EXISTS (SELECT 1 FROM pg_catalog.pg_constraint "
+ "WHERE conrelid = i.indrelid AND "
+ "conindid = i.indexrelid AND "
+ "contype IN ('p','u','x') AND "
+ "condeferred) AS condeferred,\n");
+ else
+ appendPQExpBufferStr(&buf,
+ " false AS condeferrable, false AS condeferred,\n");
+
+ if (pset.sversion >= 90400)
+ appendPQExpBufferStr(&buf, "i.indisreplident,\n");
+ else
+ appendPQExpBufferStr(&buf, "false AS indisreplident,\n");
+
+ appendPQExpBuffer(&buf, " a.amname, c2.relname, "
+ "pg_catalog.pg_get_expr(i.indpred, i.indrelid, true)\n"
+ "FROM pg_catalog.pg_index i, pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_am a\n"
+ "WHERE i.indexrelid = c.oid AND c.oid = '%s' AND c.relam = a.oid\n"
+ "AND i.indrelid = c2.oid;",
+ oid);
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else if (PQntuples(result) != 1)
+ {
+ PQclear(result);
+ goto error_return;
+ }
+ else
+ {
+ char *indisunique = PQgetvalue(result, 0, 0);
+ char *indisprimary = PQgetvalue(result, 0, 1);
+ char *indisclustered = PQgetvalue(result, 0, 2);
+ char *indisvalid = PQgetvalue(result, 0, 3);
+ char *deferrable = PQgetvalue(result, 0, 4);
+ char *deferred = PQgetvalue(result, 0, 5);
+ char *indisreplident = PQgetvalue(result, 0, 6);
+ char *indamname = PQgetvalue(result, 0, 7);
+ char *indtable = PQgetvalue(result, 0, 8);
+ char *indpred = PQgetvalue(result, 0, 9);
+
+ if (strcmp(indisprimary, "t") == 0)
+ printfPQExpBuffer(&tmpbuf, _("primary key, "));
+ else if (strcmp(indisunique, "t") == 0)
+ printfPQExpBuffer(&tmpbuf, _("unique, "));
+ else
+ resetPQExpBuffer(&tmpbuf);
+ appendPQExpBuffer(&tmpbuf, "%s, ", indamname);
+
+ /* we assume here that index and table are in same schema */
+ appendPQExpBuffer(&tmpbuf, _("for table \"%s.%s\""),
+ schemaname, indtable);
+
+ if (strlen(indpred))
+ appendPQExpBuffer(&tmpbuf, _(", predicate (%s)"), indpred);
+
+ if (strcmp(indisclustered, "t") == 0)
+ appendPQExpBufferStr(&tmpbuf, _(", clustered"));
+
+ if (strcmp(indisvalid, "t") != 0)
+ appendPQExpBufferStr(&tmpbuf, _(", invalid"));
+
+ if (strcmp(deferrable, "t") == 0)
+ appendPQExpBufferStr(&tmpbuf, _(", deferrable"));
+
+ if (strcmp(deferred, "t") == 0)
+ appendPQExpBufferStr(&tmpbuf, _(", initially deferred"));
+
+ if (strcmp(indisreplident, "t") == 0)
+ appendPQExpBufferStr(&tmpbuf, _(", replica identity"));
+
+ printTableAddFooter(&cont, tmpbuf.data);
+
+ /*
+ * If it's a partitioned index, we'll print the tablespace below
+ */
+ if (tableinfo.relkind == RELKIND_INDEX)
+ add_tablespace_footer(&cont, tableinfo.relkind,
+ tableinfo.tablespace, true);
+ }
+
+ PQclear(result);
+ }
+ /* If you add relkinds here, see also "Finish printing..." stanza below */
+ else if (tableinfo.relkind == RELKIND_RELATION ||
+ tableinfo.relkind == RELKIND_MATVIEW ||
+ tableinfo.relkind == RELKIND_FOREIGN_TABLE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_TABLE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_INDEX ||
+ tableinfo.relkind == RELKIND_TOASTVALUE)
+ {
+ /* Footer information about a table */
+ PGresult *result = NULL;
+ int tuples = 0;
+
+ /* print indexes */
+ if (tableinfo.hasindex)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, ");
+ if (pset.sversion >= 80200)
+ appendPQExpBufferStr(&buf, "i.indisvalid, ");
+ else
+ appendPQExpBufferStr(&buf, "true as indisvalid, ");
+ appendPQExpBufferStr(&buf, "pg_catalog.pg_get_indexdef(i.indexrelid, 0, true),\n ");
+ if (pset.sversion >= 90000)
+ appendPQExpBufferStr(&buf,
+ "pg_catalog.pg_get_constraintdef(con.oid, true), "
+ "contype, condeferrable, condeferred");
+ else
+ appendPQExpBufferStr(&buf,
+ "null AS constraintdef, null AS contype, "
+ "false AS condeferrable, false AS condeferred");
+ if (pset.sversion >= 90400)
+ appendPQExpBufferStr(&buf, ", i.indisreplident");
+ else
+ appendPQExpBufferStr(&buf, ", false AS indisreplident");
+ if (pset.sversion >= 80000)
+ appendPQExpBufferStr(&buf, ", c2.reltablespace");
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i\n");
+ if (pset.sversion >= 90000)
+ appendPQExpBufferStr(&buf,
+ " LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x'))\n");
+ appendPQExpBuffer(&buf,
+ "WHERE c.oid = '%s' AND c.oid = i.indrelid AND i.indexrelid = c2.oid\n"
+ "ORDER BY i.indisprimary DESC, c2.relname;",
+ oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ {
+ printTableAddFooter(&cont, _("Indexes:"));
+ for (i = 0; i < tuples; i++)
+ {
+ /* untranslated index name */
+ printfPQExpBuffer(&buf, " \"%s\"",
+ PQgetvalue(result, i, 0));
+
+ /* If exclusion constraint, print the constraintdef */
+ if (strcmp(PQgetvalue(result, i, 7), "x") == 0)
+ {
+ appendPQExpBuffer(&buf, " %s",
+ PQgetvalue(result, i, 6));
+ }
+ else
+ {
+ const char *indexdef;
+ const char *usingpos;
+
+ /* Label as primary key or unique (but not both) */
+ if (strcmp(PQgetvalue(result, i, 1), "t") == 0)
+ appendPQExpBufferStr(&buf, " PRIMARY KEY,");
+ else if (strcmp(PQgetvalue(result, i, 2), "t") == 0)
+ {
+ if (strcmp(PQgetvalue(result, i, 7), "u") == 0)
+ appendPQExpBufferStr(&buf, " UNIQUE CONSTRAINT,");
+ else
+ appendPQExpBufferStr(&buf, " UNIQUE,");
+ }
+
+ /* Everything after "USING" is echoed verbatim */
+ indexdef = PQgetvalue(result, i, 5);
+ usingpos = strstr(indexdef, " USING ");
+ if (usingpos)
+ indexdef = usingpos + 7;
+ appendPQExpBuffer(&buf, " %s", indexdef);
+
+ /* Need these for deferrable PK/UNIQUE indexes */
+ if (strcmp(PQgetvalue(result, i, 8), "t") == 0)
+ appendPQExpBufferStr(&buf, " DEFERRABLE");
+
+ if (strcmp(PQgetvalue(result, i, 9), "t") == 0)
+ appendPQExpBufferStr(&buf, " INITIALLY DEFERRED");
+ }
+
+ /* Add these for all cases */
+ if (strcmp(PQgetvalue(result, i, 3), "t") == 0)
+ appendPQExpBufferStr(&buf, " CLUSTER");
+
+ if (strcmp(PQgetvalue(result, i, 4), "t") != 0)
+ appendPQExpBufferStr(&buf, " INVALID");
+
+ if (strcmp(PQgetvalue(result, i, 10), "t") == 0)
+ appendPQExpBufferStr(&buf, " REPLICA IDENTITY");
+
+ printTableAddFooter(&cont, buf.data);
+
+ /* Print tablespace of the index on the same line */
+ if (pset.sversion >= 80000)
+ add_tablespace_footer(&cont, RELKIND_INDEX,
+ atooid(PQgetvalue(result, i, 11)),
+ false);
+ }
+ }
+ PQclear(result);
+ }
+
+ /* print table (and column) check constraints */
+ if (tableinfo.checks)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT r.conname, "
+ "pg_catalog.pg_get_constraintdef(r.oid, true)\n"
+ "FROM pg_catalog.pg_constraint r\n"
+ "WHERE r.conrelid = '%s' AND r.contype = 'c'\n"
+ "ORDER BY 1;",
+ oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ {
+ printTableAddFooter(&cont, _("Check constraints:"));
+ for (i = 0; i < tuples; i++)
+ {
+ /* untranslated constraint name and def */
+ printfPQExpBuffer(&buf, " \"%s\" %s",
+ PQgetvalue(result, i, 0),
+ PQgetvalue(result, i, 1));
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ PQclear(result);
+ }
+
+ /*
+ * Print foreign-key constraints (there are none if no triggers,
+ * except if the table is partitioned, in which case the triggers
+ * appear in the partitions)
+ */
+ if (tableinfo.hastriggers ||
+ tableinfo.relkind == RELKIND_PARTITIONED_TABLE)
+ {
+ if (pset.sversion >= 120000 &&
+ (tableinfo.ispartition || tableinfo.relkind == RELKIND_PARTITIONED_TABLE))
+ {
+ /*
+ * Put the constraints defined in this table first, followed
+ * by the constraints defined in ancestor partitioned tables.
+ */
+ printfPQExpBuffer(&buf,
+ "SELECT conrelid = '%s'::pg_catalog.regclass AS sametable,\n"
+ " conname,\n"
+ " pg_catalog.pg_get_constraintdef(oid, true) AS condef,\n"
+ " conrelid::pg_catalog.regclass AS ontable\n"
+ " FROM pg_catalog.pg_constraint,\n"
+ " pg_catalog.pg_partition_ancestors('%s')\n"
+ " WHERE conrelid = relid AND contype = 'f' AND conparentid = 0\n"
+ "ORDER BY sametable DESC, conname;",
+ oid, oid);
+ }
+ else
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT true as sametable, conname,\n"
+ " pg_catalog.pg_get_constraintdef(r.oid, true) as condef,\n"
+ " conrelid::pg_catalog.regclass AS ontable\n"
+ "FROM pg_catalog.pg_constraint r\n"
+ "WHERE r.conrelid = '%s' AND r.contype = 'f'\n",
+ oid);
+
+ if (pset.sversion >= 120000)
+ appendPQExpBufferStr(&buf, " AND conparentid = 0\n");
+ appendPQExpBufferStr(&buf, "ORDER BY conname");
+ }
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ {
+ int i_sametable = PQfnumber(result, "sametable"),
+ i_conname = PQfnumber(result, "conname"),
+ i_condef = PQfnumber(result, "condef"),
+ i_ontable = PQfnumber(result, "ontable");
+
+ printTableAddFooter(&cont, _("Foreign-key constraints:"));
+ for (i = 0; i < tuples; i++)
+ {
+ /*
+ * Print untranslated constraint name and definition. Use
+ * a "TABLE tab" prefix when the constraint is defined in
+ * a parent partitioned table.
+ */
+ if (strcmp(PQgetvalue(result, i, i_sametable), "f") == 0)
+ printfPQExpBuffer(&buf, " TABLE \"%s\" CONSTRAINT \"%s\" %s",
+ PQgetvalue(result, i, i_ontable),
+ PQgetvalue(result, i, i_conname),
+ PQgetvalue(result, i, i_condef));
+ else
+ printfPQExpBuffer(&buf, " \"%s\" %s",
+ PQgetvalue(result, i, i_conname),
+ PQgetvalue(result, i, i_condef));
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ PQclear(result);
+ }
+
+ /* print incoming foreign-key references */
+ if (tableinfo.hastriggers ||
+ tableinfo.relkind == RELKIND_PARTITIONED_TABLE)
+ {
+ if (pset.sversion >= 120000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT conname, conrelid::pg_catalog.regclass AS ontable,\n"
+ " pg_catalog.pg_get_constraintdef(oid, true) AS condef\n"
+ " FROM pg_catalog.pg_constraint c\n"
+ " WHERE confrelid IN (SELECT pg_catalog.pg_partition_ancestors('%s')\n"
+ " UNION ALL VALUES ('%s'::pg_catalog.regclass))\n"
+ " AND contype = 'f' AND conparentid = 0\n"
+ "ORDER BY conname;",
+ oid, oid);
+ }
+ else
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT conname, conrelid::pg_catalog.regclass AS ontable,\n"
+ " pg_catalog.pg_get_constraintdef(oid, true) AS condef\n"
+ " FROM pg_catalog.pg_constraint\n"
+ " WHERE confrelid = %s AND contype = 'f'\n"
+ "ORDER BY conname;",
+ oid);
+ }
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ {
+ int i_conname = PQfnumber(result, "conname"),
+ i_ontable = PQfnumber(result, "ontable"),
+ i_condef = PQfnumber(result, "condef");
+
+ printTableAddFooter(&cont, _("Referenced by:"));
+ for (i = 0; i < tuples; i++)
+ {
+ printfPQExpBuffer(&buf, " TABLE \"%s\" CONSTRAINT \"%s\" %s",
+ PQgetvalue(result, i, i_ontable),
+ PQgetvalue(result, i, i_conname),
+ PQgetvalue(result, i, i_condef));
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ PQclear(result);
+ }
+
+ /* print any row-level policies */
+ if (pset.sversion >= 90500)
+ {
+ printfPQExpBuffer(&buf, "SELECT pol.polname,");
+ if (pset.sversion >= 100000)
+ appendPQExpBufferStr(&buf,
+ " pol.polpermissive,\n");
+ else
+ appendPQExpBufferStr(&buf,
+ " 't' as polpermissive,\n");
+ appendPQExpBuffer(&buf,
+ " CASE WHEN pol.polroles = '{0}' THEN NULL ELSE pg_catalog.array_to_string(array(select rolname from pg_catalog.pg_roles where oid = any (pol.polroles) order by 1),',') END,\n"
+ " pg_catalog.pg_get_expr(pol.polqual, pol.polrelid),\n"
+ " pg_catalog.pg_get_expr(pol.polwithcheck, pol.polrelid),\n"
+ " CASE pol.polcmd\n"
+ " WHEN 'r' THEN 'SELECT'\n"
+ " WHEN 'a' THEN 'INSERT'\n"
+ " WHEN 'w' THEN 'UPDATE'\n"
+ " WHEN 'd' THEN 'DELETE'\n"
+ " END AS cmd\n"
+ "FROM pg_catalog.pg_policy pol\n"
+ "WHERE pol.polrelid = '%s' ORDER BY 1;",
+ oid);
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ /*
+ * Handle cases where RLS is enabled and there are policies, or
+ * there aren't policies, or RLS isn't enabled but there are
+ * policies
+ */
+ if (tableinfo.rowsecurity && !tableinfo.forcerowsecurity && tuples > 0)
+ printTableAddFooter(&cont, _("Policies:"));
+
+ if (tableinfo.rowsecurity && tableinfo.forcerowsecurity && tuples > 0)
+ printTableAddFooter(&cont, _("Policies (forced row security enabled):"));
+
+ if (tableinfo.rowsecurity && !tableinfo.forcerowsecurity && tuples == 0)
+ printTableAddFooter(&cont, _("Policies (row security enabled): (none)"));
+
+ if (tableinfo.rowsecurity && tableinfo.forcerowsecurity && tuples == 0)
+ printTableAddFooter(&cont, _("Policies (forced row security enabled): (none)"));
+
+ if (!tableinfo.rowsecurity && tuples > 0)
+ printTableAddFooter(&cont, _("Policies (row security disabled):"));
+
+ /* Might be an empty set - that's ok */
+ for (i = 0; i < tuples; i++)
+ {
+ printfPQExpBuffer(&buf, " POLICY \"%s\"",
+ PQgetvalue(result, i, 0));
+
+ if (*(PQgetvalue(result, i, 1)) == 'f')
+ appendPQExpBufferStr(&buf, " AS RESTRICTIVE");
+
+ if (!PQgetisnull(result, i, 5))
+ appendPQExpBuffer(&buf, " FOR %s",
+ PQgetvalue(result, i, 5));
+
+ if (!PQgetisnull(result, i, 2))
+ {
+ appendPQExpBuffer(&buf, "\n TO %s",
+ PQgetvalue(result, i, 2));
+ }
+
+ if (!PQgetisnull(result, i, 3))
+ appendPQExpBuffer(&buf, "\n USING (%s)",
+ PQgetvalue(result, i, 3));
+
+ if (!PQgetisnull(result, i, 4))
+ appendPQExpBuffer(&buf, "\n WITH CHECK (%s)",
+ PQgetvalue(result, i, 4));
+
+ printTableAddFooter(&cont, buf.data);
+
+ }
+ PQclear(result);
+ }
+
+ /* print any extended statistics */
+ if (pset.sversion >= 100000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT oid, "
+ "stxrelid::pg_catalog.regclass, "
+ "stxnamespace::pg_catalog.regnamespace AS nsp, "
+ "stxname,\n"
+ " (SELECT pg_catalog.string_agg(pg_catalog.quote_ident(attname),', ')\n"
+ " FROM pg_catalog.unnest(stxkeys) s(attnum)\n"
+ " JOIN pg_catalog.pg_attribute a ON (stxrelid = a.attrelid AND\n"
+ " a.attnum = s.attnum AND NOT attisdropped)) AS columns,\n"
+ " 'd' = any(stxkind) AS ndist_enabled,\n"
+ " 'f' = any(stxkind) AS deps_enabled,\n"
+ " 'm' = any(stxkind) AS mcv_enabled,\n");
+
+ if (pset.sversion >= 130000)
+ appendPQExpBufferStr(&buf, " stxstattarget\n");
+ else
+ appendPQExpBufferStr(&buf, " -1 AS stxstattarget\n");
+ appendPQExpBuffer(&buf, "FROM pg_catalog.pg_statistic_ext stat\n"
+ "WHERE stxrelid = '%s'\n"
+ "ORDER BY 1;",
+ oid);
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ {
+ printTableAddFooter(&cont, _("Statistics objects:"));
+
+ for (i = 0; i < tuples; i++)
+ {
+ bool gotone = false;
+
+ printfPQExpBuffer(&buf, " ");
+
+ /* statistics object name (qualified with namespace) */
+ appendPQExpBuffer(&buf, "\"%s\".\"%s\" (",
+ PQgetvalue(result, i, 2),
+ PQgetvalue(result, i, 3));
+
+ /* options */
+ if (strcmp(PQgetvalue(result, i, 5), "t") == 0)
+ {
+ appendPQExpBufferStr(&buf, "ndistinct");
+ gotone = true;
+ }
+
+ if (strcmp(PQgetvalue(result, i, 6), "t") == 0)
+ {
+ appendPQExpBuffer(&buf, "%sdependencies", gotone ? ", " : "");
+ gotone = true;
+ }
+
+ if (strcmp(PQgetvalue(result, i, 7), "t") == 0)
+ {
+ appendPQExpBuffer(&buf, "%smcv", gotone ? ", " : "");
+ }
+
+ appendPQExpBuffer(&buf, ") ON %s FROM %s",
+ PQgetvalue(result, i, 4),
+ PQgetvalue(result, i, 1));
+
+ /* Show the stats target if it's not default */
+ if (strcmp(PQgetvalue(result, i, 8), "-1") != 0)
+ appendPQExpBuffer(&buf, "; STATISTICS %s",
+ PQgetvalue(result, i, 8));
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ PQclear(result);
+ }
+
+ /* print rules */
+ if (tableinfo.hasrules && tableinfo.relkind != RELKIND_MATVIEW)
+ {
+ if (pset.sversion >= 80300)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true)), "
+ "ev_enabled\n"
+ "FROM pg_catalog.pg_rewrite r\n"
+ "WHERE r.ev_class = '%s' ORDER BY 1;",
+ oid);
+ }
+ else
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true)), "
+ "'O' AS ev_enabled\n"
+ "FROM pg_catalog.pg_rewrite r\n"
+ "WHERE r.ev_class = '%s' ORDER BY 1;",
+ oid);
+ }
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ {
+ bool have_heading;
+ int category;
+
+ for (category = 0; category < 4; category++)
+ {
+ have_heading = false;
+
+ for (i = 0; i < tuples; i++)
+ {
+ const char *ruledef;
+ bool list_rule = false;
+
+ switch (category)
+ {
+ case 0:
+ if (*PQgetvalue(result, i, 2) == 'O')
+ list_rule = true;
+ break;
+ case 1:
+ if (*PQgetvalue(result, i, 2) == 'D')
+ list_rule = true;
+ break;
+ case 2:
+ if (*PQgetvalue(result, i, 2) == 'A')
+ list_rule = true;
+ break;
+ case 3:
+ if (*PQgetvalue(result, i, 2) == 'R')
+ list_rule = true;
+ break;
+ }
+ if (!list_rule)
+ continue;
+
+ if (!have_heading)
+ {
+ switch (category)
+ {
+ case 0:
+ printfPQExpBuffer(&buf, _("Rules:"));
+ break;
+ case 1:
+ printfPQExpBuffer(&buf, _("Disabled rules:"));
+ break;
+ case 2:
+ printfPQExpBuffer(&buf, _("Rules firing always:"));
+ break;
+ case 3:
+ printfPQExpBuffer(&buf, _("Rules firing on replica only:"));
+ break;
+ }
+ printTableAddFooter(&cont, buf.data);
+ have_heading = true;
+ }
+
+ /* Everything after "CREATE RULE" is echoed verbatim */
+ ruledef = PQgetvalue(result, i, 1);
+ ruledef += 12;
+ printfPQExpBuffer(&buf, " %s", ruledef);
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ }
+ PQclear(result);
+ }
+
+ /* print any publications */
+ if (pset.sversion >= 100000)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT pubname\n"
+ "FROM pg_catalog.pg_publication p\n"
+ "JOIN pg_catalog.pg_publication_rel pr ON p.oid = pr.prpubid\n"
+ "WHERE pr.prrelid = '%s'\n"
+ "UNION ALL\n"
+ "SELECT pubname\n"
+ "FROM pg_catalog.pg_publication p\n"
+ "WHERE p.puballtables AND pg_catalog.pg_relation_is_publishable('%s')\n"
+ "ORDER BY 1;",
+ oid, oid);
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ printTableAddFooter(&cont, _("Publications:"));
+
+ /* Might be an empty set - that's ok */
+ for (i = 0; i < tuples; i++)
+ {
+ printfPQExpBuffer(&buf, " \"%s\"",
+ PQgetvalue(result, i, 0));
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ PQclear(result);
+ }
+ }
+
+ /* Get view_def if table is a view or materialized view */
+ if ((tableinfo.relkind == RELKIND_VIEW ||
+ tableinfo.relkind == RELKIND_MATVIEW) && verbose)
+ {
+ PGresult *result;
+
+ printfPQExpBuffer(&buf,
+ "SELECT pg_catalog.pg_get_viewdef('%s'::pg_catalog.oid, true);",
+ oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+
+ if (PQntuples(result) > 0)
+ view_def = pg_strdup(PQgetvalue(result, 0, 0));
+
+ PQclear(result);
+ }
+
+ if (view_def)
+ {
+ PGresult *result = NULL;
+
+ /* Footer information about a view */
+ printTableAddFooter(&cont, _("View definition:"));
+ printTableAddFooter(&cont, view_def);
+
+ /* print rules */
+ if (tableinfo.hasrules)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true))\n"
+ "FROM pg_catalog.pg_rewrite r\n"
+ "WHERE r.ev_class = '%s' AND r.rulename != '_RETURN' ORDER BY 1;",
+ oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+
+ if (PQntuples(result) > 0)
+ {
+ printTableAddFooter(&cont, _("Rules:"));
+ for (i = 0; i < PQntuples(result); i++)
+ {
+ const char *ruledef;
+
+ /* Everything after "CREATE RULE" is echoed verbatim */
+ ruledef = PQgetvalue(result, i, 1);
+ ruledef += 12;
+
+ printfPQExpBuffer(&buf, " %s", ruledef);
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ PQclear(result);
+ }
+ }
+
+ /*
+ * Print triggers next, if any (but only user-defined triggers). This
+ * could apply to either a table or a view.
+ */
+ if (tableinfo.hastriggers)
+ {
+ PGresult *result;
+ int tuples;
+
+ printfPQExpBuffer(&buf,
+ "SELECT t.tgname, "
+ "pg_catalog.pg_get_triggerdef(t.oid%s), "
+ "t.tgenabled, %s, %s\n"
+ "FROM pg_catalog.pg_trigger t\n"
+ "WHERE t.tgrelid = '%s' AND ",
+ (pset.sversion >= 90000 ? ", true" : ""),
+ (pset.sversion >= 90000 ? "t.tgisinternal" :
+ pset.sversion >= 80300 ?
+ "t.tgconstraint <> 0 AS tgisinternal" :
+ "false AS tgisinternal"),
+ (pset.sversion >= 130000 ?
+ "(SELECT (NULLIF(a.relid, t.tgrelid))::pg_catalog.regclass"
+ " FROM pg_catalog.pg_trigger AS u, "
+ " pg_catalog.pg_partition_ancestors(t.tgrelid) AS a"
+ " WHERE u.tgname = t.tgname AND u.tgrelid = a.relid"
+ " AND u.tgparentid = 0) AS parent" :
+ "NULL AS parent"),
+ oid);
+ if (pset.sversion >= 110000)
+ appendPQExpBufferStr(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D') \n"
+ " OR EXISTS (SELECT 1 FROM pg_catalog.pg_depend WHERE objid = t.oid \n"
+ " AND refclassid = 'pg_catalog.pg_trigger'::pg_catalog.regclass))");
+ else if (pset.sversion >= 90000)
+ /* display/warn about disabled internal triggers */
+ appendPQExpBufferStr(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D'))");
+ else if (pset.sversion >= 80300)
+ appendPQExpBufferStr(&buf, "(t.tgconstraint = 0 OR (t.tgconstraint <> 0 AND t.tgenabled = 'D'))");
+ else
+ appendPQExpBufferStr(&buf,
+ "(NOT tgisconstraint "
+ " OR NOT EXISTS"
+ " (SELECT 1 FROM pg_catalog.pg_depend d "
+ " JOIN pg_catalog.pg_constraint c ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) "
+ " WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))");
+ appendPQExpBufferStr(&buf, "\nORDER BY 1;");
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ tuples = PQntuples(result);
+
+ if (tuples > 0)
+ {
+ bool have_heading;
+ int category;
+
+ /*
+ * split the output into 4 different categories. Enabled triggers,
+ * disabled triggers and the two special ALWAYS and REPLICA
+ * configurations.
+ */
+ for (category = 0; category <= 4; category++)
+ {
+ have_heading = false;
+ for (i = 0; i < tuples; i++)
+ {
+ bool list_trigger;
+ const char *tgdef;
+ const char *usingpos;
+ const char *tgenabled;
+ const char *tgisinternal;
+
+ /*
+ * Check if this trigger falls into the current category
+ */
+ tgenabled = PQgetvalue(result, i, 2);
+ tgisinternal = PQgetvalue(result, i, 3);
+ list_trigger = false;
+ switch (category)
+ {
+ case 0:
+ if (*tgenabled == 'O' || *tgenabled == 't')
+ list_trigger = true;
+ break;
+ case 1:
+ if ((*tgenabled == 'D' || *tgenabled == 'f') &&
+ *tgisinternal == 'f')
+ list_trigger = true;
+ break;
+ case 2:
+ if ((*tgenabled == 'D' || *tgenabled == 'f') &&
+ *tgisinternal == 't')
+ list_trigger = true;
+ break;
+ case 3:
+ if (*tgenabled == 'A')
+ list_trigger = true;
+ break;
+ case 4:
+ if (*tgenabled == 'R')
+ list_trigger = true;
+ break;
+ }
+ if (list_trigger == false)
+ continue;
+
+ /* Print the category heading once */
+ if (have_heading == false)
+ {
+ switch (category)
+ {
+ case 0:
+ printfPQExpBuffer(&buf, _("Triggers:"));
+ break;
+ case 1:
+ if (pset.sversion >= 80300)
+ printfPQExpBuffer(&buf, _("Disabled user triggers:"));
+ else
+ printfPQExpBuffer(&buf, _("Disabled triggers:"));
+ break;
+ case 2:
+ printfPQExpBuffer(&buf, _("Disabled internal triggers:"));
+ break;
+ case 3:
+ printfPQExpBuffer(&buf, _("Triggers firing always:"));
+ break;
+ case 4:
+ printfPQExpBuffer(&buf, _("Triggers firing on replica only:"));
+ break;
+
+ }
+ printTableAddFooter(&cont, buf.data);
+ have_heading = true;
+ }
+
+ /* Everything after "TRIGGER" is echoed verbatim */
+ tgdef = PQgetvalue(result, i, 1);
+ usingpos = strstr(tgdef, " TRIGGER ");
+ if (usingpos)
+ tgdef = usingpos + 9;
+
+ printfPQExpBuffer(&buf, " %s", tgdef);
+
+ /* Visually distinguish inherited triggers */
+ if (!PQgetisnull(result, i, 4))
+ appendPQExpBuffer(&buf, ", ON TABLE %s",
+ PQgetvalue(result, i, 4));
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ }
+ PQclear(result);
+ }
+
+ /*
+ * Finish printing the footer information about a table.
+ */
+ if (tableinfo.relkind == RELKIND_RELATION ||
+ tableinfo.relkind == RELKIND_MATVIEW ||
+ tableinfo.relkind == RELKIND_FOREIGN_TABLE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_TABLE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_INDEX ||
+ tableinfo.relkind == RELKIND_TOASTVALUE)
+ {
+ bool is_partitioned;
+ PGresult *result;
+ int tuples;
+
+ /* simplify some repeated tests below */
+ is_partitioned = (tableinfo.relkind == RELKIND_PARTITIONED_TABLE ||
+ tableinfo.relkind == RELKIND_PARTITIONED_INDEX);
+
+ /* print foreign server name */
+ if (tableinfo.relkind == RELKIND_FOREIGN_TABLE)
+ {
+ char *ftoptions;
+
+ /* Footer information about foreign table */
+ printfPQExpBuffer(&buf,
+ "SELECT s.srvname,\n"
+ " pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT pg_catalog.quote_ident(option_name)"
+ " || ' ' || pg_catalog.quote_literal(option_value)\n"
+ " FROM pg_catalog.pg_options_to_table(ftoptions)), ', ')\n"
+ "FROM pg_catalog.pg_foreign_table f,\n"
+ " pg_catalog.pg_foreign_server s\n"
+ "WHERE f.ftrelid = '%s' AND s.oid = f.ftserver;",
+ oid);
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else if (PQntuples(result) != 1)
+ {
+ PQclear(result);
+ goto error_return;
+ }
+
+ /* Print server name */
+ printfPQExpBuffer(&buf, _("Server: %s"),
+ PQgetvalue(result, 0, 0));
+ printTableAddFooter(&cont, buf.data);
+
+ /* Print per-table FDW options, if any */
+ ftoptions = PQgetvalue(result, 0, 1);
+ if (ftoptions && ftoptions[0] != '\0')
+ {
+ printfPQExpBuffer(&buf, _("FDW options: (%s)"), ftoptions);
+ printTableAddFooter(&cont, buf.data);
+ }
+ PQclear(result);
+ }
+
+ /* print tables inherited from (exclude partitioned parents) */
+ printfPQExpBuffer(&buf,
+ "SELECT c.oid::pg_catalog.regclass\n"
+ "FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i\n"
+ "WHERE c.oid = i.inhparent AND i.inhrelid = '%s'\n"
+ " AND c.relkind != " CppAsString2(RELKIND_PARTITIONED_TABLE)
+ " AND c.relkind != " CppAsString2(RELKIND_PARTITIONED_INDEX)
+ "\nORDER BY inhseqno;",
+ oid);
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ else
+ {
+ const char *s = _("Inherits");
+ int sw = pg_wcswidth(s, strlen(s), pset.encoding);
+
+ tuples = PQntuples(result);
+
+ for (i = 0; i < tuples; i++)
+ {
+ if (i == 0)
+ printfPQExpBuffer(&buf, "%s: %s",
+ s, PQgetvalue(result, i, 0));
+ else
+ printfPQExpBuffer(&buf, "%*s %s",
+ sw, "", PQgetvalue(result, i, 0));
+ if (i < tuples - 1)
+ appendPQExpBufferChar(&buf, ',');
+
+ printTableAddFooter(&cont, buf.data);
+ }
+
+ PQclear(result);
+ }
+
+ /* print child tables (with additional info if partitions) */
+ if (pset.sversion >= 100000)
+ printfPQExpBuffer(&buf,
+ "SELECT c.oid::pg_catalog.regclass, c.relkind,"
+ " pg_catalog.pg_get_expr(c.relpartbound, c.oid)\n"
+ "FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i\n"
+ "WHERE c.oid = i.inhrelid AND i.inhparent = '%s'\n"
+ "ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) = 'DEFAULT',"
+ " c.oid::pg_catalog.regclass::pg_catalog.text;",
+ oid);
+ else if (pset.sversion >= 80300)
+ printfPQExpBuffer(&buf,
+ "SELECT c.oid::pg_catalog.regclass, c.relkind, NULL\n"
+ "FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i\n"
+ "WHERE c.oid = i.inhrelid AND i.inhparent = '%s'\n"
+ "ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text;",
+ oid);
+ else
+ printfPQExpBuffer(&buf,
+ "SELECT c.oid::pg_catalog.regclass, c.relkind, NULL\n"
+ "FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i\n"
+ "WHERE c.oid = i.inhrelid AND i.inhparent = '%s'\n"
+ "ORDER BY c.relname;",
+ oid);
+
+ result = PSQLexec(buf.data);
+ if (!result)
+ goto error_return;
+ tuples = PQntuples(result);
+
+ /*
+ * For a partitioned table with no partitions, always print the number
+ * of partitions as zero, even when verbose output is expected.
+ * Otherwise, we will not print "Partitions" section for a partitioned
+ * table without any partitions.
+ */
+ if (is_partitioned && tuples == 0)
+ {
+ printfPQExpBuffer(&buf, _("Number of partitions: %d"), tuples);
+ printTableAddFooter(&cont, buf.data);
+ }
+ else if (!verbose)
+ {
+ /* print the number of child tables, if any */
+ if (tuples > 0)
+ {
+ if (is_partitioned)
+ printfPQExpBuffer(&buf, _("Number of partitions: %d (Use \\d+ to list them.)"), tuples);
+ else
+ printfPQExpBuffer(&buf, _("Number of child tables: %d (Use \\d+ to list them.)"), tuples);
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ else
+ {
+ /* display the list of child tables */
+ const char *ct = is_partitioned ? _("Partitions") : _("Child tables");
+ int ctw = pg_wcswidth(ct, strlen(ct), pset.encoding);
+
+ for (i = 0; i < tuples; i++)
+ {
+ char child_relkind = *PQgetvalue(result, i, 1);
+
+ if (i == 0)
+ printfPQExpBuffer(&buf, "%s: %s",
+ ct, PQgetvalue(result, i, 0));
+ else
+ printfPQExpBuffer(&buf, "%*s %s",
+ ctw, "", PQgetvalue(result, i, 0));
+ if (!PQgetisnull(result, i, 2))
+ appendPQExpBuffer(&buf, " %s", PQgetvalue(result, i, 2));
+ if (child_relkind == RELKIND_PARTITIONED_TABLE ||
+ child_relkind == RELKIND_PARTITIONED_INDEX)
+ appendPQExpBufferStr(&buf, ", PARTITIONED");
+ if (i < tuples - 1)
+ appendPQExpBufferChar(&buf, ',');
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+ PQclear(result);
+
+ /* Table type */
+ if (tableinfo.reloftype)
+ {
+ printfPQExpBuffer(&buf, _("Typed table of type: %s"), tableinfo.reloftype);
+ printTableAddFooter(&cont, buf.data);
+ }
+
+ if (verbose &&
+ (tableinfo.relkind == RELKIND_RELATION ||
+ tableinfo.relkind == RELKIND_MATVIEW) &&
+
+ /*
+ * No need to display default values; we already display a REPLICA
+ * IDENTITY marker on indexes.
+ */
+ tableinfo.relreplident != 'i' &&
+ ((strcmp(schemaname, "pg_catalog") != 0 && tableinfo.relreplident != 'd') ||
+ (strcmp(schemaname, "pg_catalog") == 0 && tableinfo.relreplident != 'n')))
+ {
+ const char *s = _("Replica Identity");
+
+ printfPQExpBuffer(&buf, "%s: %s",
+ s,
+ tableinfo.relreplident == 'f' ? "FULL" :
+ tableinfo.relreplident == 'n' ? "NOTHING" :
+ "???");
+
+ printTableAddFooter(&cont, buf.data);
+ }
+
+ /* OIDs, if verbose and not a materialized view */
+ if (verbose && tableinfo.relkind != RELKIND_MATVIEW && tableinfo.hasoids)
+ printTableAddFooter(&cont, _("Has OIDs: yes"));
+
+ /* Tablespace info */
+ add_tablespace_footer(&cont, tableinfo.relkind, tableinfo.tablespace,
+ true);
+
+ /* Access method info */
+ if (verbose && tableinfo.relam != NULL && !pset.hide_tableam)
+ {
+ printfPQExpBuffer(&buf, _("Access method: %s"), tableinfo.relam);
+ printTableAddFooter(&cont, buf.data);
+ }
+ }
+
+ /* reloptions, if verbose */
+ if (verbose &&
+ tableinfo.reloptions && tableinfo.reloptions[0] != '\0')
+ {
+ const char *t = _("Options");
+
+ printfPQExpBuffer(&buf, "%s: %s", t, tableinfo.reloptions);
+ printTableAddFooter(&cont, buf.data);
+ }
+
+ printTable(&cont, pset.queryFout, false, pset.logfile);
+
+ retval = true;
+
+error_return:
+
+ /* clean up */
+ if (printTableInitialized)
+ printTableCleanup(&cont);
+ termPQExpBuffer(&buf);
+ termPQExpBuffer(&title);
+ termPQExpBuffer(&tmpbuf);
+
+ if (view_def)
+ free(view_def);
+
+ if (res)
+ PQclear(res);
+
+ return retval;
+}
+
+/*
+ * Add a tablespace description to a footer. If 'newline' is true, it is added
+ * in a new line; otherwise it's appended to the current value of the last
+ * footer.
+ */
+static void
+add_tablespace_footer(printTableContent *const cont, char relkind,
+ Oid tablespace, const bool newline)
+{
+ /* relkinds for which we support tablespaces */
+ if (relkind == RELKIND_RELATION ||
+ relkind == RELKIND_MATVIEW ||
+ relkind == RELKIND_INDEX ||
+ relkind == RELKIND_PARTITIONED_TABLE ||
+ relkind == RELKIND_PARTITIONED_INDEX ||
+ relkind == RELKIND_TOASTVALUE)
+ {
+ /*
+ * We ignore the database default tablespace so that users not using
+ * tablespaces don't need to know about them. This case also covers
+ * pre-8.0 servers, for which tablespace will always be 0.
+ */
+ if (tablespace != 0)
+ {
+ PGresult *result = NULL;
+ PQExpBufferData buf;
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT spcname FROM pg_catalog.pg_tablespace\n"
+ "WHERE oid = '%u';", tablespace);
+ result = PSQLexec(buf.data);
+ if (!result)
+ {
+ termPQExpBuffer(&buf);
+ return;
+ }
+ /* Should always be the case, but.... */
+ if (PQntuples(result) > 0)
+ {
+ if (newline)
+ {
+ /* Add the tablespace as a new footer */
+ printfPQExpBuffer(&buf, _("Tablespace: \"%s\""),
+ PQgetvalue(result, 0, 0));
+ printTableAddFooter(cont, buf.data);
+ }
+ else
+ {
+ /* Append the tablespace to the latest footer */
+ printfPQExpBuffer(&buf, "%s", cont->footer->data);
+
+ /*-------
+ translator: before this string there's an index description like
+ '"foo_pkey" PRIMARY KEY, btree (a)' */
+ appendPQExpBuffer(&buf, _(", tablespace \"%s\""),
+ PQgetvalue(result, 0, 0));
+ printTableSetFooter(cont, buf.data);
+ }
+ }
+ PQclear(result);
+ termPQExpBuffer(&buf);
+ }
+ }
+}
+
+/*
+ * \du or \dg
+ *
+ * Describes roles. Any schema portion of the pattern is ignored.
+ */
+bool
+describeRoles(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printTableContent cont;
+ printTableOpt myopt = pset.popt.topt;
+ int ncols = 3;
+ int nrows = 0;
+ int i;
+ int conns;
+ const char align = 'l';
+ char **attr;
+
+ myopt.default_footer = false;
+
+ initPQExpBuffer(&buf);
+
+ if (pset.sversion >= 80100)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT r.rolname, r.rolsuper, r.rolinherit,\n"
+ " r.rolcreaterole, r.rolcreatedb, r.rolcanlogin,\n"
+ " r.rolconnlimit, r.rolvaliduntil,\n"
+ " ARRAY(SELECT b.rolname\n"
+ " FROM pg_catalog.pg_auth_members m\n"
+ " JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)\n"
+ " WHERE m.member = r.oid) as memberof");
+
+ if (verbose && pset.sversion >= 80200)
+ {
+ appendPQExpBufferStr(&buf, "\n, pg_catalog.shobj_description(r.oid, 'pg_authid') AS description");
+ ncols++;
+ }
+ if (pset.sversion >= 90100)
+ {
+ appendPQExpBufferStr(&buf, "\n, r.rolreplication");
+ }
+
+ if (pset.sversion >= 90500)
+ {
+ appendPQExpBufferStr(&buf, "\n, r.rolbypassrls");
+ }
+
+ appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_roles r\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, "WHERE r.rolname !~ '^pg_'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "r.rolname", NULL, NULL);
+ }
+ else
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT u.usename AS rolname,\n"
+ " u.usesuper AS rolsuper,\n"
+ " true AS rolinherit, false AS rolcreaterole,\n"
+ " u.usecreatedb AS rolcreatedb, true AS rolcanlogin,\n"
+ " -1 AS rolconnlimit,"
+ " u.valuntil as rolvaliduntil,\n"
+ " ARRAY(SELECT g.groname FROM pg_catalog.pg_group g WHERE u.usesysid = ANY(g.grolist)) as memberof"
+ "\nFROM pg_catalog.pg_user u\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "u.usename", NULL, NULL);
+ }
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ if (!res)
+ return false;
+
+ nrows = PQntuples(res);
+ attr = pg_malloc0((nrows + 1) * sizeof(*attr));
+
+ printTableInit(&cont, &myopt, _("List of roles"), ncols, nrows);
+
+ printTableAddHeader(&cont, gettext_noop("Role name"), true, align);
+ printTableAddHeader(&cont, gettext_noop("Attributes"), true, align);
+ printTableAddHeader(&cont, gettext_noop("Member of"), true, align);
+
+ if (verbose && pset.sversion >= 80200)
+ printTableAddHeader(&cont, gettext_noop("Description"), true, align);
+
+ for (i = 0; i < nrows; i++)
+ {
+ printTableAddCell(&cont, PQgetvalue(res, i, 0), false, false);
+
+ resetPQExpBuffer(&buf);
+ if (strcmp(PQgetvalue(res, i, 1), "t") == 0)
+ add_role_attribute(&buf, _("Superuser"));
+
+ if (strcmp(PQgetvalue(res, i, 2), "t") != 0)
+ add_role_attribute(&buf, _("No inheritance"));
+
+ if (strcmp(PQgetvalue(res, i, 3), "t") == 0)
+ add_role_attribute(&buf, _("Create role"));
+
+ if (strcmp(PQgetvalue(res, i, 4), "t") == 0)
+ add_role_attribute(&buf, _("Create DB"));
+
+ if (strcmp(PQgetvalue(res, i, 5), "t") != 0)
+ add_role_attribute(&buf, _("Cannot login"));
+
+ if (pset.sversion >= 90100)
+ if (strcmp(PQgetvalue(res, i, (verbose ? 10 : 9)), "t") == 0)
+ add_role_attribute(&buf, _("Replication"));
+
+ if (pset.sversion >= 90500)
+ if (strcmp(PQgetvalue(res, i, (verbose ? 11 : 10)), "t") == 0)
+ add_role_attribute(&buf, _("Bypass RLS"));
+
+ conns = atoi(PQgetvalue(res, i, 6));
+ if (conns >= 0)
+ {
+ if (buf.len > 0)
+ appendPQExpBufferChar(&buf, '\n');
+
+ if (conns == 0)
+ appendPQExpBufferStr(&buf, _("No connections"));
+ else
+ appendPQExpBuffer(&buf, ngettext("%d connection",
+ "%d connections",
+ conns),
+ conns);
+ }
+
+ if (strcmp(PQgetvalue(res, i, 7), "") != 0)
+ {
+ if (buf.len > 0)
+ appendPQExpBufferChar(&buf, '\n');
+ appendPQExpBufferStr(&buf, _("Password valid until "));
+ appendPQExpBufferStr(&buf, PQgetvalue(res, i, 7));
+ }
+
+ attr[i] = pg_strdup(buf.data);
+
+ printTableAddCell(&cont, attr[i], false, false);
+
+ printTableAddCell(&cont, PQgetvalue(res, i, 8), false, false);
+
+ if (verbose && pset.sversion >= 80200)
+ printTableAddCell(&cont, PQgetvalue(res, i, 9), false, false);
+ }
+ termPQExpBuffer(&buf);
+
+ printTable(&cont, pset.queryFout, false, pset.logfile);
+ printTableCleanup(&cont);
+
+ for (i = 0; i < nrows; i++)
+ free(attr[i]);
+ free(attr);
+
+ PQclear(res);
+ return true;
+}
+
+static void
+add_role_attribute(PQExpBuffer buf, const char *const str)
+{
+ if (buf->len > 0)
+ appendPQExpBufferStr(buf, ", ");
+
+ appendPQExpBufferStr(buf, str);
+}
+
+/*
+ * \drds
+ */
+bool
+listDbRoleSettings(const char *pattern, const char *pattern2)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ bool havewhere;
+
+ if (pset.sversion < 90000)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support per-database role settings.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf, "SELECT rolname AS \"%s\", datname AS \"%s\",\n"
+ "pg_catalog.array_to_string(setconfig, E'\\n') AS \"%s\"\n"
+ "FROM pg_catalog.pg_db_role_setting s\n"
+ "LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase\n"
+ "LEFT JOIN pg_catalog.pg_roles r ON r.oid = setrole\n",
+ gettext_noop("Role"),
+ gettext_noop("Database"),
+ gettext_noop("Settings"));
+ havewhere = processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "r.rolname", NULL, NULL);
+ processSQLNamePattern(pset.db, &buf, pattern2, havewhere, false,
+ NULL, "d.datname", NULL, NULL);
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ /*
+ * Most functions in this file are content to print an empty table when
+ * there are no matching objects. We intentionally deviate from that
+ * here, but only in !quiet mode, because of the possibility that the user
+ * is confused about what the two pattern arguments mean.
+ */
+ if (PQntuples(res) == 0 && !pset.quiet)
+ {
+ if (pattern && pattern2)
+ pg_log_error("Did not find any settings for role \"%s\" and database \"%s\".",
+ pattern, pattern2);
+ else if (pattern)
+ pg_log_error("Did not find any settings for role \"%s\".",
+ pattern);
+ else
+ pg_log_error("Did not find any settings.");
+ }
+ else
+ {
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of settings");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+ }
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * listTables()
+ *
+ * handler for \dt, \di, etc.
+ *
+ * tabtypes is an array of characters, specifying what info is desired:
+ * t - tables
+ * i - indexes
+ * v - views
+ * m - materialized views
+ * s - sequences
+ * E - foreign table (Note: different from 'f', the relkind value)
+ * (any order of the above is fine)
+ */
+bool
+listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSystem)
+{
+ bool showTables = strchr(tabtypes, 't') != NULL;
+ bool showIndexes = strchr(tabtypes, 'i') != NULL;
+ bool showViews = strchr(tabtypes, 'v') != NULL;
+ bool showMatViews = strchr(tabtypes, 'm') != NULL;
+ bool showSeq = strchr(tabtypes, 's') != NULL;
+ bool showForeign = strchr(tabtypes, 'E') != NULL;
+
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ int cols_so_far;
+ bool translate_columns[] = {false, false, true, false, false, false, false, false};
+
+ /* If tabtypes is empty, we default to \dtvmsE (but see also command.c) */
+ if (!(showTables || showIndexes || showViews || showMatViews || showSeq || showForeign))
+ showTables = showViews = showMatViews = showSeq = showForeign = true;
+
+ initPQExpBuffer(&buf);
+
+ /*
+ * Note: as of Pg 8.2, we no longer use relkind 's' (special), but we keep
+ * it here for backwards compatibility.
+ */
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " c.relname as \"%s\",\n"
+ " CASE c.relkind"
+ " WHEN " CppAsString2(RELKIND_RELATION) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_VIEW) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_MATVIEW) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_INDEX) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_SEQUENCE) " THEN '%s'"
+ " WHEN 's' THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_FOREIGN_TABLE) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_PARTITIONED_TABLE) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_PARTITIONED_INDEX) " THEN '%s'"
+ " END as \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(c.relowner) as \"%s\"",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("table"),
+ gettext_noop("view"),
+ gettext_noop("materialized view"),
+ gettext_noop("index"),
+ gettext_noop("sequence"),
+ gettext_noop("special"),
+ gettext_noop("foreign table"),
+ gettext_noop("partitioned table"),
+ gettext_noop("partitioned index"),
+ gettext_noop("Type"),
+ gettext_noop("Owner"));
+ cols_so_far = 4;
+
+ if (showIndexes)
+ {
+ appendPQExpBuffer(&buf,
+ ",\n c2.relname as \"%s\"",
+ gettext_noop("Table"));
+ cols_so_far++;
+ }
+
+ if (verbose)
+ {
+ /*
+ * Show whether a relation is permanent, temporary, or unlogged. Like
+ * describeOneTableDetails(), we consider that persistence emerged in
+ * v9.1, even though related concepts existed before.
+ */
+ if (pset.sversion >= 90100)
+ {
+ appendPQExpBuffer(&buf,
+ ",\n CASE c.relpersistence WHEN 'p' THEN '%s' WHEN 't' THEN '%s' WHEN 'u' THEN '%s' END as \"%s\"",
+ gettext_noop("permanent"),
+ gettext_noop("temporary"),
+ gettext_noop("unlogged"),
+ gettext_noop("Persistence"));
+ translate_columns[cols_so_far] = true;
+ }
+
+ /*
+ * We don't bother to count cols_so_far below here, as there's no need
+ * to; this might change with future additions to the output columns.
+ */
+
+ /*
+ * As of PostgreSQL 9.0, use pg_table_size() to show a more accurate
+ * size of a table, including FSM, VM and TOAST tables.
+ */
+ if (pset.sversion >= 90000)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) as \"%s\"",
+ gettext_noop("Size"));
+ else if (pset.sversion >= 80100)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.pg_size_pretty(pg_catalog.pg_relation_size(c.oid)) as \"%s\"",
+ gettext_noop("Size"));
+
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.obj_description(c.oid, 'pg_class') as \"%s\"",
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_class c"
+ "\n LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace");
+ if (showIndexes)
+ appendPQExpBufferStr(&buf,
+ "\n LEFT JOIN pg_catalog.pg_index i ON i.indexrelid = c.oid"
+ "\n LEFT JOIN pg_catalog.pg_class c2 ON i.indrelid = c2.oid");
+
+ appendPQExpBufferStr(&buf, "\nWHERE c.relkind IN (");
+ if (showTables)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_RELATION) ","
+ CppAsString2(RELKIND_PARTITIONED_TABLE) ",");
+ if (showViews)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_VIEW) ",");
+ if (showMatViews)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_MATVIEW) ",");
+ if (showIndexes)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_INDEX) ","
+ CppAsString2(RELKIND_PARTITIONED_INDEX) ",");
+ if (showSeq)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_SEQUENCE) ",");
+ if (showSystem || pattern)
+ appendPQExpBufferStr(&buf, "'s',"); /* was RELKIND_SPECIAL */
+ if (showForeign)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_FOREIGN_TABLE) ",");
+
+ appendPQExpBufferStr(&buf, "''"); /* dummy */
+ appendPQExpBufferStr(&buf, ")\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ /*
+ * TOAST objects are suppressed unconditionally. Since we don't provide
+ * any way to select RELKIND_TOASTVALUE above, we would never show toast
+ * tables in any case; it seems a bit confusing to allow their indexes to
+ * be shown. Use plain \d if you really need to look at a TOAST
+ * table/index.
+ */
+ appendPQExpBufferStr(&buf, " AND n.nspname !~ '^pg_toast'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "c.relname", NULL,
+ "pg_catalog.pg_table_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1,2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ /*
+ * Most functions in this file are content to print an empty table when
+ * there are no matching objects. We intentionally deviate from that
+ * here, but only in !quiet mode, for historical reasons.
+ */
+ if (PQntuples(res) == 0 && !pset.quiet)
+ {
+ if (pattern)
+ pg_log_error("Did not find any relation named \"%s\".",
+ pattern);
+ else
+ pg_log_error("Did not find any relations.");
+ }
+ else
+ {
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of relations");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+ }
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dP
+ * Takes an optional regexp to select particular relations
+ *
+ * As with \d, you can specify the kinds of relations you want:
+ *
+ * t for tables
+ * i for indexes
+ *
+ * And there's additional flags:
+ *
+ * n to list non-leaf partitioned tables
+ *
+ * and you can mix and match these in any order.
+ */
+bool
+listPartitionedTables(const char *reltypes, const char *pattern, bool verbose)
+{
+ bool showTables = strchr(reltypes, 't') != NULL;
+ bool showIndexes = strchr(reltypes, 'i') != NULL;
+ bool showNested = strchr(reltypes, 'n') != NULL;
+ PQExpBufferData buf;
+ PQExpBufferData title;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ bool translate_columns[] = {false, false, false, false, false, false, false, false, false};
+ const char *tabletitle;
+ bool mixed_output = false;
+
+ /*
+ * Note: Declarative table partitioning is only supported as of Pg 10.0.
+ */
+ if (pset.sversion < 100000)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support declarative table partitioning.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ /* If no relation kind was selected, show them all */
+ if (!showTables && !showIndexes)
+ showTables = showIndexes = true;
+
+ if (showIndexes && !showTables)
+ tabletitle = _("List of partitioned indexes"); /* \dPi */
+ else if (showTables && !showIndexes)
+ tabletitle = _("List of partitioned tables"); /* \dPt */
+ else
+ {
+ /* show all kinds */
+ tabletitle = _("List of partitioned relations");
+ mixed_output = true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " c.relname as \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(c.relowner) as \"%s\"",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Owner"));
+
+ if (mixed_output)
+ {
+ appendPQExpBuffer(&buf,
+ ",\n CASE c.relkind"
+ " WHEN " CppAsString2(RELKIND_PARTITIONED_TABLE) " THEN '%s'"
+ " WHEN " CppAsString2(RELKIND_PARTITIONED_INDEX) " THEN '%s'"
+ " END as \"%s\"",
+ gettext_noop("partitioned table"),
+ gettext_noop("partitioned index"),
+ gettext_noop("Type"));
+
+ translate_columns[3] = true;
+ }
+
+ if (showNested || pattern)
+ appendPQExpBuffer(&buf,
+ ",\n inh.inhparent::regclass as \"%s\"",
+ gettext_noop("Parent name"));
+
+ if (showIndexes)
+ appendPQExpBuffer(&buf,
+ ",\n c2.oid::regclass as \"%s\"",
+ gettext_noop("Table"));
+
+ if (verbose)
+ {
+ if (showNested)
+ {
+ appendPQExpBuffer(&buf,
+ ",\n s.dps as \"%s\"",
+ gettext_noop("Leaf partition size"));
+ appendPQExpBuffer(&buf,
+ ",\n s.tps as \"%s\"",
+ gettext_noop("Total size"));
+ }
+ else
+ /* Sizes of all partitions are considered in this case. */
+ appendPQExpBuffer(&buf,
+ ",\n s.tps as \"%s\"",
+ gettext_noop("Total size"));
+
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.obj_description(c.oid, 'pg_class') as \"%s\"",
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_class c"
+ "\n LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace");
+
+ if (showIndexes)
+ appendPQExpBufferStr(&buf,
+ "\n LEFT JOIN pg_catalog.pg_index i ON i.indexrelid = c.oid"
+ "\n LEFT JOIN pg_catalog.pg_class c2 ON i.indrelid = c2.oid");
+
+ if (showNested || pattern)
+ appendPQExpBufferStr(&buf,
+ "\n LEFT JOIN pg_catalog.pg_inherits inh ON c.oid = inh.inhrelid");
+
+ if (verbose)
+ {
+ if (pset.sversion < 120000)
+ {
+ appendPQExpBufferStr(&buf,
+ ",\n LATERAL (WITH RECURSIVE d\n"
+ " AS (SELECT inhrelid AS oid, 1 AS level\n"
+ " FROM pg_catalog.pg_inherits\n"
+ " WHERE inhparent = c.oid\n"
+ " UNION ALL\n"
+ " SELECT inhrelid, level + 1\n"
+ " FROM pg_catalog.pg_inherits i\n"
+ " JOIN d ON i.inhparent = d.oid)\n"
+ " SELECT pg_catalog.pg_size_pretty(sum(pg_catalog.pg_table_size("
+ "d.oid))) AS tps,\n"
+ " pg_catalog.pg_size_pretty(sum("
+ "\n CASE WHEN d.level = 1"
+ " THEN pg_catalog.pg_table_size(d.oid) ELSE 0 END)) AS dps\n"
+ " FROM d) s");
+ }
+ else
+ {
+ /* PostgreSQL 12 has pg_partition_tree function */
+ appendPQExpBufferStr(&buf,
+ ",\n LATERAL (SELECT pg_catalog.pg_size_pretty(sum("
+ "\n CASE WHEN ppt.isleaf AND ppt.level = 1"
+ "\n THEN pg_catalog.pg_table_size(ppt.relid)"
+ " ELSE 0 END)) AS dps"
+ ",\n pg_catalog.pg_size_pretty(sum("
+ "pg_catalog.pg_table_size(ppt.relid))) AS tps"
+ "\n FROM pg_catalog.pg_partition_tree(c.oid) ppt) s");
+ }
+ }
+
+ appendPQExpBufferStr(&buf, "\nWHERE c.relkind IN (");
+ if (showTables)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_PARTITIONED_TABLE) ",");
+ if (showIndexes)
+ appendPQExpBufferStr(&buf, CppAsString2(RELKIND_PARTITIONED_INDEX) ",");
+ appendPQExpBufferStr(&buf, "''"); /* dummy */
+ appendPQExpBufferStr(&buf, ")\n");
+
+ appendPQExpBufferStr(&buf, !showNested && !pattern ?
+ " AND NOT c.relispartition\n" : "");
+
+ if (!pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ /*
+ * TOAST objects are suppressed unconditionally. Since we don't provide
+ * any way to select RELKIND_TOASTVALUE above, we would never show toast
+ * tables in any case; it seems a bit confusing to allow their indexes to
+ * be shown. Use plain \d if you really need to look at a TOAST
+ * table/index.
+ */
+ appendPQExpBufferStr(&buf, " AND n.nspname !~ '^pg_toast'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "c.relname", NULL,
+ "pg_catalog.pg_table_is_visible(c.oid)");
+
+ appendPQExpBuffer(&buf, "ORDER BY \"Schema\", %s%s\"Name\";",
+ mixed_output ? "\"Type\" DESC, " : "",
+ showNested || pattern ? "\"Parent name\" NULLS FIRST, " : "");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ initPQExpBuffer(&title);
+ appendPQExpBufferStr(&title, tabletitle);
+
+ myopt.nullPrint = NULL;
+ myopt.title = title.data;
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ termPQExpBuffer(&title);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dL
+ *
+ * Describes languages.
+ */
+bool
+listLanguages(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT l.lanname AS \"%s\",\n",
+ gettext_noop("Name"));
+ if (pset.sversion >= 80300)
+ appendPQExpBuffer(&buf,
+ " pg_catalog.pg_get_userbyid(l.lanowner) as \"%s\",\n",
+ gettext_noop("Owner"));
+
+ appendPQExpBuffer(&buf,
+ " l.lanpltrusted AS \"%s\"",
+ gettext_noop("Trusted"));
+
+ if (verbose)
+ {
+ appendPQExpBuffer(&buf,
+ ",\n NOT l.lanispl AS \"%s\",\n"
+ " l.lanplcallfoid::pg_catalog.regprocedure AS \"%s\",\n"
+ " l.lanvalidator::pg_catalog.regprocedure AS \"%s\",\n ",
+ gettext_noop("Internal language"),
+ gettext_noop("Call handler"),
+ gettext_noop("Validator"));
+ if (pset.sversion >= 90000)
+ appendPQExpBuffer(&buf, "l.laninline::pg_catalog.regprocedure AS \"%s\",\n ",
+ gettext_noop("Inline handler"));
+ printACLColumn(&buf, "l.lanacl");
+ }
+
+ appendPQExpBuffer(&buf,
+ ",\n d.description AS \"%s\""
+ "\nFROM pg_catalog.pg_language l\n"
+ "LEFT JOIN pg_catalog.pg_description d\n"
+ " ON d.classoid = l.tableoid AND d.objoid = l.oid\n"
+ " AND d.objsubid = 0\n",
+ gettext_noop("Description"));
+
+ if (pattern)
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "l.lanname", NULL, NULL);
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, "WHERE l.lanplcallfoid != 0\n");
+
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of languages");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \dD
+ *
+ * Describes domains.
+ */
+bool
+listDomains(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname as \"%s\",\n"
+ " t.typname as \"%s\",\n"
+ " pg_catalog.format_type(t.typbasetype, t.typtypmod) as \"%s\",\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Type"));
+
+ if (pset.sversion >= 90100)
+ appendPQExpBuffer(&buf,
+ " (SELECT c.collname FROM pg_catalog.pg_collation c, pg_catalog.pg_type bt\n"
+ " WHERE c.oid = t.typcollation AND bt.oid = t.typbasetype AND t.typcollation <> bt.typcollation) as \"%s\",\n",
+ gettext_noop("Collation"));
+ appendPQExpBuffer(&buf,
+ " CASE WHEN t.typnotnull THEN 'not null' END as \"%s\",\n"
+ " t.typdefault as \"%s\",\n"
+ " pg_catalog.array_to_string(ARRAY(\n"
+ " SELECT pg_catalog.pg_get_constraintdef(r.oid, true) FROM pg_catalog.pg_constraint r WHERE t.oid = r.contypid\n"
+ " ), ' ') as \"%s\"",
+ gettext_noop("Nullable"),
+ gettext_noop("Default"),
+ gettext_noop("Check"));
+
+ if (verbose)
+ {
+ if (pset.sversion >= 90200)
+ {
+ appendPQExpBufferStr(&buf, ",\n ");
+ printACLColumn(&buf, "t.typacl");
+ }
+ appendPQExpBuffer(&buf,
+ ",\n d.description as \"%s\"",
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_type t\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n");
+
+ if (verbose)
+ appendPQExpBufferStr(&buf,
+ " LEFT JOIN pg_catalog.pg_description d "
+ "ON d.classoid = t.tableoid AND d.objoid = t.oid "
+ "AND d.objsubid = 0\n");
+
+ appendPQExpBufferStr(&buf, "WHERE t.typtype = 'd'\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "t.typname", NULL,
+ "pg_catalog.pg_type_is_visible(t.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of domains");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dc
+ *
+ * Describes conversions.
+ */
+bool
+listConversions(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] =
+ {false, false, false, false, true, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname AS \"%s\",\n"
+ " c.conname AS \"%s\",\n"
+ " pg_catalog.pg_encoding_to_char(c.conforencoding) AS \"%s\",\n"
+ " pg_catalog.pg_encoding_to_char(c.contoencoding) AS \"%s\",\n"
+ " CASE WHEN c.condefault THEN '%s'\n"
+ " ELSE '%s' END AS \"%s\"",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Source"),
+ gettext_noop("Destination"),
+ gettext_noop("yes"), gettext_noop("no"),
+ gettext_noop("Default?"));
+
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\n d.description AS \"%s\"",
+ gettext_noop("Description"));
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_conversion c\n"
+ " JOIN pg_catalog.pg_namespace n "
+ "ON n.oid = c.connamespace\n");
+
+ if (verbose)
+ appendPQExpBufferStr(&buf,
+ "LEFT JOIN pg_catalog.pg_description d "
+ "ON d.classoid = c.tableoid\n"
+ " AND d.objoid = c.oid "
+ "AND d.objsubid = 0\n");
+
+ appendPQExpBufferStr(&buf, "WHERE true\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "c.conname", NULL,
+ "pg_catalog.pg_conversion_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of conversions");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dy
+ *
+ * Describes Event Triggers.
+ */
+bool
+listEventTriggers(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] =
+ {false, false, false, true, false, false, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT evtname as \"%s\", "
+ "evtevent as \"%s\", "
+ "pg_catalog.pg_get_userbyid(e.evtowner) as \"%s\",\n"
+ " case evtenabled when 'O' then '%s'"
+ " when 'R' then '%s'"
+ " when 'A' then '%s'"
+ " when 'D' then '%s' end as \"%s\",\n"
+ " e.evtfoid::pg_catalog.regproc as \"%s\", "
+ "pg_catalog.array_to_string(array(select x"
+ " from pg_catalog.unnest(evttags) as t(x)), ', ') as \"%s\"",
+ gettext_noop("Name"),
+ gettext_noop("Event"),
+ gettext_noop("Owner"),
+ gettext_noop("enabled"),
+ gettext_noop("replica"),
+ gettext_noop("always"),
+ gettext_noop("disabled"),
+ gettext_noop("Enabled"),
+ gettext_noop("Function"),
+ gettext_noop("Tags"));
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\npg_catalog.obj_description(e.oid, 'pg_event_trigger') as \"%s\"",
+ gettext_noop("Description"));
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_event_trigger e ");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "evtname", NULL, NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of event triggers");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dC
+ *
+ * Describes casts.
+ */
+bool
+listCasts(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, false, true, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT pg_catalog.format_type(castsource, NULL) AS \"%s\",\n"
+ " pg_catalog.format_type(casttarget, NULL) AS \"%s\",\n",
+ gettext_noop("Source type"),
+ gettext_noop("Target type"));
+
+ /*
+ * We don't attempt to localize '(binary coercible)' or '(with inout)',
+ * because there's too much risk of gettext translating a function name
+ * that happens to match some string in the PO database.
+ */
+ if (pset.sversion >= 80400)
+ appendPQExpBuffer(&buf,
+ " CASE WHEN c.castmethod = '%c' THEN '(binary coercible)'\n"
+ " WHEN c.castmethod = '%c' THEN '(with inout)'\n"
+ " ELSE p.proname\n"
+ " END AS \"%s\",\n",
+ COERCION_METHOD_BINARY,
+ COERCION_METHOD_INOUT,
+ gettext_noop("Function"));
+ else
+ appendPQExpBuffer(&buf,
+ " CASE WHEN c.castfunc = 0 THEN '(binary coercible)'\n"
+ " ELSE p.proname\n"
+ " END AS \"%s\",\n",
+ gettext_noop("Function"));
+
+ appendPQExpBuffer(&buf,
+ " CASE WHEN c.castcontext = '%c' THEN '%s'\n"
+ " WHEN c.castcontext = '%c' THEN '%s'\n"
+ " ELSE '%s'\n"
+ " END AS \"%s\"",
+ COERCION_CODE_EXPLICIT,
+ gettext_noop("no"),
+ COERCION_CODE_ASSIGNMENT,
+ gettext_noop("in assignment"),
+ gettext_noop("yes"),
+ gettext_noop("Implicit?"));
+
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\n d.description AS \"%s\"",
+ gettext_noop("Description"));
+
+ /*
+ * We need a left join to pg_proc for binary casts; the others are just
+ * paranoia.
+ */
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p\n"
+ " ON c.castfunc = p.oid\n"
+ " LEFT JOIN pg_catalog.pg_type ts\n"
+ " ON c.castsource = ts.oid\n"
+ " LEFT JOIN pg_catalog.pg_namespace ns\n"
+ " ON ns.oid = ts.typnamespace\n"
+ " LEFT JOIN pg_catalog.pg_type tt\n"
+ " ON c.casttarget = tt.oid\n"
+ " LEFT JOIN pg_catalog.pg_namespace nt\n"
+ " ON nt.oid = tt.typnamespace\n");
+
+ if (verbose)
+ appendPQExpBufferStr(&buf,
+ " LEFT JOIN pg_catalog.pg_description d\n"
+ " ON d.classoid = c.tableoid AND d.objoid = "
+ "c.oid AND d.objsubid = 0\n");
+
+ appendPQExpBufferStr(&buf, "WHERE ( (true");
+
+ /*
+ * Match name pattern against either internal or external name of either
+ * castsource or casttarget
+ */
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "ns.nspname", "ts.typname",
+ "pg_catalog.format_type(ts.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(ts.oid)");
+
+ appendPQExpBufferStr(&buf, ") OR (true");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "nt.nspname", "tt.typname",
+ "pg_catalog.format_type(tt.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(tt.oid)");
+
+ appendPQExpBufferStr(&buf, ") )\nORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of casts");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dO
+ *
+ * Describes collations.
+ */
+bool
+listCollations(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, false, false, false, true, false};
+
+ if (pset.sversion < 90100)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support collations.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname AS \"%s\",\n"
+ " c.collname AS \"%s\",\n"
+ " c.collcollate AS \"%s\",\n"
+ " c.collctype AS \"%s\"",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Collate"),
+ gettext_noop("Ctype"));
+
+ if (pset.sversion >= 100000)
+ appendPQExpBuffer(&buf,
+ ",\n CASE c.collprovider WHEN 'd' THEN 'default' WHEN 'c' THEN 'libc' WHEN 'i' THEN 'icu' END AS \"%s\"",
+ gettext_noop("Provider"));
+ else
+ appendPQExpBuffer(&buf,
+ ",\n 'libc' AS \"%s\"",
+ gettext_noop("Provider"));
+
+ if (pset.sversion >= 120000)
+ appendPQExpBuffer(&buf,
+ ",\n CASE WHEN c.collisdeterministic THEN '%s' ELSE '%s' END AS \"%s\"",
+ gettext_noop("yes"), gettext_noop("no"),
+ gettext_noop("Deterministic?"));
+ else
+ appendPQExpBuffer(&buf,
+ ",\n '%s' AS \"%s\"",
+ gettext_noop("yes"),
+ gettext_noop("Deterministic?"));
+
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.obj_description(c.oid, 'pg_collation') AS \"%s\"",
+ gettext_noop("Description"));
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_collation c, pg_catalog.pg_namespace n\n"
+ "WHERE n.oid = c.collnamespace\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf, " AND n.nspname <> 'pg_catalog'\n"
+ " AND n.nspname <> 'information_schema'\n");
+
+ /*
+ * Hide collations that aren't usable in the current database's encoding.
+ * If you think to change this, note that pg_collation_is_visible rejects
+ * unusable collations, so you will need to hack name pattern processing
+ * somehow to avoid inconsistent behavior.
+ */
+ appendPQExpBufferStr(&buf, " AND c.collencoding IN (-1, pg_catalog.pg_char_to_encoding(pg_catalog.getdatabaseencoding()))\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "c.collname", NULL,
+ "pg_catalog.pg_collation_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of collations");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dn
+ *
+ * Describes schemas (namespaces)
+ */
+bool
+listSchemas(const char *pattern, bool verbose, bool showSystem)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname AS \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(n.nspowner) AS \"%s\"",
+ gettext_noop("Name"),
+ gettext_noop("Owner"));
+
+ if (verbose)
+ {
+ appendPQExpBufferStr(&buf, ",\n ");
+ printACLColumn(&buf, "n.nspacl");
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.obj_description(n.oid, 'pg_namespace') AS \"%s\"",
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_namespace n\n");
+
+ if (!showSystem && !pattern)
+ appendPQExpBufferStr(&buf,
+ "WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern,
+ !showSystem && !pattern, false,
+ NULL, "n.nspname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of schemas");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \dFp
+ * list text search parsers
+ */
+bool
+listTSParsers(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80300)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support full text search.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ if (verbose)
+ return listTSParsersVerbose(pattern);
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " n.nspname as \"%s\",\n"
+ " p.prsname as \"%s\",\n"
+ " pg_catalog.obj_description(p.oid, 'pg_ts_parser') as \"%s\"\n"
+ "FROM pg_catalog.pg_ts_parser p\n"
+ "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.prsnamespace\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Description")
+ );
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ "n.nspname", "p.prsname", NULL,
+ "pg_catalog.pg_ts_parser_is_visible(p.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of text search parsers");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * full description of parsers
+ */
+static bool
+listTSParsersVerbose(const char *pattern)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ int i;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT p.oid,\n"
+ " n.nspname,\n"
+ " p.prsname\n"
+ "FROM pg_catalog.pg_ts_parser p\n"
+ "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.prsnamespace\n"
+ );
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ "n.nspname", "p.prsname", NULL,
+ "pg_catalog.pg_ts_parser_is_visible(p.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ if (PQntuples(res) == 0)
+ {
+ if (!pset.quiet)
+ {
+ if (pattern)
+ pg_log_error("Did not find any text search parser named \"%s\".",
+ pattern);
+ else
+ pg_log_error("Did not find any text search parsers.");
+ }
+ PQclear(res);
+ return false;
+ }
+
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ const char *oid;
+ const char *nspname = NULL;
+ const char *prsname;
+
+ oid = PQgetvalue(res, i, 0);
+ if (!PQgetisnull(res, i, 1))
+ nspname = PQgetvalue(res, i, 1);
+ prsname = PQgetvalue(res, i, 2);
+
+ if (!describeOneTSParser(oid, nspname, prsname))
+ {
+ PQclear(res);
+ return false;
+ }
+
+ if (cancel_pressed)
+ {
+ PQclear(res);
+ return false;
+ }
+ }
+
+ PQclear(res);
+ return true;
+}
+
+static bool
+describeOneTSParser(const char *oid, const char *nspname, const char *prsname)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ PQExpBufferData title;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {true, false, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT '%s' AS \"%s\",\n"
+ " p.prsstart::pg_catalog.regproc AS \"%s\",\n"
+ " pg_catalog.obj_description(p.prsstart, 'pg_proc') as \"%s\"\n"
+ " FROM pg_catalog.pg_ts_parser p\n"
+ " WHERE p.oid = '%s'\n"
+ "UNION ALL\n"
+ "SELECT '%s',\n"
+ " p.prstoken::pg_catalog.regproc,\n"
+ " pg_catalog.obj_description(p.prstoken, 'pg_proc')\n"
+ " FROM pg_catalog.pg_ts_parser p\n"
+ " WHERE p.oid = '%s'\n"
+ "UNION ALL\n"
+ "SELECT '%s',\n"
+ " p.prsend::pg_catalog.regproc,\n"
+ " pg_catalog.obj_description(p.prsend, 'pg_proc')\n"
+ " FROM pg_catalog.pg_ts_parser p\n"
+ " WHERE p.oid = '%s'\n"
+ "UNION ALL\n"
+ "SELECT '%s',\n"
+ " p.prsheadline::pg_catalog.regproc,\n"
+ " pg_catalog.obj_description(p.prsheadline, 'pg_proc')\n"
+ " FROM pg_catalog.pg_ts_parser p\n"
+ " WHERE p.oid = '%s'\n"
+ "UNION ALL\n"
+ "SELECT '%s',\n"
+ " p.prslextype::pg_catalog.regproc,\n"
+ " pg_catalog.obj_description(p.prslextype, 'pg_proc')\n"
+ " FROM pg_catalog.pg_ts_parser p\n"
+ " WHERE p.oid = '%s';",
+ gettext_noop("Start parse"),
+ gettext_noop("Method"),
+ gettext_noop("Function"),
+ gettext_noop("Description"),
+ oid,
+ gettext_noop("Get next token"),
+ oid,
+ gettext_noop("End parse"),
+ oid,
+ gettext_noop("Get headline"),
+ oid,
+ gettext_noop("Get token types"),
+ oid);
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ initPQExpBuffer(&title);
+ if (nspname)
+ printfPQExpBuffer(&title, _("Text search parser \"%s.%s\""),
+ nspname, prsname);
+ else
+ printfPQExpBuffer(&title, _("Text search parser \"%s\""), prsname);
+ myopt.title = title.data;
+ myopt.footers = NULL;
+ myopt.topt.default_footer = false;
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT t.alias as \"%s\",\n"
+ " t.description as \"%s\"\n"
+ "FROM pg_catalog.ts_token_type( '%s'::pg_catalog.oid ) as t\n"
+ "ORDER BY 1;",
+ gettext_noop("Token name"),
+ gettext_noop("Description"),
+ oid);
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ if (nspname)
+ printfPQExpBuffer(&title, _("Token types for parser \"%s.%s\""),
+ nspname, prsname);
+ else
+ printfPQExpBuffer(&title, _("Token types for parser \"%s\""), prsname);
+ myopt.title = title.data;
+ myopt.footers = NULL;
+ myopt.topt.default_footer = true;
+ myopt.translate_header = true;
+ myopt.translate_columns = NULL;
+ myopt.n_translate_columns = 0;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ termPQExpBuffer(&title);
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \dFd
+ * list text search dictionaries
+ */
+bool
+listTSDictionaries(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80300)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support full text search.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " n.nspname as \"%s\",\n"
+ " d.dictname as \"%s\",\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"));
+
+ if (verbose)
+ {
+ appendPQExpBuffer(&buf,
+ " ( SELECT COALESCE(nt.nspname, '(null)')::pg_catalog.text || '.' || t.tmplname FROM\n"
+ " pg_catalog.pg_ts_template t\n"
+ " LEFT JOIN pg_catalog.pg_namespace nt ON nt.oid = t.tmplnamespace\n"
+ " WHERE d.dicttemplate = t.oid ) AS \"%s\",\n"
+ " d.dictinitoption as \"%s\",\n",
+ gettext_noop("Template"),
+ gettext_noop("Init options"));
+ }
+
+ appendPQExpBuffer(&buf,
+ " pg_catalog.obj_description(d.oid, 'pg_ts_dict') as \"%s\"\n",
+ gettext_noop("Description"));
+
+ appendPQExpBufferStr(&buf, "FROM pg_catalog.pg_ts_dict d\n"
+ "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.dictnamespace\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ "n.nspname", "d.dictname", NULL,
+ "pg_catalog.pg_ts_dict_is_visible(d.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of text search dictionaries");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \dFt
+ * list text search templates
+ */
+bool
+listTSTemplates(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80300)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support full text search.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ if (verbose)
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " n.nspname AS \"%s\",\n"
+ " t.tmplname AS \"%s\",\n"
+ " t.tmplinit::pg_catalog.regproc AS \"%s\",\n"
+ " t.tmpllexize::pg_catalog.regproc AS \"%s\",\n"
+ " pg_catalog.obj_description(t.oid, 'pg_ts_template') AS \"%s\"\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Init"),
+ gettext_noop("Lexize"),
+ gettext_noop("Description"));
+ else
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " n.nspname AS \"%s\",\n"
+ " t.tmplname AS \"%s\",\n"
+ " pg_catalog.obj_description(t.oid, 'pg_ts_template') AS \"%s\"\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Description"));
+
+ appendPQExpBufferStr(&buf, "FROM pg_catalog.pg_ts_template t\n"
+ "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.tmplnamespace\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ "n.nspname", "t.tmplname", NULL,
+ "pg_catalog.pg_ts_template_is_visible(t.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of text search templates");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \dF
+ * list text search configurations
+ */
+bool
+listTSConfigs(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80300)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support full text search.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ if (verbose)
+ return listTSConfigsVerbose(pattern);
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " n.nspname as \"%s\",\n"
+ " c.cfgname as \"%s\",\n"
+ " pg_catalog.obj_description(c.oid, 'pg_ts_config') as \"%s\"\n"
+ "FROM pg_catalog.pg_ts_config c\n"
+ "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.cfgnamespace\n",
+ gettext_noop("Schema"),
+ gettext_noop("Name"),
+ gettext_noop("Description")
+ );
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ "n.nspname", "c.cfgname", NULL,
+ "pg_catalog.pg_ts_config_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of text search configurations");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+static bool
+listTSConfigsVerbose(const char *pattern)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ int i;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT c.oid, c.cfgname,\n"
+ " n.nspname,\n"
+ " p.prsname,\n"
+ " np.nspname as pnspname\n"
+ "FROM pg_catalog.pg_ts_config c\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.cfgnamespace,\n"
+ " pg_catalog.pg_ts_parser p\n"
+ " LEFT JOIN pg_catalog.pg_namespace np ON np.oid = p.prsnamespace\n"
+ "WHERE p.oid = c.cfgparser\n"
+ );
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "n.nspname", "c.cfgname", NULL,
+ "pg_catalog.pg_ts_config_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 3, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ if (PQntuples(res) == 0)
+ {
+ if (!pset.quiet)
+ {
+ if (pattern)
+ pg_log_error("Did not find any text search configuration named \"%s\".",
+ pattern);
+ else
+ pg_log_error("Did not find any text search configurations.");
+ }
+ PQclear(res);
+ return false;
+ }
+
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ const char *oid;
+ const char *cfgname;
+ const char *nspname = NULL;
+ const char *prsname;
+ const char *pnspname = NULL;
+
+ oid = PQgetvalue(res, i, 0);
+ cfgname = PQgetvalue(res, i, 1);
+ if (!PQgetisnull(res, i, 2))
+ nspname = PQgetvalue(res, i, 2);
+ prsname = PQgetvalue(res, i, 3);
+ if (!PQgetisnull(res, i, 4))
+ pnspname = PQgetvalue(res, i, 4);
+
+ if (!describeOneTSConfig(oid, nspname, cfgname, pnspname, prsname))
+ {
+ PQclear(res);
+ return false;
+ }
+
+ if (cancel_pressed)
+ {
+ PQclear(res);
+ return false;
+ }
+ }
+
+ PQclear(res);
+ return true;
+}
+
+static bool
+describeOneTSConfig(const char *oid, const char *nspname, const char *cfgname,
+ const char *pnspname, const char *prsname)
+{
+ PQExpBufferData buf,
+ title;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " ( SELECT t.alias FROM\n"
+ " pg_catalog.ts_token_type(c.cfgparser) AS t\n"
+ " WHERE t.tokid = m.maptokentype ) AS \"%s\",\n"
+ " pg_catalog.btrim(\n"
+ " ARRAY( SELECT mm.mapdict::pg_catalog.regdictionary\n"
+ " FROM pg_catalog.pg_ts_config_map AS mm\n"
+ " WHERE mm.mapcfg = m.mapcfg AND mm.maptokentype = m.maptokentype\n"
+ " ORDER BY mapcfg, maptokentype, mapseqno\n"
+ " ) :: pg_catalog.text,\n"
+ " '{}') AS \"%s\"\n"
+ "FROM pg_catalog.pg_ts_config AS c, pg_catalog.pg_ts_config_map AS m\n"
+ "WHERE c.oid = '%s' AND m.mapcfg = c.oid\n"
+ "GROUP BY m.mapcfg, m.maptokentype, c.cfgparser\n"
+ "ORDER BY 1;",
+ gettext_noop("Token"),
+ gettext_noop("Dictionaries"),
+ oid);
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ initPQExpBuffer(&title);
+
+ if (nspname)
+ appendPQExpBuffer(&title, _("Text search configuration \"%s.%s\""),
+ nspname, cfgname);
+ else
+ appendPQExpBuffer(&title, _("Text search configuration \"%s\""),
+ cfgname);
+
+ if (pnspname)
+ appendPQExpBuffer(&title, _("\nParser: \"%s.%s\""),
+ pnspname, prsname);
+ else
+ appendPQExpBuffer(&title, _("\nParser: \"%s\""),
+ prsname);
+
+ myopt.nullPrint = NULL;
+ myopt.title = title.data;
+ myopt.footers = NULL;
+ myopt.topt.default_footer = false;
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ termPQExpBuffer(&title);
+
+ PQclear(res);
+ return true;
+}
+
+
+/*
+ * \dew
+ *
+ * Describes foreign-data wrappers
+ */
+bool
+listForeignDataWrappers(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80400)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support foreign-data wrappers.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT fdw.fdwname AS \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(fdw.fdwowner) AS \"%s\",\n",
+ gettext_noop("Name"),
+ gettext_noop("Owner"));
+ if (pset.sversion >= 90100)
+ appendPQExpBuffer(&buf,
+ " fdw.fdwhandler::pg_catalog.regproc AS \"%s\",\n",
+ gettext_noop("Handler"));
+ appendPQExpBuffer(&buf,
+ " fdw.fdwvalidator::pg_catalog.regproc AS \"%s\"",
+ gettext_noop("Validator"));
+
+ if (verbose)
+ {
+ appendPQExpBufferStr(&buf, ",\n ");
+ printACLColumn(&buf, "fdwacl");
+ appendPQExpBuffer(&buf,
+ ",\n CASE WHEN fdwoptions IS NULL THEN '' ELSE "
+ " '(' || pg_catalog.array_to_string(ARRAY(SELECT "
+ " pg_catalog.quote_ident(option_name) || ' ' || "
+ " pg_catalog.quote_literal(option_value) FROM "
+ " pg_catalog.pg_options_to_table(fdwoptions)), ', ') || ')' "
+ " END AS \"%s\"",
+ gettext_noop("FDW options"));
+
+ if (pset.sversion >= 90100)
+ appendPQExpBuffer(&buf,
+ ",\n d.description AS \"%s\" ",
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_foreign_data_wrapper fdw\n");
+
+ if (verbose && pset.sversion >= 90100)
+ appendPQExpBufferStr(&buf,
+ "LEFT JOIN pg_catalog.pg_description d\n"
+ " ON d.classoid = fdw.tableoid "
+ "AND d.objoid = fdw.oid AND d.objsubid = 0\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "fdwname", NULL, NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of foreign-data wrappers");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \des
+ *
+ * Describes foreign servers.
+ */
+bool
+listForeignServers(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80400)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support foreign servers.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT s.srvname AS \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(s.srvowner) AS \"%s\",\n"
+ " f.fdwname AS \"%s\"",
+ gettext_noop("Name"),
+ gettext_noop("Owner"),
+ gettext_noop("Foreign-data wrapper"));
+
+ if (verbose)
+ {
+ appendPQExpBufferStr(&buf, ",\n ");
+ printACLColumn(&buf, "s.srvacl");
+ appendPQExpBuffer(&buf,
+ ",\n"
+ " s.srvtype AS \"%s\",\n"
+ " s.srvversion AS \"%s\",\n"
+ " CASE WHEN srvoptions IS NULL THEN '' ELSE "
+ " '(' || pg_catalog.array_to_string(ARRAY(SELECT "
+ " pg_catalog.quote_ident(option_name) || ' ' || "
+ " pg_catalog.quote_literal(option_value) FROM "
+ " pg_catalog.pg_options_to_table(srvoptions)), ', ') || ')' "
+ " END AS \"%s\",\n"
+ " d.description AS \"%s\"",
+ gettext_noop("Type"),
+ gettext_noop("Version"),
+ gettext_noop("FDW options"),
+ gettext_noop("Description"));
+ }
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_foreign_server s\n"
+ " JOIN pg_catalog.pg_foreign_data_wrapper f ON f.oid=s.srvfdw\n");
+
+ if (verbose)
+ appendPQExpBufferStr(&buf,
+ "LEFT JOIN pg_catalog.pg_description d\n "
+ "ON d.classoid = s.tableoid AND d.objoid = s.oid "
+ "AND d.objsubid = 0\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "s.srvname", NULL, NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of foreign servers");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \deu
+ *
+ * Describes user mappings.
+ */
+bool
+listUserMappings(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 80400)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support user mappings.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT um.srvname AS \"%s\",\n"
+ " um.usename AS \"%s\"",
+ gettext_noop("Server"),
+ gettext_noop("User name"));
+
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\n CASE WHEN umoptions IS NULL THEN '' ELSE "
+ " '(' || pg_catalog.array_to_string(ARRAY(SELECT "
+ " pg_catalog.quote_ident(option_name) || ' ' || "
+ " pg_catalog.quote_literal(option_value) FROM "
+ " pg_catalog.pg_options_to_table(umoptions)), ', ') || ')' "
+ " END AS \"%s\"",
+ gettext_noop("FDW options"));
+
+ appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_user_mappings um\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "um.srvname", "um.usename", NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of user mappings");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \det
+ *
+ * Describes foreign tables.
+ */
+bool
+listForeignTables(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 90100)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support foreign tables.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname AS \"%s\",\n"
+ " c.relname AS \"%s\",\n"
+ " s.srvname AS \"%s\"",
+ gettext_noop("Schema"),
+ gettext_noop("Table"),
+ gettext_noop("Server"));
+
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\n CASE WHEN ftoptions IS NULL THEN '' ELSE "
+ " '(' || pg_catalog.array_to_string(ARRAY(SELECT "
+ " pg_catalog.quote_ident(option_name) || ' ' || "
+ " pg_catalog.quote_literal(option_value) FROM "
+ " pg_catalog.pg_options_to_table(ftoptions)), ', ') || ')' "
+ " END AS \"%s\",\n"
+ " d.description AS \"%s\"",
+ gettext_noop("FDW options"),
+ gettext_noop("Description"));
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_foreign_table ft\n"
+ " INNER JOIN pg_catalog.pg_class c"
+ " ON c.oid = ft.ftrelid\n"
+ " INNER JOIN pg_catalog.pg_namespace n"
+ " ON n.oid = c.relnamespace\n"
+ " INNER JOIN pg_catalog.pg_foreign_server s"
+ " ON s.oid = ft.ftserver\n");
+ if (verbose)
+ appendPQExpBufferStr(&buf,
+ " LEFT JOIN pg_catalog.pg_description d\n"
+ " ON d.classoid = c.tableoid AND "
+ "d.objoid = c.oid AND d.objsubid = 0\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ "n.nspname", "c.relname", NULL,
+ "pg_catalog.pg_table_is_visible(c.oid)");
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of foreign tables");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dx
+ *
+ * Briefly describes installed extensions.
+ */
+bool
+listExtensions(const char *pattern)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion < 90100)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support extensions.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT e.extname AS \"%s\", "
+ "e.extversion AS \"%s\", n.nspname AS \"%s\", c.description AS \"%s\"\n"
+ "FROM pg_catalog.pg_extension e "
+ "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace "
+ "LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid "
+ "AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass\n",
+ gettext_noop("Name"),
+ gettext_noop("Version"),
+ gettext_noop("Schema"),
+ gettext_noop("Description"));
+
+ processSQLNamePattern(pset.db, &buf, pattern,
+ false, false,
+ NULL, "e.extname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of installed extensions");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dx+
+ *
+ * List contents of installed extensions.
+ */
+bool
+listExtensionContents(const char *pattern)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ int i;
+
+ if (pset.sversion < 90100)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support extensions.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT e.extname, e.oid\n"
+ "FROM pg_catalog.pg_extension e\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern,
+ false, false,
+ NULL, "e.extname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ if (PQntuples(res) == 0)
+ {
+ if (!pset.quiet)
+ {
+ if (pattern)
+ pg_log_error("Did not find any extension named \"%s\".",
+ pattern);
+ else
+ pg_log_error("Did not find any extensions.");
+ }
+ PQclear(res);
+ return false;
+ }
+
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ const char *extname;
+ const char *oid;
+
+ extname = PQgetvalue(res, i, 0);
+ oid = PQgetvalue(res, i, 1);
+
+ if (!listOneExtensionContents(extname, oid))
+ {
+ PQclear(res);
+ return false;
+ }
+ if (cancel_pressed)
+ {
+ PQclear(res);
+ return false;
+ }
+ }
+
+ PQclear(res);
+ return true;
+}
+
+static bool
+listOneExtensionContents(const char *extname, const char *oid)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ PQExpBufferData title;
+ printQueryOpt myopt = pset.popt;
+
+ initPQExpBuffer(&buf);
+ printfPQExpBuffer(&buf,
+ "SELECT pg_catalog.pg_describe_object(classid, objid, 0) AS \"%s\"\n"
+ "FROM pg_catalog.pg_depend\n"
+ "WHERE refclassid = 'pg_catalog.pg_extension'::pg_catalog.regclass AND refobjid = '%s' AND deptype = 'e'\n"
+ "ORDER BY 1;",
+ gettext_noop("Object description"),
+ oid);
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ initPQExpBuffer(&title);
+ printfPQExpBuffer(&title, _("Objects in extension \"%s\""), extname);
+ myopt.title = title.data;
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ termPQExpBuffer(&title);
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dRp
+ * Lists publications.
+ *
+ * Takes an optional regexp to select particular publications
+ */
+bool
+listPublications(const char *pattern)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, false, false, false, false, false, false};
+
+ if (pset.sversion < 100000)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support publications.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT pubname AS \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(pubowner) AS \"%s\",\n"
+ " puballtables AS \"%s\",\n"
+ " pubinsert AS \"%s\",\n"
+ " pubupdate AS \"%s\",\n"
+ " pubdelete AS \"%s\"",
+ gettext_noop("Name"),
+ gettext_noop("Owner"),
+ gettext_noop("All tables"),
+ gettext_noop("Inserts"),
+ gettext_noop("Updates"),
+ gettext_noop("Deletes"));
+ if (pset.sversion >= 110000)
+ appendPQExpBuffer(&buf,
+ ",\n pubtruncate AS \"%s\"",
+ gettext_noop("Truncates"));
+ if (pset.sversion >= 130000)
+ appendPQExpBuffer(&buf,
+ ",\n pubviaroot AS \"%s\"",
+ gettext_noop("Via root"));
+
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_publication\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "pubname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of publications");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+
+ return true;
+}
+
+/*
+ * \dRp+
+ * Describes publications including the contents.
+ *
+ * Takes an optional regexp to select particular publications
+ */
+bool
+describePublications(const char *pattern)
+{
+ PQExpBufferData buf;
+ int i;
+ PGresult *res;
+ bool has_pubtruncate;
+ bool has_pubviaroot;
+
+ if (pset.sversion < 100000)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support publications.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ has_pubtruncate = (pset.sversion >= 110000);
+ has_pubviaroot = (pset.sversion >= 130000);
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT oid, pubname,\n"
+ " pg_catalog.pg_get_userbyid(pubowner) AS owner,\n"
+ " puballtables, pubinsert, pubupdate, pubdelete");
+ if (has_pubtruncate)
+ appendPQExpBufferStr(&buf,
+ ", pubtruncate");
+ if (has_pubviaroot)
+ appendPQExpBufferStr(&buf,
+ ", pubviaroot");
+ appendPQExpBufferStr(&buf,
+ "\nFROM pg_catalog.pg_publication\n");
+
+ processSQLNamePattern(pset.db, &buf, pattern, false, false,
+ NULL, "pubname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 2;");
+
+ res = PSQLexec(buf.data);
+ if (!res)
+ {
+ termPQExpBuffer(&buf);
+ return false;
+ }
+
+ if (PQntuples(res) == 0)
+ {
+ if (!pset.quiet)
+ {
+ if (pattern)
+ pg_log_error("Did not find any publication named \"%s\".",
+ pattern);
+ else
+ pg_log_error("Did not find any publications.");
+ }
+
+ termPQExpBuffer(&buf);
+ PQclear(res);
+ return false;
+ }
+
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ const char align = 'l';
+ int ncols = 5;
+ int nrows = 1;
+ int tables = 0;
+ PGresult *tabres;
+ char *pubid = PQgetvalue(res, i, 0);
+ char *pubname = PQgetvalue(res, i, 1);
+ bool puballtables = strcmp(PQgetvalue(res, i, 3), "t") == 0;
+ int j;
+ PQExpBufferData title;
+ printTableOpt myopt = pset.popt.topt;
+ printTableContent cont;
+
+ if (has_pubtruncate)
+ ncols++;
+ if (has_pubviaroot)
+ ncols++;
+
+ initPQExpBuffer(&title);
+ printfPQExpBuffer(&title, _("Publication %s"), pubname);
+ printTableInit(&cont, &myopt, title.data, ncols, nrows);
+
+ printTableAddHeader(&cont, gettext_noop("Owner"), true, align);
+ printTableAddHeader(&cont, gettext_noop("All tables"), true, align);
+ printTableAddHeader(&cont, gettext_noop("Inserts"), true, align);
+ printTableAddHeader(&cont, gettext_noop("Updates"), true, align);
+ printTableAddHeader(&cont, gettext_noop("Deletes"), true, align);
+ if (has_pubtruncate)
+ printTableAddHeader(&cont, gettext_noop("Truncates"), true, align);
+ if (has_pubviaroot)
+ printTableAddHeader(&cont, gettext_noop("Via root"), true, align);
+
+ printTableAddCell(&cont, PQgetvalue(res, i, 2), false, false);
+ printTableAddCell(&cont, PQgetvalue(res, i, 3), false, false);
+ printTableAddCell(&cont, PQgetvalue(res, i, 4), false, false);
+ printTableAddCell(&cont, PQgetvalue(res, i, 5), false, false);
+ printTableAddCell(&cont, PQgetvalue(res, i, 6), false, false);
+ if (has_pubtruncate)
+ printTableAddCell(&cont, PQgetvalue(res, i, 7), false, false);
+ if (has_pubviaroot)
+ printTableAddCell(&cont, PQgetvalue(res, i, 8), false, false);
+
+ if (!puballtables)
+ {
+ printfPQExpBuffer(&buf,
+ "SELECT n.nspname, c.relname\n"
+ "FROM pg_catalog.pg_class c,\n"
+ " pg_catalog.pg_namespace n,\n"
+ " pg_catalog.pg_publication_rel pr\n"
+ "WHERE c.relnamespace = n.oid\n"
+ " AND c.oid = pr.prrelid\n"
+ " AND pr.prpubid = '%s'\n"
+ "ORDER BY 1,2", pubid);
+
+ tabres = PSQLexec(buf.data);
+ if (!tabres)
+ {
+ printTableCleanup(&cont);
+ PQclear(res);
+ termPQExpBuffer(&buf);
+ termPQExpBuffer(&title);
+ return false;
+ }
+ else
+ tables = PQntuples(tabres);
+
+ if (tables > 0)
+ printTableAddFooter(&cont, _("Tables:"));
+
+ for (j = 0; j < tables; j++)
+ {
+ printfPQExpBuffer(&buf, " \"%s.%s\"",
+ PQgetvalue(tabres, j, 0),
+ PQgetvalue(tabres, j, 1));
+
+ printTableAddFooter(&cont, buf.data);
+ }
+ PQclear(tabres);
+ }
+
+ printTable(&cont, pset.queryFout, false, pset.logfile);
+ printTableCleanup(&cont);
+
+ termPQExpBuffer(&title);
+ }
+
+ termPQExpBuffer(&buf);
+ PQclear(res);
+
+ return true;
+}
+
+/*
+ * \dRs
+ * Describes subscriptions.
+ *
+ * Takes an optional regexp to select particular subscriptions
+ */
+bool
+describeSubscriptions(const char *pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ static const bool translate_columns[] = {false, false, false, false,
+ false, false};
+
+ if (pset.sversion < 100000)
+ {
+ char sverbuf[32];
+
+ pg_log_error("The server (version %s) does not support subscriptions.",
+ formatPGVersionNumber(pset.sversion, false,
+ sverbuf, sizeof(sverbuf)));
+ return true;
+ }
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT subname AS \"%s\"\n"
+ ", pg_catalog.pg_get_userbyid(subowner) AS \"%s\"\n"
+ ", subenabled AS \"%s\"\n"
+ ", subpublications AS \"%s\"\n",
+ gettext_noop("Name"),
+ gettext_noop("Owner"),
+ gettext_noop("Enabled"),
+ gettext_noop("Publication"));
+
+ if (verbose)
+ {
+ appendPQExpBuffer(&buf,
+ ", subsynccommit AS \"%s\"\n"
+ ", subconninfo AS \"%s\"\n",
+ gettext_noop("Synchronous commit"),
+ gettext_noop("Conninfo"));
+ }
+
+ /* Only display subscriptions in current database. */
+ appendPQExpBufferStr(&buf,
+ "FROM pg_catalog.pg_subscription\n"
+ "WHERE subdbid = (SELECT oid\n"
+ " FROM pg_catalog.pg_database\n"
+ " WHERE datname = pg_catalog.current_database())");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ NULL, "subname", NULL,
+ NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of subscriptions");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * printACLColumn
+ *
+ * Helper function for consistently formatting ACL (privilege) columns.
+ * The proper targetlist entry is appended to buf. Note lack of any
+ * whitespace or comma decoration.
+ */
+static void
+printACLColumn(PQExpBuffer buf, const char *colname)
+{
+ if (pset.sversion >= 80100)
+ appendPQExpBuffer(buf,
+ "pg_catalog.array_to_string(%s, E'\\n') AS \"%s\"",
+ colname, gettext_noop("Access privileges"));
+ else
+ appendPQExpBuffer(buf,
+ "pg_catalog.array_to_string(%s, '\\n') AS \"%s\"",
+ colname, gettext_noop("Access privileges"));
+}
+
+/*
+ * \dAc
+ * Lists operator classes
+ *
+ * Takes optional regexps to filter by index access method and input data type.
+ */
+bool
+listOperatorClasses(const char *access_method_pattern,
+ const char *type_pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ bool have_where = false;
+ static const bool translate_columns[] = {false, false, false, false, false, false, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " am.amname AS \"%s\",\n"
+ " pg_catalog.format_type(c.opcintype, NULL) AS \"%s\",\n"
+ " CASE\n"
+ " WHEN c.opckeytype <> 0 AND c.opckeytype <> c.opcintype\n"
+ " THEN pg_catalog.format_type(c.opckeytype, NULL)\n"
+ " ELSE NULL\n"
+ " END AS \"%s\",\n"
+ " CASE\n"
+ " WHEN pg_catalog.pg_opclass_is_visible(c.oid)\n"
+ " THEN pg_catalog.format('%%I', c.opcname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', n.nspname, c.opcname)\n"
+ " END AS \"%s\",\n"
+ " (CASE WHEN c.opcdefault\n"
+ " THEN '%s'\n"
+ " ELSE '%s'\n"
+ " END) AS \"%s\"",
+ gettext_noop("AM"),
+ gettext_noop("Input type"),
+ gettext_noop("Storage type"),
+ gettext_noop("Operator class"),
+ gettext_noop("yes"),
+ gettext_noop("no"),
+ gettext_noop("Default?"));
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\n CASE\n"
+ " WHEN pg_catalog.pg_opfamily_is_visible(of.oid)\n"
+ " THEN pg_catalog.format('%%I', of.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', ofn.nspname, of.opfname)\n"
+ " END AS \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(c.opcowner) AS \"%s\"\n",
+ gettext_noop("Operator family"),
+ gettext_noop("Owner"));
+ appendPQExpBuffer(&buf,
+ "\nFROM pg_catalog.pg_opclass c\n"
+ " LEFT JOIN pg_catalog.pg_am am on am.oid = c.opcmethod\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.opcnamespace\n"
+ " LEFT JOIN pg_catalog.pg_type t ON t.oid = c.opcintype\n"
+ " LEFT JOIN pg_catalog.pg_namespace tn ON tn.oid = t.typnamespace\n"
+ );
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ " LEFT JOIN pg_catalog.pg_opfamily of ON of.oid = c.opcfamily\n"
+ " LEFT JOIN pg_catalog.pg_namespace ofn ON ofn.oid = of.opfnamespace\n");
+
+ if (access_method_pattern)
+ have_where = processSQLNamePattern(pset.db, &buf, access_method_pattern,
+ false, false, NULL, "am.amname", NULL, NULL);
+ if (type_pattern)
+ {
+ /* Match type name pattern against either internal or external name */
+ processSQLNamePattern(pset.db, &buf, type_pattern, have_where, false,
+ "tn.nspname", "t.typname",
+ "pg_catalog.format_type(t.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(t.oid)");
+ }
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 4;");
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of operator classes");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dAf
+ * Lists operator families
+ *
+ * Takes optional regexps to filter by index access method and input data type.
+ */
+bool
+listOperatorFamilies(const char *access_method_pattern,
+ const char *type_pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ bool have_where = false;
+ static const bool translate_columns[] = {false, false, false, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " am.amname AS \"%s\",\n"
+ " CASE\n"
+ " WHEN pg_catalog.pg_opfamily_is_visible(f.oid)\n"
+ " THEN pg_catalog.format('%%I', f.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', n.nspname, f.opfname)\n"
+ " END AS \"%s\",\n"
+ " (SELECT\n"
+ " pg_catalog.string_agg(pg_catalog.format_type(oc.opcintype, NULL), ', ')\n"
+ " FROM pg_catalog.pg_opclass oc\n"
+ " WHERE oc.opcfamily = f.oid) \"%s\"",
+ gettext_noop("AM"),
+ gettext_noop("Operator family"),
+ gettext_noop("Applicable types"));
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ",\n pg_catalog.pg_get_userbyid(f.opfowner) AS \"%s\"\n",
+ gettext_noop("Owner"));
+ appendPQExpBuffer(&buf,
+ "\nFROM pg_catalog.pg_opfamily f\n"
+ " LEFT JOIN pg_catalog.pg_am am on am.oid = f.opfmethod\n"
+ " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = f.opfnamespace\n"
+ );
+
+ if (access_method_pattern)
+ have_where = processSQLNamePattern(pset.db, &buf, access_method_pattern,
+ false, false, NULL, "am.amname", NULL, NULL);
+ if (type_pattern)
+ {
+ appendPQExpBuffer(&buf,
+ " %s EXISTS (\n"
+ " SELECT 1\n"
+ " FROM pg_catalog.pg_type t\n"
+ " JOIN pg_catalog.pg_opclass oc ON oc.opcintype = t.oid\n"
+ " LEFT JOIN pg_catalog.pg_namespace tn ON tn.oid = t.typnamespace\n"
+ " WHERE oc.opcfamily = f.oid\n",
+ have_where ? "AND" : "WHERE");
+ /* Match type name pattern against either internal or external name */
+ processSQLNamePattern(pset.db, &buf, type_pattern, true, false,
+ "tn.nspname", "t.typname",
+ "pg_catalog.format_type(t.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(t.oid)");
+ appendPQExpBuffer(&buf, " )\n");
+ }
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of operator families");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dAo
+ * Lists operators of operator families
+ *
+ * Takes optional regexps to filter by index access method and operator
+ * family.
+ */
+bool
+listOpFamilyOperators(const char *access_method_pattern,
+ const char *family_pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ bool have_where = false;
+
+ static const bool translate_columns[] = {false, false, false, false, false, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " am.amname AS \"%s\",\n"
+ " CASE\n"
+ " WHEN pg_catalog.pg_opfamily_is_visible(of.oid)\n"
+ " THEN pg_catalog.format('%%I', of.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', nsf.nspname, of.opfname)\n"
+ " END AS \"%s\",\n"
+ " o.amopopr::pg_catalog.regoperator AS \"%s\"\n,"
+ " o.amopstrategy AS \"%s\",\n"
+ " CASE o.amoppurpose\n"
+ " WHEN 'o' THEN '%s'\n"
+ " WHEN 's' THEN '%s'\n"
+ " END AS \"%s\"\n",
+ gettext_noop("AM"),
+ gettext_noop("Operator family"),
+ gettext_noop("Operator"),
+ gettext_noop("Strategy"),
+ gettext_noop("ordering"),
+ gettext_noop("search"),
+ gettext_noop("Purpose"));
+
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ ", ofs.opfname AS \"%s\"\n",
+ gettext_noop("Sort opfamily"));
+ appendPQExpBuffer(&buf,
+ "FROM pg_catalog.pg_amop o\n"
+ " LEFT JOIN pg_catalog.pg_opfamily of ON of.oid = o.amopfamily\n"
+ " LEFT JOIN pg_catalog.pg_am am ON am.oid = of.opfmethod AND am.oid = o.amopmethod\n"
+ " LEFT JOIN pg_catalog.pg_namespace nsf ON of.opfnamespace = nsf.oid\n");
+ if (verbose)
+ appendPQExpBuffer(&buf,
+ " LEFT JOIN pg_catalog.pg_opfamily ofs ON ofs.oid = o.amopsortfamily\n");
+
+ if (access_method_pattern)
+ have_where = processSQLNamePattern(pset.db, &buf, access_method_pattern,
+ false, false, NULL, "am.amname",
+ NULL, NULL);
+
+ if (family_pattern)
+ processSQLNamePattern(pset.db, &buf, family_pattern, have_where, false,
+ "nsf.nspname", "of.opfname", NULL, NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2,\n"
+ " o.amoplefttype = o.amoprighttype DESC,\n"
+ " pg_catalog.format_type(o.amoplefttype, NULL),\n"
+ " pg_catalog.format_type(o.amoprighttype, NULL),\n"
+ " o.amopstrategy;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of operators of operator families");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
+
+/*
+ * \dAp
+ * Lists support functions of operator families
+ *
+ * Takes optional regexps to filter by index access method and operator
+ * family.
+ */
+bool
+listOpFamilyFunctions(const char *access_method_pattern,
+ const char *family_pattern, bool verbose)
+{
+ PQExpBufferData buf;
+ PGresult *res;
+ printQueryOpt myopt = pset.popt;
+ bool have_where = false;
+ static const bool translate_columns[] = {false, false, false, false, false, false};
+
+ initPQExpBuffer(&buf);
+
+ printfPQExpBuffer(&buf,
+ "SELECT\n"
+ " am.amname AS \"%s\",\n"
+ " CASE\n"
+ " WHEN pg_catalog.pg_opfamily_is_visible(of.oid)\n"
+ " THEN pg_catalog.format('%%I', of.opfname)\n"
+ " ELSE pg_catalog.format('%%I.%%I', ns.nspname, of.opfname)\n"
+ " END AS \"%s\",\n"
+ " pg_catalog.format_type(ap.amproclefttype, NULL) AS \"%s\",\n"
+ " pg_catalog.format_type(ap.amprocrighttype, NULL) AS \"%s\",\n"
+ " ap.amprocnum AS \"%s\"\n",
+ gettext_noop("AM"),
+ gettext_noop("Operator family"),
+ gettext_noop("Registered left type"),
+ gettext_noop("Registered right type"),
+ gettext_noop("Number"));
+
+ if (!verbose)
+ appendPQExpBuffer(&buf,
+ ", p.proname AS \"%s\"\n",
+ gettext_noop("Function"));
+ else
+ appendPQExpBuffer(&buf,
+ ", ap.amproc::pg_catalog.regprocedure AS \"%s\"\n",
+ gettext_noop("Function"));
+
+ appendPQExpBuffer(&buf,
+ "FROM pg_catalog.pg_amproc ap\n"
+ " LEFT JOIN pg_catalog.pg_opfamily of ON of.oid = ap.amprocfamily\n"
+ " LEFT JOIN pg_catalog.pg_am am ON am.oid = of.opfmethod\n"
+ " LEFT JOIN pg_catalog.pg_namespace ns ON of.opfnamespace = ns.oid\n"
+ " LEFT JOIN pg_catalog.pg_proc p ON ap.amproc = p.oid\n");
+
+ if (access_method_pattern)
+ have_where = processSQLNamePattern(pset.db, &buf, access_method_pattern,
+ false, false, NULL, "am.amname",
+ NULL, NULL);
+ if (family_pattern)
+ processSQLNamePattern(pset.db, &buf, family_pattern, have_where, false,
+ "ns.nspname", "of.opfname", NULL, NULL);
+
+ appendPQExpBufferStr(&buf, "ORDER BY 1, 2,\n"
+ " ap.amproclefttype = ap.amprocrighttype DESC,\n"
+ " 3, 4, 5;");
+
+ res = PSQLexec(buf.data);
+ termPQExpBuffer(&buf);
+ if (!res)
+ return false;
+
+ myopt.nullPrint = NULL;
+ myopt.title = _("List of support functions of operator families");
+ myopt.translate_header = true;
+ myopt.translate_columns = translate_columns;
+ myopt.n_translate_columns = lengthof(translate_columns);
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
diff --git a/src/bin/psql/describe.h b/src/bin/psql/describe.h
new file mode 100644
index 0000000..f0e3ec9
--- /dev/null
+++ b/src/bin/psql/describe.h
@@ -0,0 +1,136 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/describe.h
+ */
+#ifndef DESCRIBE_H
+#define DESCRIBE_H
+
+
+/* \da */
+extern bool describeAggregates(const char *pattern, bool verbose, bool showSystem);
+
+/* \dA */
+extern bool describeAccessMethods(const char *pattern, bool verbose);
+
+/* \db */
+extern bool describeTablespaces(const char *pattern, bool verbose);
+
+/* \df, \dfa, \dfn, \dft, \dfw, etc. */
+extern bool describeFunctions(const char *functypes, const char *pattern, bool verbose, bool showSystem);
+
+/* \dT */
+extern bool describeTypes(const char *pattern, bool verbose, bool showSystem);
+
+/* \do */
+extern bool describeOperators(const char *pattern, bool verbose, bool showSystem);
+
+/* \du, \dg */
+extern bool describeRoles(const char *pattern, bool verbose, bool showSystem);
+
+/* \drds */
+extern bool listDbRoleSettings(const char *pattern, const char *pattern2);
+
+/* \z (or \dp) */
+extern bool permissionsList(const char *pattern);
+
+/* \ddp */
+extern bool listDefaultACLs(const char *pattern);
+
+/* \dd */
+extern bool objectDescription(const char *pattern, bool showSystem);
+
+/* \d foo */
+extern bool describeTableDetails(const char *pattern, bool verbose, bool showSystem);
+
+/* \dF */
+extern bool listTSConfigs(const char *pattern, bool verbose);
+
+/* \dFp */
+extern bool listTSParsers(const char *pattern, bool verbose);
+
+/* \dFd */
+extern bool listTSDictionaries(const char *pattern, bool verbose);
+
+/* \dFt */
+extern bool listTSTemplates(const char *pattern, bool verbose);
+
+/* \l */
+extern bool listAllDbs(const char *pattern, bool verbose);
+
+/* \dt, \di, \ds, \dS, etc. */
+extern bool listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSystem);
+
+/* \dP */
+extern bool listPartitionedTables(const char *reltypes, const char *pattern, bool verbose);
+
+/* \dD */
+extern bool listDomains(const char *pattern, bool verbose, bool showSystem);
+
+/* \dc */
+extern bool listConversions(const char *pattern, bool verbose, bool showSystem);
+
+/* \dC */
+extern bool listCasts(const char *pattern, bool verbose);
+
+/* \dO */
+extern bool listCollations(const char *pattern, bool verbose, bool showSystem);
+
+/* \dn */
+extern bool listSchemas(const char *pattern, bool verbose, bool showSystem);
+
+/* \dew */
+extern bool listForeignDataWrappers(const char *pattern, bool verbose);
+
+/* \des */
+extern bool listForeignServers(const char *pattern, bool verbose);
+
+/* \deu */
+extern bool listUserMappings(const char *pattern, bool verbose);
+
+/* \det */
+extern bool listForeignTables(const char *pattern, bool verbose);
+
+/* \dL */
+extern bool listLanguages(const char *pattern, bool verbose, bool showSystem);
+
+/* \dx */
+extern bool listExtensions(const char *pattern);
+
+/* \dx+ */
+extern bool listExtensionContents(const char *pattern);
+
+/* \dy */
+extern bool listEventTriggers(const char *pattern, bool verbose);
+
+/* \dRp */
+bool listPublications(const char *pattern);
+
+/* \dRp+ */
+bool describePublications(const char *pattern);
+
+/* \dRs */
+bool describeSubscriptions(const char *pattern, bool verbose);
+
+/* \dAc */
+extern bool listOperatorClasses(const char *access_method_pattern,
+ const char *opclass_pattern,
+ bool verbose);
+
+/* \dAf */
+extern bool listOperatorFamilies(const char *access_method_pattern,
+ const char *opclass_pattern,
+ bool verbose);
+
+/* \dAo */
+extern bool listOpFamilyOperators(const char *accessMethod_pattern,
+ const char *family_pattern, bool verbose);
+
+/* \dAp */
+extern bool listOpFamilyFunctions(const char *access_method_pattern,
+ const char *family_pattern, bool verbose);
+
+
+#endif /* DESCRIBE_H */
diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c
new file mode 100644
index 0000000..640035f
--- /dev/null
+++ b/src/bin/psql/help.c
@@ -0,0 +1,705 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/help.c
+ */
+#include "postgres_fe.h"
+
+#ifndef WIN32
+#include <unistd.h> /* for geteuid() */
+#else
+#include <win32.h>
+#endif
+
+#ifndef WIN32
+#include <sys/ioctl.h> /* for ioctl() */
+#endif
+
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+
+#include "common.h"
+#include "common/logging.h"
+#include "common/username.h"
+#include "help.h"
+#include "input.h"
+#include "settings.h"
+#include "sql_help.h"
+
+/*
+ * PLEASE:
+ * If you change something in this file, also make the same changes
+ * in the DocBook documentation, file ref/psql-ref.sgml. If you don't
+ * know how to do it, please find someone who can help you.
+ */
+
+
+/*
+ * usage
+ *
+ * print out command line arguments
+ */
+#define ON(var) (var ? _("on") : _("off"))
+
+void
+usage(unsigned short int pager)
+{
+ const char *env;
+ const char *user;
+ char *errstr;
+ FILE *output;
+
+ /* Find default user, in case we need it. */
+ user = getenv("PGUSER");
+ if (!user)
+ {
+ user = get_user_name(&errstr);
+ if (!user)
+ {
+ pg_log_fatal("%s", errstr);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ /*
+ * Keep this line count in sync with the number of lines printed below!
+ * Use "psql --help=options | wc" to count correctly.
+ */
+ output = PageOutput(63, pager ? &(pset.popt.topt) : NULL);
+
+ fprintf(output, _("psql is the PostgreSQL interactive terminal.\n\n"));
+ fprintf(output, _("Usage:\n"));
+ fprintf(output, _(" psql [OPTION]... [DBNAME [USERNAME]]\n\n"));
+
+ fprintf(output, _("General options:\n"));
+ /* Display default database */
+ env = getenv("PGDATABASE");
+ if (!env)
+ env = user;
+ fprintf(output, _(" -c, --command=COMMAND run only single command (SQL or internal) and exit\n"));
+ fprintf(output, _(" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"), env);
+ fprintf(output, _(" -f, --file=FILENAME execute commands from file, then exit\n"));
+ fprintf(output, _(" -l, --list list available databases, then exit\n"));
+ fprintf(output, _(" -v, --set=, --variable=NAME=VALUE\n"
+ " set psql variable NAME to VALUE\n"
+ " (e.g., -v ON_ERROR_STOP=1)\n"));
+ fprintf(output, _(" -V, --version output version information, then exit\n"));
+ fprintf(output, _(" -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"));
+ fprintf(output, _(" -1 (\"one\"), --single-transaction\n"
+ " execute as a single transaction (if non-interactive)\n"));
+ fprintf(output, _(" -?, --help[=options] show this help, then exit\n"));
+ fprintf(output, _(" --help=commands list backslash commands, then exit\n"));
+ fprintf(output, _(" --help=variables list special variables, then exit\n"));
+
+ fprintf(output, _("\nInput and output options:\n"));
+ fprintf(output, _(" -a, --echo-all echo all input from script\n"));
+ fprintf(output, _(" -b, --echo-errors echo failed commands\n"));
+ fprintf(output, _(" -e, --echo-queries echo commands sent to server\n"));
+ fprintf(output, _(" -E, --echo-hidden display queries that internal commands generate\n"));
+ fprintf(output, _(" -L, --log-file=FILENAME send session log to file\n"));
+ fprintf(output, _(" -n, --no-readline disable enhanced command line editing (readline)\n"));
+ fprintf(output, _(" -o, --output=FILENAME send query results to file (or |pipe)\n"));
+ fprintf(output, _(" -q, --quiet run quietly (no messages, only query output)\n"));
+ fprintf(output, _(" -s, --single-step single-step mode (confirm each query)\n"));
+ fprintf(output, _(" -S, --single-line single-line mode (end of line terminates SQL command)\n"));
+
+ fprintf(output, _("\nOutput format options:\n"));
+ fprintf(output, _(" -A, --no-align unaligned table output mode\n"));
+ fprintf(output, _(" --csv CSV (Comma-Separated Values) table output mode\n"));
+ fprintf(output, _(" -F, --field-separator=STRING\n"
+ " field separator for unaligned output (default: \"%s\")\n"),
+ DEFAULT_FIELD_SEP);
+ fprintf(output, _(" -H, --html HTML table output mode\n"));
+ fprintf(output, _(" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"));
+ fprintf(output, _(" -R, --record-separator=STRING\n"
+ " record separator for unaligned output (default: newline)\n"));
+ fprintf(output, _(" -t, --tuples-only print rows only\n"));
+ fprintf(output, _(" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"));
+ fprintf(output, _(" -x, --expanded turn on expanded table output\n"));
+ fprintf(output, _(" -z, --field-separator-zero\n"
+ " set field separator for unaligned output to zero byte\n"));
+ fprintf(output, _(" -0, --record-separator-zero\n"
+ " set record separator for unaligned output to zero byte\n"));
+
+ fprintf(output, _("\nConnection options:\n"));
+ /* Display default host */
+ env = getenv("PGHOST");
+ fprintf(output, _(" -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"),
+ env ? env : _("local socket"));
+ /* Display default port */
+ env = getenv("PGPORT");
+ fprintf(output, _(" -p, --port=PORT database server port (default: \"%s\")\n"),
+ env ? env : DEF_PGPORT_STR);
+ /* Display default user */
+ env = getenv("PGUSER");
+ if (!env)
+ env = user;
+ fprintf(output, _(" -U, --username=USERNAME database user name (default: \"%s\")\n"), env);
+ fprintf(output, _(" -w, --no-password never prompt for password\n"));
+ fprintf(output, _(" -W, --password force password prompt (should happen automatically)\n"));
+
+ fprintf(output, _("\nFor more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+ "commands) from within psql, or consult the psql section in the PostgreSQL\n"
+ "documentation.\n\n"));
+ fprintf(output, _("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ fprintf(output, _("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
+
+ ClosePager(output);
+}
+
+
+/*
+ * slashUsage
+ *
+ * print out help for the backslash commands
+ */
+void
+slashUsage(unsigned short int pager)
+{
+ FILE *output;
+ char *currdb;
+
+ currdb = PQdb(pset.db);
+
+ /*
+ * Keep this line count in sync with the number of lines printed below!
+ * Use "psql --help=commands | wc" to count correctly. It's okay to count
+ * the USE_READLINE line even in builds without that.
+ */
+ output = PageOutput(133, pager ? &(pset.popt.topt) : NULL);
+
+ fprintf(output, _("General\n"));
+ fprintf(output, _(" \\copyright show PostgreSQL usage and distribution terms\n"));
+ fprintf(output, _(" \\crosstabview [COLUMNS] execute query and display results in crosstab\n"));
+ fprintf(output, _(" \\errverbose show most recent error message at maximum verbosity\n"));
+ fprintf(output, _(" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+ " \\g with no arguments is equivalent to a semicolon\n"));
+ fprintf(output, _(" \\gdesc describe result of query, without executing it\n"));
+ fprintf(output, _(" \\gexec execute query, then execute each value in its result\n"));
+ fprintf(output, _(" \\gset [PREFIX] execute query and store results in psql variables\n"));
+ fprintf(output, _(" \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"));
+ fprintf(output, _(" \\q quit psql\n"));
+ fprintf(output, _(" \\watch [SEC] execute query every SEC seconds\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Help\n"));
+
+ fprintf(output, _(" \\? [commands] show help on backslash commands\n"));
+ fprintf(output, _(" \\? options show help on psql command-line options\n"));
+ fprintf(output, _(" \\? variables show help on special variables\n"));
+ fprintf(output, _(" \\h [NAME] help on syntax of SQL commands, * for all commands\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Query Buffer\n"));
+ fprintf(output, _(" \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"));
+ fprintf(output, _(" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"));
+ fprintf(output, _(" \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"));
+ fprintf(output, _(" \\p show the contents of the query buffer\n"));
+ fprintf(output, _(" \\r reset (clear) the query buffer\n"));
+#ifdef USE_READLINE
+ fprintf(output, _(" \\s [FILE] display history or save it to file\n"));
+#endif
+ fprintf(output, _(" \\w FILE write query buffer to file\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Input/Output\n"));
+ fprintf(output, _(" \\copy ... perform SQL COPY with data stream to the client host\n"));
+ fprintf(output, _(" \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"));
+ fprintf(output, _(" \\i FILE execute commands from file\n"));
+ fprintf(output, _(" \\ir FILE as \\i, but relative to location of current script\n"));
+ fprintf(output, _(" \\o [FILE] send all query results to file or |pipe\n"));
+ fprintf(output, _(" \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"));
+ fprintf(output, _(" \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Conditional\n"));
+ fprintf(output, _(" \\if EXPR begin conditional block\n"));
+ fprintf(output, _(" \\elif EXPR alternative within current conditional block\n"));
+ fprintf(output, _(" \\else final alternative within current conditional block\n"));
+ fprintf(output, _(" \\endif end conditional block\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Informational\n"));
+ fprintf(output, _(" (options: S = show system objects, + = additional detail)\n"));
+ fprintf(output, _(" \\d[S+] list tables, views, and sequences\n"));
+ fprintf(output, _(" \\d[S+] NAME describe table, view, sequence, or index\n"));
+ fprintf(output, _(" \\da[S] [PATTERN] list aggregates\n"));
+ fprintf(output, _(" \\dA[+] [PATTERN] list access methods\n"));
+ fprintf(output, _(" \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"));
+ fprintf(output, _(" \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"));
+ fprintf(output, _(" \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"));
+ fprintf(output, _(" \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n"));
+ fprintf(output, _(" \\db[+] [PATTERN] list tablespaces\n"));
+ fprintf(output, _(" \\dc[S+] [PATTERN] list conversions\n"));
+ fprintf(output, _(" \\dC[+] [PATTERN] list casts\n"));
+ fprintf(output, _(" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"));
+ fprintf(output, _(" \\dD[S+] [PATTERN] list domains\n"));
+ fprintf(output, _(" \\ddp [PATTERN] list default privileges\n"));
+ fprintf(output, _(" \\dE[S+] [PATTERN] list foreign tables\n"));
+ fprintf(output, _(" \\det[+] [PATTERN] list foreign tables\n"));
+ fprintf(output, _(" \\des[+] [PATTERN] list foreign servers\n"));
+ fprintf(output, _(" \\deu[+] [PATTERN] list user mappings\n"));
+ fprintf(output, _(" \\dew[+] [PATTERN] list foreign-data wrappers\n"));
+ fprintf(output, _(" \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"));
+ fprintf(output, _(" \\dF[+] [PATTERN] list text search configurations\n"));
+ fprintf(output, _(" \\dFd[+] [PATTERN] list text search dictionaries\n"));
+ fprintf(output, _(" \\dFp[+] [PATTERN] list text search parsers\n"));
+ fprintf(output, _(" \\dFt[+] [PATTERN] list text search templates\n"));
+ fprintf(output, _(" \\dg[S+] [PATTERN] list roles\n"));
+ fprintf(output, _(" \\di[S+] [PATTERN] list indexes\n"));
+ fprintf(output, _(" \\dl list large objects, same as \\lo_list\n"));
+ fprintf(output, _(" \\dL[S+] [PATTERN] list procedural languages\n"));
+ fprintf(output, _(" \\dm[S+] [PATTERN] list materialized views\n"));
+ fprintf(output, _(" \\dn[S+] [PATTERN] list schemas\n"));
+ fprintf(output, _(" \\do[S+] [PATTERN] list operators\n"));
+ fprintf(output, _(" \\dO[S+] [PATTERN] list collations\n"));
+ fprintf(output, _(" \\dp [PATTERN] list table, view, and sequence access privileges\n"));
+ fprintf(output, _(" \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"));
+ fprintf(output, _(" \\drds [PATRN1 [PATRN2]] list per-database role settings\n"));
+ fprintf(output, _(" \\dRp[+] [PATTERN] list replication publications\n"));
+ fprintf(output, _(" \\dRs[+] [PATTERN] list replication subscriptions\n"));
+ fprintf(output, _(" \\ds[S+] [PATTERN] list sequences\n"));
+ fprintf(output, _(" \\dt[S+] [PATTERN] list tables\n"));
+ fprintf(output, _(" \\dT[S+] [PATTERN] list data types\n"));
+ fprintf(output, _(" \\du[S+] [PATTERN] list roles\n"));
+ fprintf(output, _(" \\dv[S+] [PATTERN] list views\n"));
+ fprintf(output, _(" \\dx[+] [PATTERN] list extensions\n"));
+ fprintf(output, _(" \\dy[+] [PATTERN] list event triggers\n"));
+ fprintf(output, _(" \\l[+] [PATTERN] list databases\n"));
+ fprintf(output, _(" \\sf[+] FUNCNAME show a function's definition\n"));
+ fprintf(output, _(" \\sv[+] VIEWNAME show a view's definition\n"));
+ fprintf(output, _(" \\z [PATTERN] same as \\dp\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Formatting\n"));
+ fprintf(output, _(" \\a toggle between unaligned and aligned output mode\n"));
+ fprintf(output, _(" \\C [STRING] set table title, or unset if none\n"));
+ fprintf(output, _(" \\f [STRING] show or set field separator for unaligned query output\n"));
+ fprintf(output, _(" \\H toggle HTML output mode (currently %s)\n"),
+ ON(pset.popt.topt.format == PRINT_HTML));
+ fprintf(output, _(" \\pset [NAME [VALUE]] set table output option\n"
+ " (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+ " fieldsep_zero|footer|format|linestyle|null|\n"
+ " numericlocale|pager|pager_min_lines|recordsep|\n"
+ " recordsep_zero|tableattr|title|tuples_only|\n"
+ " unicode_border_linestyle|unicode_column_linestyle|\n"
+ " unicode_header_linestyle)\n"));
+ fprintf(output, _(" \\t [on|off] show only rows (currently %s)\n"),
+ ON(pset.popt.topt.tuples_only));
+ fprintf(output, _(" \\T [STRING] set HTML <table> tag attributes, or unset if none\n"));
+ fprintf(output, _(" \\x [on|off|auto] toggle expanded output (currently %s)\n"),
+ pset.popt.topt.expanded == 2 ? "auto" : ON(pset.popt.topt.expanded));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Connection\n"));
+ if (currdb)
+ fprintf(output, _(" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+ " connect to new database (currently \"%s\")\n"),
+ currdb);
+ else
+ fprintf(output, _(" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+ " connect to new database (currently no connection)\n"));
+ fprintf(output, _(" \\conninfo display information about current connection\n"));
+ fprintf(output, _(" \\encoding [ENCODING] show or set client encoding\n"));
+ fprintf(output, _(" \\password [USERNAME] securely change the password for a user\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Operating System\n"));
+ fprintf(output, _(" \\cd [DIR] change the current working directory\n"));
+ fprintf(output, _(" \\setenv NAME [VALUE] set or unset environment variable\n"));
+ fprintf(output, _(" \\timing [on|off] toggle timing of commands (currently %s)\n"),
+ ON(pset.timing));
+ fprintf(output, _(" \\! [COMMAND] execute command in shell or start interactive shell\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Variables\n"));
+ fprintf(output, _(" \\prompt [TEXT] NAME prompt user to set internal variable\n"));
+ fprintf(output, _(" \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"));
+ fprintf(output, _(" \\unset NAME unset (delete) internal variable\n"));
+ fprintf(output, "\n");
+
+ fprintf(output, _("Large Objects\n"));
+ fprintf(output, _(" \\lo_export LOBOID FILE\n"
+ " \\lo_import FILE [COMMENT]\n"
+ " \\lo_list\n"
+ " \\lo_unlink LOBOID large object operations\n"));
+
+ ClosePager(output);
+}
+
+
+/*
+ * helpVariables
+ *
+ * show list of available variables (options) from command line
+ */
+void
+helpVariables(unsigned short int pager)
+{
+ FILE *output;
+
+ /*
+ * Keep this line count in sync with the number of lines printed below!
+ * Use "psql --help=variables | wc" to count correctly; but notice that
+ * Windows builds currently print one more line than non-Windows builds.
+ * Using the larger number is fine.
+ */
+ output = PageOutput(158, pager ? &(pset.popt.topt) : NULL);
+
+ fprintf(output, _("List of specially treated variables\n\n"));
+
+ fprintf(output, _("psql variables:\n"));
+ fprintf(output, _("Usage:\n"));
+ fprintf(output, _(" psql --set=NAME=VALUE\n or \\set NAME VALUE inside psql\n\n"));
+
+ fprintf(output, _(" AUTOCOMMIT\n"
+ " if set, successful SQL commands are automatically committed\n"));
+ fprintf(output, _(" COMP_KEYWORD_CASE\n"
+ " determines the case used to complete SQL key words\n"
+ " [lower, upper, preserve-lower, preserve-upper]\n"));
+ fprintf(output, _(" DBNAME\n"
+ " the currently connected database name\n"));
+ fprintf(output, _(" ECHO\n"
+ " controls what input is written to standard output\n"
+ " [all, errors, none, queries]\n"));
+ fprintf(output, _(" ECHO_HIDDEN\n"
+ " if set, display internal queries executed by backslash commands;\n"
+ " if set to \"noexec\", just show them without execution\n"));
+ fprintf(output, _(" ENCODING\n"
+ " current client character set encoding\n"));
+ fprintf(output, _(" ERROR\n"
+ " true if last query failed, else false\n"));
+ fprintf(output, _(" FETCH_COUNT\n"
+ " the number of result rows to fetch and display at a time (0 = unlimited)\n"));
+ fprintf(output, _(" HIDE_TABLEAM\n"
+ " if set, table access methods are not displayed\n"));
+ fprintf(output, _(" HISTCONTROL\n"
+ " controls command history [ignorespace, ignoredups, ignoreboth]\n"));
+ fprintf(output, _(" HISTFILE\n"
+ " file name used to store the command history\n"));
+ fprintf(output, _(" HISTSIZE\n"
+ " maximum number of commands to store in the command history\n"));
+ fprintf(output, _(" HOST\n"
+ " the currently connected database server host\n"));
+ fprintf(output, _(" IGNOREEOF\n"
+ " number of EOFs needed to terminate an interactive session\n"));
+ fprintf(output, _(" LASTOID\n"
+ " value of the last affected OID\n"));
+ fprintf(output, _(" LAST_ERROR_MESSAGE\n"
+ " LAST_ERROR_SQLSTATE\n"
+ " message and SQLSTATE of last error, or empty string and \"00000\" if none\n"));
+ fprintf(output, _(" ON_ERROR_ROLLBACK\n"
+ " if set, an error doesn't stop a transaction (uses implicit savepoints)\n"));
+ fprintf(output, _(" ON_ERROR_STOP\n"
+ " stop batch execution after error\n"));
+ fprintf(output, _(" PORT\n"
+ " server port of the current connection\n"));
+ fprintf(output, _(" PROMPT1\n"
+ " specifies the standard psql prompt\n"));
+ fprintf(output, _(" PROMPT2\n"
+ " specifies the prompt used when a statement continues from a previous line\n"));
+ fprintf(output, _(" PROMPT3\n"
+ " specifies the prompt used during COPY ... FROM STDIN\n"));
+ fprintf(output, _(" QUIET\n"
+ " run quietly (same as -q option)\n"));
+ fprintf(output, _(" ROW_COUNT\n"
+ " number of rows returned or affected by last query, or 0\n"));
+ fprintf(output, _(" SERVER_VERSION_NAME\n"
+ " SERVER_VERSION_NUM\n"
+ " server's version (in short string or numeric format)\n"));
+ fprintf(output, _(" SHOW_CONTEXT\n"
+ " controls display of message context fields [never, errors, always]\n"));
+ fprintf(output, _(" SINGLELINE\n"
+ " if set, end of line terminates SQL commands (same as -S option)\n"));
+ fprintf(output, _(" SINGLESTEP\n"
+ " single-step mode (same as -s option)\n"));
+ fprintf(output, _(" SQLSTATE\n"
+ " SQLSTATE of last query, or \"00000\" if no error\n"));
+ fprintf(output, _(" USER\n"
+ " the currently connected database user\n"));
+ fprintf(output, _(" VERBOSITY\n"
+ " controls verbosity of error reports [default, verbose, terse, sqlstate]\n"));
+ fprintf(output, _(" VERSION\n"
+ " VERSION_NAME\n"
+ " VERSION_NUM\n"
+ " psql's version (in verbose string, short string, or numeric format)\n"));
+
+ fprintf(output, _("\nDisplay settings:\n"));
+ fprintf(output, _("Usage:\n"));
+ fprintf(output, _(" psql --pset=NAME[=VALUE]\n or \\pset NAME [VALUE] inside psql\n\n"));
+
+ fprintf(output, _(" border\n"
+ " border style (number)\n"));
+ fprintf(output, _(" columns\n"
+ " target width for the wrapped format\n"));
+ fprintf(output, _(" expanded (or x)\n"
+ " expanded output [on, off, auto]\n"));
+ fprintf(output, _(" fieldsep\n"
+ " field separator for unaligned output (default \"%s\")\n"),
+ DEFAULT_FIELD_SEP);
+ fprintf(output, _(" fieldsep_zero\n"
+ " set field separator for unaligned output to a zero byte\n"));
+ fprintf(output, _(" footer\n"
+ " enable or disable display of the table footer [on, off]\n"));
+ fprintf(output, _(" format\n"
+ " set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"));
+ fprintf(output, _(" linestyle\n"
+ " set the border line drawing style [ascii, old-ascii, unicode]\n"));
+ fprintf(output, _(" null\n"
+ " set the string to be printed in place of a null value\n"));
+ fprintf(output, _(" numericlocale\n"
+ " enable display of a locale-specific character to separate groups of digits\n"));
+ fprintf(output, _(" pager\n"
+ " control when an external pager is used [yes, no, always]\n"));
+ fprintf(output, _(" recordsep\n"
+ " record (line) separator for unaligned output\n"));
+ fprintf(output, _(" recordsep_zero\n"
+ " set record separator for unaligned output to a zero byte\n"));
+ fprintf(output, _(" tableattr (or T)\n"
+ " specify attributes for table tag in html format, or proportional\n"
+ " column widths for left-aligned data types in latex-longtable format\n"));
+ fprintf(output, _(" title\n"
+ " set the table title for subsequently printed tables\n"));
+ fprintf(output, _(" tuples_only\n"
+ " if set, only actual table data is shown\n"));
+ fprintf(output, _(" unicode_border_linestyle\n"
+ " unicode_column_linestyle\n"
+ " unicode_header_linestyle\n"
+ " set the style of Unicode line drawing [single, double]\n"));
+
+ fprintf(output, _("\nEnvironment variables:\n"));
+ fprintf(output, _("Usage:\n"));
+
+#ifndef WIN32
+ fprintf(output, _(" NAME=VALUE [NAME=VALUE] psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"));
+#else
+ fprintf(output, _(" set NAME=VALUE\n psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"));
+#endif
+
+ fprintf(output, _(" COLUMNS\n"
+ " number of columns for wrapped format\n"));
+ fprintf(output, _(" PGAPPNAME\n"
+ " same as the application_name connection parameter\n"));
+ fprintf(output, _(" PGDATABASE\n"
+ " same as the dbname connection parameter\n"));
+ fprintf(output, _(" PGHOST\n"
+ " same as the host connection parameter\n"));
+ fprintf(output, _(" PGPASSWORD\n"
+ " connection password (not recommended)\n"));
+ fprintf(output, _(" PGPASSFILE\n"
+ " password file name\n"));
+ fprintf(output, _(" PGPORT\n"
+ " same as the port connection parameter\n"));
+ fprintf(output, _(" PGUSER\n"
+ " same as the user connection parameter\n"));
+ fprintf(output, _(" PSQL_EDITOR, EDITOR, VISUAL\n"
+ " editor used by the \\e, \\ef, and \\ev commands\n"));
+ fprintf(output, _(" PSQL_EDITOR_LINENUMBER_ARG\n"
+ " how to specify a line number when invoking the editor\n"));
+ fprintf(output, _(" PSQL_HISTORY\n"
+ " alternative location for the command history file\n"));
+ fprintf(output, _(" PSQL_PAGER, PAGER\n"
+ " name of external pager program\n"));
+ fprintf(output, _(" PSQLRC\n"
+ " alternative location for the user's .psqlrc file\n"));
+ fprintf(output, _(" SHELL\n"
+ " shell used by the \\! command\n"));
+ fprintf(output, _(" TMPDIR\n"
+ " directory for temporary files\n"));
+
+ ClosePager(output);
+}
+
+
+/*
+ * helpSQL -- help with SQL commands
+ *
+ * Note: we assume caller removed any trailing spaces in "topic".
+ */
+void
+helpSQL(const char *topic, unsigned short int pager)
+{
+#define VALUE_OR_NULL(a) ((a) ? (a) : "")
+
+ if (!topic || strlen(topic) == 0)
+ {
+ /* Print all the available command names */
+ int screen_width;
+ int ncolumns;
+ int nrows;
+ FILE *output;
+ int i;
+ int j;
+
+ /* Find screen width to determine how many columns will fit */
+#ifdef TIOCGWINSZ
+ struct winsize screen_size;
+
+ if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) == -1)
+ screen_width = 80; /* ioctl failed, assume 80 */
+ else
+ screen_width = screen_size.ws_col;
+#else
+ screen_width = 80; /* default assumption */
+#endif
+
+ ncolumns = (screen_width - 3) / (QL_MAX_CMD_LEN + 1);
+ ncolumns = Max(ncolumns, 1);
+ nrows = (QL_HELP_COUNT + (ncolumns - 1)) / ncolumns;
+
+ output = PageOutput(nrows + 1, pager ? &(pset.popt.topt) : NULL);
+
+ fputs(_("Available help:\n"), output);
+
+ for (i = 0; i < nrows; i++)
+ {
+ fprintf(output, " ");
+ for (j = 0; j < ncolumns - 1; j++)
+ fprintf(output, "%-*s",
+ QL_MAX_CMD_LEN + 1,
+ VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
+ if (i + j * nrows < QL_HELP_COUNT)
+ fprintf(output, "%s",
+ VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
+ fputc('\n', output);
+ }
+
+ ClosePager(output);
+ }
+ else
+ {
+ int i,
+ pass;
+ FILE *output = NULL;
+ size_t len,
+ wordlen,
+ j;
+ int nl_count;
+
+ /*
+ * len is the amount of the input to compare to the help topic names.
+ * We first try exact match, then first + second words, then first
+ * word only.
+ */
+ len = strlen(topic);
+
+ for (pass = 1; pass <= 3; pass++)
+ {
+ if (pass > 1) /* Nothing on first pass - try the opening
+ * word(s) */
+ {
+ wordlen = j = 1;
+ while (j < len && topic[j++] != ' ')
+ wordlen++;
+ if (pass == 2 && j < len)
+ {
+ wordlen++;
+ while (j < len && topic[j++] != ' ')
+ wordlen++;
+ }
+ if (wordlen >= len)
+ {
+ /* Failed to shorten input, so try next pass if any */
+ continue;
+ }
+ len = wordlen;
+ }
+
+ /*
+ * Count newlines for pager. This logic must agree with what the
+ * following loop will do!
+ */
+ nl_count = 0;
+ for (i = 0; QL_HELP[i].cmd; i++)
+ {
+ if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
+ strcmp(topic, "*") == 0)
+ {
+ /* magic constant here must match format below! */
+ nl_count += 7 + QL_HELP[i].nl_count;
+
+ /* If we have an exact match, exit. Fixes \h SELECT */
+ if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
+ break;
+ }
+ }
+ /* If no matches, don't open the output yet */
+ if (nl_count == 0)
+ continue;
+
+ if (!output)
+ output = PageOutput(nl_count, pager ? &(pset.popt.topt) : NULL);
+
+ for (i = 0; QL_HELP[i].cmd; i++)
+ {
+ if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
+ strcmp(topic, "*") == 0)
+ {
+ PQExpBufferData buffer;
+ char *url;
+
+ initPQExpBuffer(&buffer);
+ QL_HELP[i].syntaxfunc(&buffer);
+ url = psprintf("https://www.postgresql.org/docs/%s/%s.html",
+ strstr(PG_VERSION, "devel") ? "devel" : PG_MAJORVERSION,
+ QL_HELP[i].docbook_id);
+ /* # of newlines in format must match constant above! */
+ fprintf(output, _("Command: %s\n"
+ "Description: %s\n"
+ "Syntax:\n%s\n\n"
+ "URL: %s\n\n"),
+ QL_HELP[i].cmd,
+ _(QL_HELP[i].help),
+ buffer.data,
+ url);
+ free(url);
+ termPQExpBuffer(&buffer);
+
+ /* If we have an exact match, exit. Fixes \h SELECT */
+ if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
+ break;
+ }
+ }
+ break;
+ }
+
+ /* If we never found anything, report that */
+ if (!output)
+ {
+ output = PageOutput(2, pager ? &(pset.popt.topt) : NULL);
+ fprintf(output, _("No help available for \"%s\".\n"
+ "Try \\h with no arguments to see available help.\n"),
+ topic);
+ }
+
+ ClosePager(output);
+ }
+}
+
+
+
+void
+print_copyright(void)
+{
+ puts("PostgreSQL Database Management System\n"
+ "(formerly known as Postgres, then as Postgres95)\n\n"
+ "Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group\n\n"
+ "Portions Copyright (c) 1994, The Regents of the University of California\n\n"
+ "Permission to use, copy, modify, and distribute this software and its\n"
+ "documentation for any purpose, without fee, and without a written agreement\n"
+ "is hereby granted, provided that the above copyright notice and this\n"
+ "paragraph and the following two paragraphs appear in all copies.\n\n"
+ "IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR\n"
+ "DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING\n"
+ "LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS\n"
+ "DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE\n"
+ "POSSIBILITY OF SUCH DAMAGE.\n\n"
+ "THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,\n"
+ "INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n"
+ "AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\n"
+ "ON AN \"AS IS\" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO\n"
+ "PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\n");
+}
diff --git a/src/bin/psql/help.h b/src/bin/psql/help.h
new file mode 100644
index 0000000..2e2666d
--- /dev/null
+++ b/src/bin/psql/help.h
@@ -0,0 +1,21 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/help.h
+ */
+#ifndef HELP_H
+#define HELP_H
+
+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);
+
+#endif
diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c
new file mode 100644
index 0000000..788ff1f
--- /dev/null
+++ b/src/bin/psql/input.c
@@ -0,0 +1,545 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/input.c
+ */
+#include "postgres_fe.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#include <fcntl.h>
+#include <limits.h>
+
+#include "common.h"
+#include "common/logging.h"
+#include "input.h"
+#include "settings.h"
+#include "tab-complete.h"
+
+#ifndef WIN32
+#define PSQLHISTORY ".psql_history"
+#else
+#define PSQLHISTORY "psql_history"
+#endif
+
+/* Runtime options for turning off readline and history */
+/* (of course there is no runtime command for doing that :) */
+#ifdef USE_READLINE
+static bool useReadline;
+static bool useHistory;
+
+static char *psql_history;
+
+static int history_lines_added;
+
+
+/*
+ * Preserve newlines in saved queries by mapping '\n' to NL_IN_HISTORY
+ *
+ * It is assumed NL_IN_HISTORY will never be entered by the user
+ * nor appear inside a multi-byte string. 0x00 is not properly
+ * handled by the readline routines so it can not be used
+ * for this purpose.
+ */
+#define NL_IN_HISTORY 0x01
+#endif
+
+static void finishInput(void);
+
+
+/*
+ * gets_interactive()
+ *
+ * Gets a line of interactive input, using readline if desired.
+ *
+ * prompt: the prompt string to be used
+ * query_buf: buffer containing lines already read in the current command
+ * (query_buf is not modified here, but may be consulted for tab completion)
+ *
+ * The result is a malloc'd string.
+ *
+ * Caller *must* have set up sigint_interrupt_jmp before calling.
+ */
+char *
+gets_interactive(const char *prompt, PQExpBuffer query_buf)
+{
+#ifdef USE_READLINE
+ if (useReadline)
+ {
+ char *result;
+
+ /*
+ * Some versions of readline don't notice SIGWINCH signals that arrive
+ * when not actively reading input. The simplest fix is to always
+ * re-read the terminal size. This leaves a window for SIGWINCH to be
+ * missed between here and where readline() enables libreadline's
+ * signal handler, but that's probably short enough to be ignored.
+ */
+#ifdef HAVE_RL_RESET_SCREEN_SIZE
+ rl_reset_screen_size();
+#endif
+
+ /* Make current query_buf available to tab completion callback */
+ tab_completion_query_buf = query_buf;
+
+ /* Enable SIGINT to longjmp to sigint_interrupt_jmp */
+ sigint_interrupt_enabled = true;
+
+ /* On some platforms, readline is declared as readline(char *) */
+ result = readline((char *) prompt);
+
+ /* Disable SIGINT again */
+ sigint_interrupt_enabled = false;
+
+ /* Pure neatnik-ism */
+ tab_completion_query_buf = NULL;
+
+ return result;
+ }
+#endif
+
+ fputs(prompt, stdout);
+ fflush(stdout);
+ return gets_fromFile(stdin);
+}
+
+
+/*
+ * Append the line to the history buffer, making sure there is a trailing '\n'
+ */
+void
+pg_append_history(const char *s, PQExpBuffer history_buf)
+{
+#ifdef USE_READLINE
+ if (useHistory && s)
+ {
+ appendPQExpBufferStr(history_buf, s);
+ if (!s[0] || s[strlen(s) - 1] != '\n')
+ appendPQExpBufferChar(history_buf, '\n');
+ }
+#endif
+}
+
+
+/*
+ * Emit accumulated history entry to readline's history mechanism,
+ * then reset the buffer to empty.
+ *
+ * Note: we write nothing if history_buf is empty, so extra calls to this
+ * function don't hurt. There must have been at least one line added by
+ * pg_append_history before we'll do anything.
+ */
+void
+pg_send_history(PQExpBuffer history_buf)
+{
+#ifdef USE_READLINE
+ static char *prev_hist = NULL;
+
+ char *s = history_buf->data;
+ int i;
+
+ /* Trim any trailing \n's (OK to scribble on history_buf) */
+ for (i = strlen(s) - 1; i >= 0 && s[i] == '\n'; i--)
+ ;
+ s[i + 1] = '\0';
+
+ if (useHistory && s[0])
+ {
+ if (((pset.histcontrol & hctl_ignorespace) &&
+ s[0] == ' ') ||
+ ((pset.histcontrol & hctl_ignoredups) &&
+ prev_hist && strcmp(s, prev_hist) == 0))
+ {
+ /* Ignore this line as far as history is concerned */
+ }
+ else
+ {
+ /* Save each previous line for ignoredups processing */
+ if (prev_hist)
+ free(prev_hist);
+ prev_hist = pg_strdup(s);
+ /* And send it to readline */
+ add_history(s);
+ /* Count lines added to history for use later */
+ history_lines_added++;
+ }
+ }
+
+ resetPQExpBuffer(history_buf);
+#endif
+}
+
+
+/*
+ * gets_fromFile
+ *
+ * Gets a line of noninteractive input from a file (which could be stdin).
+ * The result is a malloc'd string, or NULL on EOF or input error.
+ *
+ * Caller *must* have set up sigint_interrupt_jmp before calling.
+ *
+ * Note: we re-use a static PQExpBuffer for each call. This is to avoid
+ * leaking memory if interrupted by SIGINT.
+ */
+char *
+gets_fromFile(FILE *source)
+{
+ static PQExpBuffer buffer = NULL;
+
+ char line[1024];
+
+ if (buffer == NULL) /* first time through? */
+ buffer = createPQExpBuffer();
+ else
+ resetPQExpBuffer(buffer);
+
+ for (;;)
+ {
+ char *result;
+
+ /* Enable SIGINT to longjmp to sigint_interrupt_jmp */
+ sigint_interrupt_enabled = true;
+
+ /* Get some data */
+ result = fgets(line, sizeof(line), source);
+
+ /* Disable SIGINT again */
+ sigint_interrupt_enabled = false;
+
+ /* EOF or error? */
+ if (result == NULL)
+ {
+ if (ferror(source))
+ {
+ pg_log_error("could not read from input file: %m");
+ return NULL;
+ }
+ break;
+ }
+
+ appendPQExpBufferStr(buffer, line);
+
+ if (PQExpBufferBroken(buffer))
+ {
+ pg_log_error("out of memory");
+ return NULL;
+ }
+
+ /* EOL? */
+ if (buffer->len > 0 && buffer->data[buffer->len - 1] == '\n')
+ {
+ buffer->data[buffer->len - 1] = '\0';
+ return pg_strdup(buffer->data);
+ }
+ }
+
+ if (buffer->len > 0) /* EOF after reading some bufferload(s) */
+ return pg_strdup(buffer->data);
+
+ /* EOF, so return null */
+ return NULL;
+}
+
+
+#ifdef USE_READLINE
+
+/*
+ * Macros to iterate over each element of the history list in order
+ *
+ * You would think this would be simple enough, but in its inimitable fashion
+ * libedit has managed to break it: in libreadline we must use next_history()
+ * to go from oldest to newest, but in libedit we must use previous_history().
+ * To detect what to do, we make a trial call of previous_history(): if it
+ * fails, then either next_history() is what to use, or there's zero or one
+ * history entry so that it doesn't matter which direction we go.
+ *
+ * In case that wasn't disgusting enough: the code below is not as obvious as
+ * it might appear. In some libedit releases history_set_pos(0) fails until
+ * at least one add_history() call has been done. This is not an issue for
+ * printHistory() or encode_history(), which cannot be invoked before that has
+ * happened. In decode_history(), that's not so, and what actually happens is
+ * that we are sitting on the newest entry to start with, previous_history()
+ * fails, and we iterate over all the entries using next_history(). So the
+ * decode_history() loop iterates over the entries in the wrong order when
+ * using such a libedit release, and if there were another attempt to use
+ * BEGIN_ITERATE_HISTORY() before some add_history() call had happened, it
+ * wouldn't work. Fortunately we don't care about either of those things.
+ *
+ * Usage pattern is:
+ *
+ * BEGIN_ITERATE_HISTORY(varname);
+ * {
+ * loop body referencing varname->line;
+ * }
+ * END_ITERATE_HISTORY();
+ */
+#define BEGIN_ITERATE_HISTORY(VARNAME) \
+ do { \
+ HIST_ENTRY *VARNAME; \
+ bool use_prev_; \
+ \
+ history_set_pos(0); \
+ use_prev_ = (previous_history() != NULL); \
+ history_set_pos(0); \
+ for (VARNAME = current_history(); VARNAME != NULL; \
+ VARNAME = use_prev_ ? previous_history() : next_history()) \
+ { \
+ (void) 0
+
+#define END_ITERATE_HISTORY() \
+ } \
+ } while(0)
+
+
+/*
+ * Convert newlines to NL_IN_HISTORY for safe saving in readline history file
+ */
+static void
+encode_history(void)
+{
+ BEGIN_ITERATE_HISTORY(cur_hist);
+ {
+ char *cur_ptr;
+
+ /* some platforms declare HIST_ENTRY.line as const char * */
+ for (cur_ptr = (char *) cur_hist->line; *cur_ptr; cur_ptr++)
+ {
+ if (*cur_ptr == '\n')
+ *cur_ptr = NL_IN_HISTORY;
+ }
+ }
+ END_ITERATE_HISTORY();
+}
+
+/*
+ * Reverse the above encoding
+ */
+static void
+decode_history(void)
+{
+ BEGIN_ITERATE_HISTORY(cur_hist);
+ {
+ char *cur_ptr;
+
+ /* some platforms declare HIST_ENTRY.line as const char * */
+ for (cur_ptr = (char *) cur_hist->line; *cur_ptr; cur_ptr++)
+ {
+ if (*cur_ptr == NL_IN_HISTORY)
+ *cur_ptr = '\n';
+ }
+ }
+ END_ITERATE_HISTORY();
+}
+#endif /* USE_READLINE */
+
+
+/*
+ * Put any startup stuff related to input in here. It's good to maintain
+ * abstraction this way.
+ *
+ * The only "flag" right now is 1 for use readline & history.
+ */
+void
+initializeInput(int flags)
+{
+#ifdef USE_READLINE
+ if (flags & 1)
+ {
+ const char *histfile;
+ char home[MAXPGPATH];
+
+ useReadline = true;
+
+ /* these two things must be done in this order: */
+ initialize_readline();
+ rl_initialize();
+
+ useHistory = true;
+ using_history();
+ history_lines_added = 0;
+
+ histfile = GetVariable(pset.vars, "HISTFILE");
+
+ if (histfile == NULL)
+ {
+ char *envhist;
+
+ envhist = getenv("PSQL_HISTORY");
+ if (envhist != NULL && strlen(envhist) > 0)
+ histfile = envhist;
+ }
+
+ if (histfile == NULL)
+ {
+ if (get_home_path(home))
+ psql_history = psprintf("%s/%s", home, PSQLHISTORY);
+ }
+ else
+ {
+ psql_history = pg_strdup(histfile);
+ expand_tilde(&psql_history);
+ }
+
+ if (psql_history)
+ {
+ read_history(psql_history);
+ decode_history();
+ }
+ }
+#endif
+
+ atexit(finishInput);
+}
+
+
+/*
+ * This function saves the readline history when psql exits.
+ *
+ * fname: pathname of history file. (Should really be "const char *",
+ * but some ancient versions of readline omit the const-decoration.)
+ *
+ * max_lines: if >= 0, limit history file to that many entries.
+ */
+#ifdef USE_READLINE
+static bool
+saveHistory(char *fname, int max_lines)
+{
+ int errnum;
+
+ /*
+ * Suppressing the write attempt when HISTFILE is set to /dev/null may
+ * look like a negligible optimization, but it's necessary on e.g. macOS,
+ * where write_history will fail because it tries to chmod the target
+ * file.
+ */
+ if (strcmp(fname, DEVNULL) != 0)
+ {
+ /*
+ * Encode \n, since otherwise readline will reload multiline history
+ * entries as separate lines. (libedit doesn't really need this, but
+ * we do it anyway since it's too hard to tell which implementation we
+ * are using.)
+ */
+ encode_history();
+
+ /*
+ * On newer versions of libreadline, truncate the history file as
+ * needed and then append what we've added. This avoids overwriting
+ * history from other concurrent sessions (although there are still
+ * race conditions when two sessions exit at about the same time). If
+ * we don't have those functions, fall back to write_history().
+ */
+#if defined(HAVE_HISTORY_TRUNCATE_FILE) && defined(HAVE_APPEND_HISTORY)
+ {
+ int nlines;
+ int fd;
+
+ /* truncate previous entries if needed */
+ if (max_lines >= 0)
+ {
+ nlines = Max(max_lines - history_lines_added, 0);
+ (void) history_truncate_file(fname, nlines);
+ }
+ /* append_history fails if file doesn't already exist :-( */
+ fd = open(fname, O_CREAT | O_WRONLY | PG_BINARY, 0600);
+ if (fd >= 0)
+ close(fd);
+ /* append the appropriate number of lines */
+ if (max_lines >= 0)
+ nlines = Min(max_lines, history_lines_added);
+ else
+ nlines = history_lines_added;
+ errnum = append_history(nlines, fname);
+ if (errnum == 0)
+ return true;
+ }
+#else /* don't have append support */
+ {
+ /* truncate what we have ... */
+ if (max_lines >= 0)
+ stifle_history(max_lines);
+ /* ... and overwrite file. Tough luck for concurrent sessions. */
+ errnum = write_history(fname);
+ if (errnum == 0)
+ return true;
+ }
+#endif
+
+ pg_log_error("could not save history to file \"%s\": %m", fname);
+ }
+ return false;
+}
+#endif
+
+
+
+/*
+ * Print history to the specified file, or to the console if fname is NULL
+ * (psql \s command)
+ *
+ * We used to use saveHistory() for this purpose, but that doesn't permit
+ * use of a pager; moreover libedit's implementation behaves incompatibly
+ * (preferring to encode its output) and may fail outright when the target
+ * file is specified as /dev/tty.
+ */
+bool
+printHistory(const char *fname, unsigned short int pager)
+{
+#ifdef USE_READLINE
+ FILE *output;
+ bool is_pager;
+
+ if (!useHistory)
+ return false;
+
+ if (fname == NULL)
+ {
+ /* use pager, if enabled, when printing to console */
+ output = PageOutput(INT_MAX, pager ? &(pset.popt.topt) : NULL);
+ is_pager = true;
+ }
+ else
+ {
+ output = fopen(fname, "w");
+ if (output == NULL)
+ {
+ pg_log_error("could not save history to file \"%s\": %m", fname);
+ return false;
+ }
+ is_pager = false;
+ }
+
+ BEGIN_ITERATE_HISTORY(cur_hist);
+ {
+ fprintf(output, "%s\n", cur_hist->line);
+ }
+ END_ITERATE_HISTORY();
+
+ if (is_pager)
+ ClosePager(output);
+ else
+ fclose(output);
+
+ return true;
+#else
+ pg_log_error("history is not supported by this installation");
+ return false;
+#endif
+}
+
+
+static void
+finishInput(void)
+{
+#ifdef USE_READLINE
+ if (useHistory && psql_history)
+ {
+ (void) saveHistory(psql_history, pset.histsize);
+ free(psql_history);
+ psql_history = NULL;
+ }
+#endif
+}
diff --git a/src/bin/psql/input.h b/src/bin/psql/input.h
new file mode 100644
index 0000000..cfa03f5
--- /dev/null
+++ b/src/bin/psql/input.h
@@ -0,0 +1,51 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/input.h
+ */
+#ifndef INPUT_H
+#define INPUT_H
+
+/*
+ * If some other file needs to have access to readline/history, include this
+ * file and save yourself all this work.
+ *
+ * USE_READLINE is what to conditionalize readline-dependent code on.
+ */
+#ifdef HAVE_LIBREADLINE
+#define USE_READLINE 1
+
+#if defined(HAVE_READLINE_READLINE_H)
+#include <readline/readline.h>
+#if defined(HAVE_READLINE_HISTORY_H)
+#include <readline/history.h>
+#endif
+#elif defined(HAVE_EDITLINE_READLINE_H)
+#include <editline/readline.h>
+#if defined(HAVE_EDITLINE_HISTORY_H)
+#include <editline/history.h>
+#endif
+#elif defined(HAVE_READLINE_H)
+#include <readline.h>
+#if defined(HAVE_HISTORY_H)
+#include <history.h>
+#endif
+#endif /* HAVE_READLINE_READLINE_H, etc */
+#endif /* HAVE_LIBREADLINE */
+
+#include "pqexpbuffer.h"
+
+
+extern char *gets_interactive(const char *prompt, PQExpBuffer query_buf);
+extern char *gets_fromFile(FILE *source);
+
+extern void initializeInput(int flags);
+
+extern bool printHistory(const char *fname, unsigned short int pager);
+
+extern void pg_append_history(const char *s, PQExpBuffer history_buf);
+extern void pg_send_history(PQExpBuffer history_buf);
+
+#endif /* INPUT_H */
diff --git a/src/bin/psql/large_obj.c b/src/bin/psql/large_obj.c
new file mode 100644
index 0000000..cae81c0
--- /dev/null
+++ b/src/bin/psql/large_obj.c
@@ -0,0 +1,316 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/large_obj.c
+ */
+#include "postgres_fe.h"
+
+#include "common.h"
+#include "common/logging.h"
+#include "fe_utils/cancel.h"
+#include "large_obj.h"
+#include "settings.h"
+
+static void print_lo_result(const char *fmt,...) pg_attribute_printf(1, 2);
+
+static void
+print_lo_result(const char *fmt,...)
+{
+ va_list ap;
+
+ if (!pset.quiet)
+ {
+ if (pset.popt.topt.format == PRINT_HTML)
+ fputs("<p>", pset.queryFout);
+
+ va_start(ap, fmt);
+ vfprintf(pset.queryFout, fmt, ap);
+ va_end(ap);
+
+ if (pset.popt.topt.format == PRINT_HTML)
+ fputs("</p>\n", pset.queryFout);
+ else
+ fputs("\n", pset.queryFout);
+ }
+
+ if (pset.logfile)
+ {
+ va_start(ap, fmt);
+ vfprintf(pset.logfile, fmt, ap);
+ va_end(ap);
+ fputs("\n", pset.logfile);
+ }
+}
+
+
+/*
+ * Prepare to do a large-object operation. We *must* be inside a transaction
+ * block for all these operations, so start one if needed.
+ *
+ * Returns true if okay, false if failed. *own_transaction is set to indicate
+ * if we started our own transaction or not.
+ */
+static bool
+start_lo_xact(const char *operation, bool *own_transaction)
+{
+ PGTransactionStatusType tstatus;
+ PGresult *res;
+
+ *own_transaction = false;
+
+ if (!pset.db)
+ {
+ pg_log_error("%s: not connected to a database", operation);
+ return false;
+ }
+
+ tstatus = PQtransactionStatus(pset.db);
+
+ switch (tstatus)
+ {
+ case PQTRANS_IDLE:
+ /* need to start our own xact */
+ if (!(res = PSQLexec("BEGIN")))
+ return false;
+ PQclear(res);
+ *own_transaction = true;
+ break;
+ case PQTRANS_INTRANS:
+ /* use the existing xact */
+ break;
+ case PQTRANS_INERROR:
+ pg_log_error("%s: current transaction is aborted", operation);
+ return false;
+ default:
+ pg_log_error("%s: unknown transaction status", operation);
+ return false;
+ }
+
+ return true;
+}
+
+/*
+ * Clean up after a successful LO operation
+ */
+static bool
+finish_lo_xact(const char *operation, bool own_transaction)
+{
+ PGresult *res;
+
+ if (own_transaction && pset.autocommit)
+ {
+ /* close out our own xact */
+ if (!(res = PSQLexec("COMMIT")))
+ {
+ res = PSQLexec("ROLLBACK");
+ PQclear(res);
+ return false;
+ }
+ PQclear(res);
+ }
+
+ return true;
+}
+
+/*
+ * Clean up after a failed LO operation
+ */
+static bool
+fail_lo_xact(const char *operation, bool own_transaction)
+{
+ PGresult *res;
+
+ if (own_transaction && pset.autocommit)
+ {
+ /* close out our own xact */
+ res = PSQLexec("ROLLBACK");
+ PQclear(res);
+ }
+
+ return false; /* always */
+}
+
+
+/*
+ * do_lo_export()
+ *
+ * Write a large object to a file
+ */
+bool
+do_lo_export(const char *loid_arg, const char *filename_arg)
+{
+ int status;
+ bool own_transaction;
+
+ if (!start_lo_xact("\\lo_export", &own_transaction))
+ return false;
+
+ SetCancelConn(NULL);
+ status = lo_export(pset.db, atooid(loid_arg), filename_arg);
+ ResetCancelConn();
+
+ /* of course this status is documented nowhere :( */
+ if (status != 1)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ return fail_lo_xact("\\lo_export", own_transaction);
+ }
+
+ if (!finish_lo_xact("\\lo_export", own_transaction))
+ return false;
+
+ print_lo_result("lo_export");
+
+ return true;
+}
+
+
+/*
+ * do_lo_import()
+ *
+ * Copy large object from file to database
+ */
+bool
+do_lo_import(const char *filename_arg, const char *comment_arg)
+{
+ PGresult *res;
+ Oid loid;
+ char oidbuf[32];
+ bool own_transaction;
+
+ if (!start_lo_xact("\\lo_import", &own_transaction))
+ return false;
+
+ SetCancelConn(NULL);
+ loid = lo_import(pset.db, filename_arg);
+ ResetCancelConn();
+
+ if (loid == InvalidOid)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ return fail_lo_xact("\\lo_import", own_transaction);
+ }
+
+ /* insert description if given */
+ if (comment_arg)
+ {
+ char *cmdbuf;
+ char *bufptr;
+ size_t slen = strlen(comment_arg);
+
+ cmdbuf = pg_malloc_extended(slen * 2 + 256, MCXT_ALLOC_NO_OOM);
+ if (!cmdbuf)
+ return fail_lo_xact("\\lo_import", own_transaction);
+ sprintf(cmdbuf, "COMMENT ON LARGE OBJECT %u IS '", loid);
+ bufptr = cmdbuf + strlen(cmdbuf);
+ bufptr += PQescapeStringConn(pset.db, bufptr, comment_arg, slen, NULL);
+ strcpy(bufptr, "'");
+
+ if (!(res = PSQLexec(cmdbuf)))
+ {
+ free(cmdbuf);
+ return fail_lo_xact("\\lo_import", own_transaction);
+ }
+
+ PQclear(res);
+ free(cmdbuf);
+ }
+
+ if (!finish_lo_xact("\\lo_import", own_transaction))
+ return false;
+
+ print_lo_result("lo_import %u", loid);
+
+ sprintf(oidbuf, "%u", loid);
+ SetVariable(pset.vars, "LASTOID", oidbuf);
+
+ return true;
+}
+
+
+/*
+ * do_lo_unlink()
+ *
+ * removes a large object out of the database
+ */
+bool
+do_lo_unlink(const char *loid_arg)
+{
+ int status;
+ Oid loid = atooid(loid_arg);
+ bool own_transaction;
+
+ if (!start_lo_xact("\\lo_unlink", &own_transaction))
+ return false;
+
+ SetCancelConn(NULL);
+ status = lo_unlink(pset.db, loid);
+ ResetCancelConn();
+
+ if (status == -1)
+ {
+ pg_log_info("%s", PQerrorMessage(pset.db));
+ return fail_lo_xact("\\lo_unlink", own_transaction);
+ }
+
+ if (!finish_lo_xact("\\lo_unlink", own_transaction))
+ return false;
+
+ print_lo_result("lo_unlink %u", loid);
+
+ return true;
+}
+
+
+
+/*
+ * do_lo_list()
+ *
+ * Show all large objects in database with comments
+ */
+bool
+do_lo_list(void)
+{
+ PGresult *res;
+ char buf[1024];
+ printQueryOpt myopt = pset.popt;
+
+ if (pset.sversion >= 90000)
+ {
+ snprintf(buf, sizeof(buf),
+ "SELECT oid as \"%s\",\n"
+ " pg_catalog.pg_get_userbyid(lomowner) as \"%s\",\n"
+ " pg_catalog.obj_description(oid, 'pg_largeobject') as \"%s\"\n"
+ " FROM pg_catalog.pg_largeobject_metadata "
+ " ORDER BY oid",
+ gettext_noop("ID"),
+ gettext_noop("Owner"),
+ gettext_noop("Description"));
+ }
+ else
+ {
+ snprintf(buf, sizeof(buf),
+ "SELECT loid as \"%s\",\n"
+ " pg_catalog.obj_description(loid, 'pg_largeobject') as \"%s\"\n"
+ "FROM (SELECT DISTINCT loid FROM pg_catalog.pg_largeobject) x\n"
+ "ORDER BY 1",
+ gettext_noop("ID"),
+ gettext_noop("Description"));
+ }
+
+ res = PSQLexec(buf);
+ if (!res)
+ return false;
+
+ myopt.topt.tuples_only = false;
+ myopt.nullPrint = NULL;
+ myopt.title = _("Large objects");
+ myopt.translate_header = true;
+
+ printQuery(res, &myopt, pset.queryFout, false, pset.logfile);
+
+ PQclear(res);
+ return true;
+}
diff --git a/src/bin/psql/large_obj.h b/src/bin/psql/large_obj.h
new file mode 100644
index 0000000..755b9e7
--- /dev/null
+++ b/src/bin/psql/large_obj.h
@@ -0,0 +1,16 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/large_obj.h
+ */
+#ifndef LARGE_OBJ_H
+#define LARGE_OBJ_H
+
+bool do_lo_export(const char *loid_arg, const char *filename_arg);
+bool do_lo_import(const char *filename_arg, const char *comment_arg);
+bool do_lo_unlink(const char *loid_arg);
+bool do_lo_list(void);
+
+#endif /* LARGE_OBJ_H */
diff --git a/src/bin/psql/mainloop.c b/src/bin/psql/mainloop.c
new file mode 100644
index 0000000..7abe016
--- /dev/null
+++ b/src/bin/psql/mainloop.c
@@ -0,0 +1,657 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/mainloop.c
+ */
+#include "postgres_fe.h"
+
+#include "command.h"
+#include "common.h"
+#include "common/logging.h"
+#include "input.h"
+#include "mainloop.h"
+#include "mb/pg_wchar.h"
+#include "prompt.h"
+#include "settings.h"
+
+/* callback functions for our flex lexer */
+const PsqlScanCallbacks psqlscan_callbacks = {
+ psql_get_variable,
+};
+
+
+/*
+ * Main processing loop for reading lines of input
+ * and sending them to the backend.
+ *
+ * This loop is re-entrant. May be called by \i command
+ * which reads input from a file.
+ */
+int
+MainLoop(FILE *source)
+{
+ PsqlScanState scan_state; /* lexer working state */
+ ConditionalStack cond_stack; /* \if status stack */
+ volatile PQExpBuffer query_buf; /* buffer for query being accumulated */
+ volatile PQExpBuffer previous_buf; /* if there isn't anything in the new
+ * buffer yet, use this one for \e,
+ * etc. */
+ PQExpBuffer history_buf; /* earlier lines of a multi-line command, not
+ * yet saved to readline history */
+ char *line; /* current line of input */
+ int added_nl_pos;
+ bool success;
+ bool line_saved_in_history;
+ volatile int successResult = EXIT_SUCCESS;
+ volatile backslashResult slashCmdStatus = PSQL_CMD_UNKNOWN;
+ volatile promptStatus_t prompt_status = PROMPT_READY;
+ volatile bool need_redisplay = false;
+ volatile int count_eof = 0;
+ volatile bool die_on_error = false;
+ FILE *prev_cmd_source;
+ bool prev_cmd_interactive;
+ uint64 prev_lineno;
+
+ /* Save the prior command source */
+ prev_cmd_source = pset.cur_cmd_source;
+ prev_cmd_interactive = pset.cur_cmd_interactive;
+ prev_lineno = pset.lineno;
+ /* pset.stmt_lineno does not need to be saved and restored */
+
+ /* Establish new source */
+ pset.cur_cmd_source = source;
+ pset.cur_cmd_interactive = ((source == stdin) && !pset.notty);
+ pset.lineno = 0;
+ pset.stmt_lineno = 1;
+
+ /* Create working state */
+ scan_state = psql_scan_create(&psqlscan_callbacks);
+ cond_stack = conditional_stack_create();
+ psql_scan_set_passthrough(scan_state, (void *) cond_stack);
+
+ query_buf = createPQExpBuffer();
+ previous_buf = createPQExpBuffer();
+ history_buf = createPQExpBuffer();
+ if (PQExpBufferBroken(query_buf) ||
+ PQExpBufferBroken(previous_buf) ||
+ PQExpBufferBroken(history_buf))
+ {
+ pg_log_error("out of memory");
+ exit(EXIT_FAILURE);
+ }
+
+ /* main loop to get queries and execute them */
+ while (successResult == EXIT_SUCCESS)
+ {
+ /*
+ * Clean up after a previous Control-C
+ */
+ if (cancel_pressed)
+ {
+ if (!pset.cur_cmd_interactive)
+ {
+ /*
+ * You get here if you stopped a script with Ctrl-C.
+ */
+ successResult = EXIT_USER;
+ break;
+ }
+
+ cancel_pressed = false;
+ }
+
+ /*
+ * Establish longjmp destination for exiting from wait-for-input. We
+ * must re-do this each time through the loop for safety, since the
+ * jmpbuf might get changed during command execution.
+ */
+ if (sigsetjmp(sigint_interrupt_jmp, 1) != 0)
+ {
+ /* got here with longjmp */
+
+ /* reset parsing state */
+ psql_scan_finish(scan_state);
+ psql_scan_reset(scan_state);
+ resetPQExpBuffer(query_buf);
+ resetPQExpBuffer(history_buf);
+ count_eof = 0;
+ slashCmdStatus = PSQL_CMD_UNKNOWN;
+ prompt_status = PROMPT_READY;
+ need_redisplay = false;
+ pset.stmt_lineno = 1;
+ cancel_pressed = false;
+
+ if (pset.cur_cmd_interactive)
+ {
+ putc('\n', stdout);
+
+ /*
+ * if interactive user is in an \if block, then Ctrl-C will
+ * exit from the innermost \if.
+ */
+ if (!conditional_stack_empty(cond_stack))
+ {
+ pg_log_error("\\if: escaped");
+ conditional_stack_pop(cond_stack);
+ }
+ }
+ else
+ {
+ successResult = EXIT_USER;
+ break;
+ }
+ }
+
+ fflush(stdout);
+
+ /*
+ * get another line
+ */
+ if (pset.cur_cmd_interactive)
+ {
+ /* May need to reset prompt, eg after \r command */
+ if (query_buf->len == 0)
+ prompt_status = PROMPT_READY;
+ /* If query buffer came from \e, redisplay it with a prompt */
+ if (need_redisplay)
+ {
+ if (query_buf->len > 0)
+ {
+ fputs(get_prompt(PROMPT_READY, cond_stack), stdout);
+ fputs(query_buf->data, stdout);
+ fflush(stdout);
+ }
+ need_redisplay = false;
+ }
+ /* Now we can fetch a line */
+ line = gets_interactive(get_prompt(prompt_status, cond_stack),
+ query_buf);
+ }
+ else
+ {
+ line = gets_fromFile(source);
+ if (!line && ferror(source))
+ successResult = EXIT_FAILURE;
+ }
+
+ /*
+ * query_buf holds query already accumulated. line is the malloc'd
+ * new line of input (note it must be freed before looping around!)
+ */
+
+ /* No more input. Time to quit, or \i done */
+ if (line == NULL)
+ {
+ if (pset.cur_cmd_interactive)
+ {
+ /* This tries to mimic bash's IGNOREEOF feature. */
+ count_eof++;
+
+ if (count_eof < pset.ignoreeof)
+ {
+ if (!pset.quiet)
+ printf(_("Use \"\\q\" to leave %s.\n"), pset.progname);
+ continue;
+ }
+
+ puts(pset.quiet ? "" : "\\q");
+ }
+ break;
+ }
+
+ count_eof = 0;
+
+ pset.lineno++;
+
+ /* ignore UTF-8 Unicode byte-order mark */
+ if (pset.lineno == 1 && pset.encoding == PG_UTF8 && strncmp(line, "\xef\xbb\xbf", 3) == 0)
+ memmove(line, line + 3, strlen(line + 3) + 1);
+
+ /* Detect attempts to run custom-format dumps as SQL scripts */
+ if (pset.lineno == 1 && !pset.cur_cmd_interactive &&
+ strncmp(line, "PGDMP", 5) == 0)
+ {
+ free(line);
+ puts(_("The input is a PostgreSQL custom-format dump.\n"
+ "Use the pg_restore command-line client to restore this dump to a database.\n"));
+ fflush(stdout);
+ successResult = EXIT_FAILURE;
+ break;
+ }
+
+ /* no further processing of empty lines, unless within a literal */
+ if (line[0] == '\0' && !psql_scan_in_quote(scan_state))
+ {
+ free(line);
+ continue;
+ }
+
+ /* Recognize "help", "quit", "exit" only in interactive mode */
+ if (pset.cur_cmd_interactive)
+ {
+ char *first_word = line;
+ char *rest_of_line = NULL;
+ bool found_help = false;
+ bool found_exit_or_quit = false;
+ bool found_q = false;
+
+ /*
+ * The assistance words, help/exit/quit, must have no whitespace
+ * before them, and only whitespace after, with an optional
+ * semicolon. This prevents indented use of these words, perhaps
+ * as identifiers, from invoking the assistance behavior.
+ */
+ if (pg_strncasecmp(first_word, "help", 4) == 0)
+ {
+ rest_of_line = first_word + 4;
+ found_help = true;
+ }
+ else if (pg_strncasecmp(first_word, "exit", 4) == 0 ||
+ pg_strncasecmp(first_word, "quit", 4) == 0)
+ {
+ rest_of_line = first_word + 4;
+ found_exit_or_quit = true;
+ }
+ else if (strncmp(first_word, "\\q", 2) == 0)
+ {
+ rest_of_line = first_word + 2;
+ found_q = true;
+ }
+
+ /*
+ * If we found a command word, check whether the rest of the line
+ * contains only whitespace plus maybe one semicolon. If not,
+ * ignore the command word after all. These commands are only for
+ * compatibility with other SQL clients and are not documented.
+ */
+ if (rest_of_line != NULL)
+ {
+ /*
+ * Ignore unless rest of line is whitespace, plus maybe one
+ * semicolon
+ */
+ while (isspace((unsigned char) *rest_of_line))
+ ++rest_of_line;
+ if (*rest_of_line == ';')
+ ++rest_of_line;
+ while (isspace((unsigned char) *rest_of_line))
+ ++rest_of_line;
+ if (*rest_of_line != '\0')
+ {
+ found_help = false;
+ found_exit_or_quit = false;
+ }
+ }
+
+ /*
+ * "help" is only a command when the query buffer is empty, but we
+ * emit a one-line message even when it isn't to help confused
+ * users. The text is still added to the query buffer in that
+ * case.
+ */
+ if (found_help)
+ {
+ if (query_buf->len != 0)
+#ifndef WIN32
+ puts(_("Use \\? for help or press control-C to clear the input buffer."));
+#else
+ puts(_("Use \\? for help."));
+#endif
+ else
+ {
+ puts(_("You are using psql, the command-line interface to PostgreSQL."));
+ printf(_("Type: \\copyright for distribution terms\n"
+ " \\h for help with SQL commands\n"
+ " \\? for help with psql commands\n"
+ " \\g or terminate with semicolon to execute query\n"
+ " \\q to quit\n"));
+ free(line);
+ fflush(stdout);
+ continue;
+ }
+ }
+
+ /*
+ * "quit" and "exit" are only commands when the query buffer is
+ * empty, but we emit a one-line message even when it isn't to
+ * help confused users. The text is still added to the query
+ * buffer in that case.
+ */
+ if (found_exit_or_quit)
+ {
+ if (query_buf->len != 0)
+ {
+ if (prompt_status == PROMPT_READY ||
+ prompt_status == PROMPT_CONTINUE ||
+ prompt_status == PROMPT_PAREN)
+ puts(_("Use \\q to quit."));
+ else
+#ifndef WIN32
+ puts(_("Use control-D to quit."));
+#else
+ puts(_("Use control-C to quit."));
+#endif
+ }
+ else
+ {
+ /* exit app */
+ free(line);
+ fflush(stdout);
+ successResult = EXIT_SUCCESS;
+ break;
+ }
+ }
+
+ /*
+ * If they typed "\q" in a place where "\q" is not active, supply
+ * a hint. The text is still added to the query buffer.
+ */
+ if (found_q && query_buf->len != 0 &&
+ prompt_status != PROMPT_READY &&
+ prompt_status != PROMPT_CONTINUE &&
+ prompt_status != PROMPT_PAREN)
+#ifndef WIN32
+ puts(_("Use control-D to quit."));
+#else
+ puts(_("Use control-C to quit."));
+#endif
+ }
+
+ /* echo back if flag is set, unless interactive */
+ if (pset.echo == PSQL_ECHO_ALL && !pset.cur_cmd_interactive)
+ {
+ puts(line);
+ fflush(stdout);
+ }
+
+ /* insert newlines into query buffer between source lines */
+ if (query_buf->len > 0)
+ {
+ appendPQExpBufferChar(query_buf, '\n');
+ added_nl_pos = query_buf->len;
+ }
+ else
+ added_nl_pos = -1; /* flag we didn't add one */
+
+ /* Setting this will not have effect until next line. */
+ die_on_error = pset.on_error_stop;
+
+ /*
+ * Parse line, looking for command separators.
+ */
+ psql_scan_setup(scan_state, line, strlen(line),
+ pset.encoding, standard_strings());
+ success = true;
+ line_saved_in_history = false;
+
+ while (success || !die_on_error)
+ {
+ PsqlScanResult scan_result;
+ promptStatus_t prompt_tmp = prompt_status;
+ size_t pos_in_query;
+ char *tmp_line;
+
+ pos_in_query = query_buf->len;
+ scan_result = psql_scan(scan_state, query_buf, &prompt_tmp);
+ prompt_status = prompt_tmp;
+
+ if (PQExpBufferBroken(query_buf))
+ {
+ pg_log_error("out of memory");
+ exit(EXIT_FAILURE);
+ }
+
+ /*
+ * Increase statement line number counter for each linebreak added
+ * to the query buffer by the last psql_scan() call. There only
+ * will be ones to add when navigating to a statement in
+ * readline's history containing newlines.
+ */
+ tmp_line = query_buf->data + pos_in_query;
+ while (*tmp_line != '\0')
+ {
+ if (*(tmp_line++) == '\n')
+ pset.stmt_lineno++;
+ }
+
+ if (scan_result == PSCAN_EOL)
+ pset.stmt_lineno++;
+
+ /*
+ * Send command if semicolon found, or if end of line and we're in
+ * single-line mode.
+ */
+ if (scan_result == PSCAN_SEMICOLON ||
+ (scan_result == PSCAN_EOL && pset.singleline))
+ {
+ /*
+ * Save line in history. We use history_buf to accumulate
+ * multi-line queries into a single history entry. Note that
+ * history accumulation works on input lines, so it doesn't
+ * matter whether the query will be ignored due to \if.
+ */
+ if (pset.cur_cmd_interactive && !line_saved_in_history)
+ {
+ pg_append_history(line, history_buf);
+ pg_send_history(history_buf);
+ line_saved_in_history = true;
+ }
+
+ /* execute query unless we're in an inactive \if branch */
+ if (conditional_active(cond_stack))
+ {
+ success = SendQuery(query_buf->data);
+ slashCmdStatus = success ? PSQL_CMD_SEND : PSQL_CMD_ERROR;
+ pset.stmt_lineno = 1;
+
+ /* transfer query to previous_buf by pointer-swapping */
+ {
+ PQExpBuffer swap_buf = previous_buf;
+
+ previous_buf = query_buf;
+ query_buf = swap_buf;
+ }
+ resetPQExpBuffer(query_buf);
+
+ added_nl_pos = -1;
+ /* we need not do psql_scan_reset() here */
+ }
+ else
+ {
+ /* if interactive, warn about non-executed query */
+ if (pset.cur_cmd_interactive)
+ pg_log_error("query ignored; use \\endif or Ctrl-C to exit current \\if block");
+ /* fake an OK result for purposes of loop checks */
+ success = true;
+ slashCmdStatus = PSQL_CMD_SEND;
+ pset.stmt_lineno = 1;
+ /* note that query_buf doesn't change state */
+ }
+ }
+ else if (scan_result == PSCAN_BACKSLASH)
+ {
+ /* handle backslash command */
+
+ /*
+ * If we added a newline to query_buf, and nothing else has
+ * been inserted in query_buf by the lexer, then strip off the
+ * newline again. This avoids any change to query_buf when a
+ * line contains only a backslash command. Also, in this
+ * situation we force out any previous lines as a separate
+ * history entry; we don't want SQL and backslash commands
+ * intermixed in history if at all possible.
+ */
+ if (query_buf->len == added_nl_pos)
+ {
+ query_buf->data[--query_buf->len] = '\0';
+ pg_send_history(history_buf);
+ }
+ added_nl_pos = -1;
+
+ /* save backslash command in history */
+ if (pset.cur_cmd_interactive && !line_saved_in_history)
+ {
+ pg_append_history(line, history_buf);
+ pg_send_history(history_buf);
+ line_saved_in_history = true;
+ }
+
+ /* execute backslash command */
+ slashCmdStatus = HandleSlashCmds(scan_state,
+ cond_stack,
+ query_buf,
+ previous_buf);
+
+ success = slashCmdStatus != PSQL_CMD_ERROR;
+
+ /*
+ * Resetting stmt_lineno after a backslash command isn't
+ * always appropriate, but it's what we've done historically
+ * and there have been few complaints.
+ */
+ pset.stmt_lineno = 1;
+
+ if (slashCmdStatus == PSQL_CMD_SEND)
+ {
+ /* should not see this in inactive branch */
+ Assert(conditional_active(cond_stack));
+
+ success = SendQuery(query_buf->data);
+
+ /* transfer query to previous_buf by pointer-swapping */
+ {
+ PQExpBuffer swap_buf = previous_buf;
+
+ previous_buf = query_buf;
+ query_buf = swap_buf;
+ }
+ resetPQExpBuffer(query_buf);
+
+ /* flush any paren nesting info after forced send */
+ psql_scan_reset(scan_state);
+ }
+ else if (slashCmdStatus == PSQL_CMD_NEWEDIT)
+ {
+ /* should not see this in inactive branch */
+ Assert(conditional_active(cond_stack));
+ /* ensure what came back from editing ends in a newline */
+ if (query_buf->len > 0 &&
+ query_buf->data[query_buf->len - 1] != '\n')
+ appendPQExpBufferChar(query_buf, '\n');
+ /* rescan query_buf as new input */
+ psql_scan_finish(scan_state);
+ free(line);
+ line = pg_strdup(query_buf->data);
+ resetPQExpBuffer(query_buf);
+ /* reset parsing state since we are rescanning whole line */
+ psql_scan_reset(scan_state);
+ psql_scan_setup(scan_state, line, strlen(line),
+ pset.encoding, standard_strings());
+ line_saved_in_history = false;
+ prompt_status = PROMPT_READY;
+ /* we'll want to redisplay after parsing what we have */
+ need_redisplay = true;
+ }
+ else if (slashCmdStatus == PSQL_CMD_TERMINATE)
+ break;
+ }
+
+ /* fall out of loop if lexer reached EOL */
+ if (scan_result == PSCAN_INCOMPLETE ||
+ scan_result == PSCAN_EOL)
+ break;
+ }
+
+ /* Add line to pending history if we didn't execute anything yet */
+ if (pset.cur_cmd_interactive && !line_saved_in_history)
+ pg_append_history(line, history_buf);
+
+ psql_scan_finish(scan_state);
+ free(line);
+
+ if (slashCmdStatus == PSQL_CMD_TERMINATE)
+ {
+ successResult = EXIT_SUCCESS;
+ break;
+ }
+
+ if (!pset.cur_cmd_interactive)
+ {
+ if (!success && die_on_error)
+ successResult = EXIT_USER;
+ /* Have we lost the db connection? */
+ else if (!pset.db)
+ successResult = EXIT_BADCONN;
+ }
+ } /* while !endoffile/session */
+
+ /*
+ * If we have a non-semicolon-terminated query at the end of file, we
+ * process it unless the input source is interactive --- in that case it
+ * seems better to go ahead and quit. Also skip if this is an error exit.
+ */
+ if (query_buf->len > 0 && !pset.cur_cmd_interactive &&
+ successResult == EXIT_SUCCESS)
+ {
+ /* save query in history */
+ /* currently unneeded since we don't use this block if interactive */
+#ifdef NOT_USED
+ if (pset.cur_cmd_interactive)
+ pg_send_history(history_buf);
+#endif
+
+ /* execute query unless we're in an inactive \if branch */
+ if (conditional_active(cond_stack))
+ {
+ success = SendQuery(query_buf->data);
+ }
+ else
+ {
+ if (pset.cur_cmd_interactive)
+ pg_log_error("query ignored; use \\endif or Ctrl-C to exit current \\if block");
+ success = true;
+ }
+
+ if (!success && die_on_error)
+ successResult = EXIT_USER;
+ else if (pset.db == NULL)
+ successResult = EXIT_BADCONN;
+ }
+
+ /*
+ * Check for unbalanced \if-\endifs unless user explicitly quit, or the
+ * script is erroring out
+ */
+ if (slashCmdStatus != PSQL_CMD_TERMINATE &&
+ successResult != EXIT_USER &&
+ !conditional_stack_empty(cond_stack))
+ {
+ pg_log_error("reached EOF without finding closing \\endif(s)");
+ if (die_on_error && !pset.cur_cmd_interactive)
+ successResult = EXIT_USER;
+ }
+
+ /*
+ * Let's just make real sure the SIGINT handler won't try to use
+ * sigint_interrupt_jmp after we exit this routine. If there is an outer
+ * MainLoop instance, it will reset sigint_interrupt_jmp to point to
+ * itself at the top of its loop, before any further interactive input
+ * happens.
+ */
+ sigint_interrupt_enabled = false;
+
+ destroyPQExpBuffer(query_buf);
+ destroyPQExpBuffer(previous_buf);
+ destroyPQExpBuffer(history_buf);
+
+ psql_scan_destroy(scan_state);
+ conditional_stack_destroy(cond_stack);
+
+ pset.cur_cmd_source = prev_cmd_source;
+ pset.cur_cmd_interactive = prev_cmd_interactive;
+ pset.lineno = prev_lineno;
+
+ return successResult;
+} /* MainLoop() */
diff --git a/src/bin/psql/mainloop.h b/src/bin/psql/mainloop.h
new file mode 100644
index 0000000..d9680d4
--- /dev/null
+++ b/src/bin/psql/mainloop.h
@@ -0,0 +1,17 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/mainloop.h
+ */
+#ifndef MAINLOOP_H
+#define MAINLOOP_H
+
+#include "fe_utils/psqlscan.h"
+
+extern const PsqlScanCallbacks psqlscan_callbacks;
+
+extern int MainLoop(FILE *source);
+
+#endif /* MAINLOOP_H */
diff --git a/src/bin/psql/nls.mk b/src/bin/psql/nls.mk
new file mode 100644
index 0000000..8a8a60d
--- /dev/null
+++ b/src/bin/psql/nls.mk
@@ -0,0 +1,14 @@
+# src/bin/psql/nls.mk
+CATALOG_NAME = psql
+AVAIL_LANGUAGES = cs de es fr it ja ko ru sv tr uk zh_CN
+GETTEXT_FILES = $(FRONTEND_COMMON_GETTEXT_FILES) \
+ command.c common.c copy.c crosstabview.c help.c input.c large_obj.c \
+ mainloop.c psqlscanslash.c startup.c \
+ describe.c sql_help.h sql_help.c \
+ tab-complete.c variables.c \
+ ../../fe_utils/cancel.c ../../fe_utils/print.c ../../fe_utils/psqlscan.c \
+ ../../common/exec.c ../../common/fe_memutils.c ../../common/username.c \
+ ../../common/wait_error.c
+GETTEXT_TRIGGERS = $(FRONTEND_COMMON_GETTEXT_TRIGGERS) \
+ N_ simple_prompt
+GETTEXT_FLAGS = $(FRONTEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/bin/psql/po/cs.po b/src/bin/psql/po/cs.po
new file mode 100644
index 0000000..45771e1
--- /dev/null
+++ b/src/bin/psql/po/cs.po
@@ -0,0 +1,6603 @@
+# Czech translation of psql
+#
+# pgtranslation Id: psql.po,v 1.6 2011/09/08 18:23:06 petere Exp $
+# Karel Žák, 2001-2003, 2004.
+# Zdeněk Kotala, 2009, 2011, 2012, 2013.
+# Tomáš Vondra <tv@fuzzy.cz>, 2012, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: psql-cs (PostgreSQL 9.3)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-10-31 16:14+0000\n"
+"PO-Revision-Date: 2020-11-01 00:59+0100\n"
+"Last-Translator: Tomas Vondra <tv@fuzzy.cz>\n"
+"Language-Team: Czech <info@cspug.cx>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "fatal: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "error: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "warning: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "nelze získat aktuální adresář: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "neplatný binární soubor\"%s\""
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "nelze číst binární soubor \"%s\""
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "nelze najít příkaz \"%s\" ke spuštění"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "nelze změnit adresář na \"%s\" : %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "nelze přečíst symbolický odkaz \"%s\": %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "volání pclose selhalo: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1255 command.c:3146 command.c:3195 command.c:3307 input.c:227
+#: mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "nedostatek paměti"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "nedostatek paměti\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "nelze duplikovat null pointer (interní chyba)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "nelze načíst efektivní user ID \"%ld\": %s"
+
+#: ../../common/username.c:45 command.c:559
+msgid "user does not exist"
+msgstr "uživatel neexistuje"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "vyhledávání uživatele selhalo: chybový kód %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "příkaz není spustitelný"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "příkaz nenalezen"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "potomek skončil s návratovým kódem %d"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "potomek byl ukončen výjimkou 0x%X"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "potomek byl ukončen signálem %d: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "potomek skončil s nerozponaným stavem %d"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "Požadavek na zrušení byl poslán\n"
+
+#: ../../fe_utils/cancel.c:165
+msgid "Could not send cancel request: "
+msgstr "Nelze poslat požadavek na zrušení: "
+
+#: ../../fe_utils/cancel.c:210
+#, c-format
+msgid "Could not send cancel request: %s"
+msgstr "Nelze poslat požadavek na zrušení: %s"
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu řádka)"
+msgstr[1] "(%lu řádky)"
+msgstr[2] "(%lu řádek)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "Přerušeno\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "Nelze přidat hlavičku k obsahu tabulky: překročen počet sloupců %d.\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "Nelze přidat buňku do obsahu tabulky: překročen celkový počet buněk %d.\n"
+
+#: ../../fe_utils/print.c:3414
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "specifikován neplatný formát výstupu (interní chyba): %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "přeskakuji rekursivní expanzi proměnné \"%s\""
+
+#: command.c:224
+#, c-format
+msgid "invalid command \\%s"
+msgstr "neplatný příkaz \\%s"
+
+#: command.c:226
+#, c-format
+msgid "Try \\? for help."
+msgstr "Zkuste \\? pro zobrazení nápovědy."
+
+#: command.c:244
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: nadbytečný argument \"%s\" ignorován"
+
+#: command.c:296
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "\\%s příkaz ignorován; použijte \\endif nebo Ctrl-C pro ukončení aktuálního \\if bloku"
+
+#: command.c:557
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "nelze získat domácí adresář pro uživatele ID %ld: %s"
+
+#: command.c:575
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: nelze změnit adresář na \"%s\": %m"
+
+#: command.c:600
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "Aktuálně nejste připojeni k databázi.\n"
+
+#: command.c:613
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na adrese \"%s\" na portu\"%s\".\n"
+
+#: command.c:616
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Jste připojeni k databázi \"%s\" jako uživatel \"%s\" přes socket v \"%s\" naportu \"%s\".\n"
+
+#: command.c:622
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na serveru \"%s\" (adresa \"%s\") na portu\"%s\".\n"
+
+#: command.c:625
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na serveru \"%s\" na portu\"%s\".\n"
+
+#: command.c:965 command.c:1061 command.c:2550
+#, c-format
+msgid "no query buffer"
+msgstr "v historii není žádný dotaz"
+
+#: command.c:998 command.c:5139
+#, c-format
+msgid "invalid line number: %s"
+msgstr "neplatné číslo řádky: %s"
+
+#: command.c:1052
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "Server (verze %s) nepodporuje editaci zdrojového kódu funkce."
+
+#: command.c:1055
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "Server (verze %s) nepodporuje editaci definice pohledu."
+
+#: command.c:1137
+msgid "No changes"
+msgstr "Žádné změny"
+
+#: command.c:1216
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: neplatné jméno kódování nebo nenalezena konverzní funkce"
+
+#: command.c:1251 command.c:1992 command.c:3142 command.c:3329 command.c:5241
+#: common.c:174 common.c:223 common.c:388 common.c:1237 common.c:1265
+#: common.c:1373 common.c:1480 common.c:1518 copy.c:488 copy.c:707 help.c:62
+#: large_obj.c:157 large_obj.c:192 large_obj.c:254
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1258
+msgid "There is no previous error."
+msgstr "Žádná předchozí chyba."
+
+#: command.c:1371
+#, c-format
+#| msgid "Missing left parenthesis."
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: chybějící pravá závorka"
+
+#: command.c:1548 command.c:1853 command.c:1867 command.c:1884 command.c:2044
+#: command.c:2281 command.c:2517 command.c:2557
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: chybí požadovaný argument"
+
+#: command.c:1679
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: nemůže být zadáno po \\else"
+
+#: command.c:1684
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: žádné odpovídající \\if"
+
+#: command.c:1748
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: nemůže být zadáno po \\else"
+
+#: command.c:1753
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: žádné odpovídající \\if"
+
+#: command.c:1793
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: žádné odpovídající \\if"
+
+#: command.c:1948
+msgid "Query buffer is empty."
+msgstr "Buffer dotazů je prázdný."
+
+#: command.c:1970
+msgid "Enter new password: "
+msgstr "Zadejte nové heslo: "
+
+#: command.c:1971
+msgid "Enter it again: "
+msgstr "Zadejte znova: "
+
+#: command.c:1975
+#, c-format
+msgid "Passwords didn't match."
+msgstr "Hesla se neshodují."
+
+#: command.c:2074
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: nelze načíst hodnotu proměnné"
+
+#: command.c:2177
+msgid "Query buffer reset (cleared)."
+msgstr "Buffer dotazů vyprázdněn."
+
+#: command.c:2199
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Historie zapsána do souboru: \"%s\".\n"
+
+#: command.c:2286
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: název proměnné prostředí nesmí obsahovat \"=\""
+
+#: command.c:2347
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "Server (verze %s) nepodporuje zobrazování zdrojového kódu funkce."
+
+#: command.c:2350
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "Server (verze %s) nepodporuje zobrazování definice pohledu."
+
+#: command.c:2357
+#, c-format
+msgid "function name is required"
+msgstr "function name is required"
+
+#: command.c:2359
+#, c-format
+msgid "view name is required"
+msgstr "je vyžadováno jméno pohledu"
+
+#: command.c:2489
+msgid "Timing is on."
+msgstr "Sledování času je zapnuto."
+
+#: command.c:2491
+msgid "Timing is off."
+msgstr "Sledování času je vypnuto."
+
+#: command.c:2576 command.c:2604 command.c:3739 command.c:3742 command.c:3745
+#: command.c:3751 command.c:3753 command.c:3761 command.c:3771 command.c:3780
+#: command.c:3794 command.c:3811 command.c:3869 common.c:70 copy.c:331
+#: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2988 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "Heslo: "
+
+#: command.c:2993 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "Heslo pro uživatele %s: "
+
+#: command.c:3046
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "Všechny parametry musí být zadány protože žádné připojení k databázi neexistuje"
+
+#: command.c:3335
+#, c-format
+msgid "Previous connection kept"
+msgstr "Předchozí spojení zachováno"
+
+#: command.c:3341
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3388
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na adrese \"%s\" na portu\"%s\".\n"
+
+#: command.c:3391
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+
+#: command.c:3397
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na serveru \"%s\" (adresa \"%s\") na portu\"%s\".\n"
+
+#: command.c:3400
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na serveru \"%s\" na portu\"%s\".\n"
+
+#: command.c:3405
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\".\n"
+
+#: command.c:3438
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, server %s)\n"
+
+#: command.c:3446
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"VAROVÁNÍ: %s major verze %s, major verze serveru %s.\n"
+" Některé vlastnosti psql nemusí fungovat.\n"
+
+#: command.c:3485
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL spojení (protokol: %s, šifra: %s, bitů: %s, komprese: %s)\n"
+
+#: command.c:3486 command.c:3487 command.c:3488
+msgid "unknown"
+msgstr "neznámé"
+
+#: command.c:3489 help.c:45
+msgid "off"
+msgstr "vypnuto"
+
+#: command.c:3489 help.c:45
+msgid "on"
+msgstr "zapnuto"
+
+#: command.c:3503
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "GSSAPI-šifrované spojení\n"
+
+#: command.c:3523
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"VAROVÁNÍ: Kódová stránka konzole (%u) není shodná s kódovou stránkou\n"
+" Windows (%u) 8-bitové znaky nemusí fungovat správně. Další\n"
+" informace najdete v manuálu k psql na stránce \"Poznámky pro\n"
+" uživatele Windows.\"\n"
+
+#: command.c:3627
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "proměnná prostředí PSQL_EDITOR_LINENUMBER_ARG musí být nastavena pro zadáníčísla řádky"
+
+#: command.c:3656
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "nelze spustit editor \"%s\""
+
+#: command.c:3658
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "nelze spustit /bin/sh"
+
+#: command.c:3696
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "nelze najít dočasný adresář: %s"
+
+#: command.c:3723
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "nelze otevřít dočasný soubor \"%s\": %m"
+
+#: command.c:4028
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: nejednoznačná zkratka \"%s\" odpovídá \"%s\" a \"%s\""
+
+#: command.c:4048
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: dovolené formáty jsou aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:4067
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: povolené styly řádek jsou ascii, old-ascii, unicode"
+
+#: command.c:4082
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: povolené styly Unicode rámečků jsou single, double"
+
+#: command.c:4097
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: povolené styly Unicode sloupců jsou single, double"
+
+#: command.c:4112
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: povolené styly Unicode rámečků záhlaví single, double"
+
+#: command.c:4155
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep musí být jediný jedno-bytový znak"
+
+#: command.c:4160
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldsep nemůže být dvojitá uvozovka, nový řádek, nebo konec řádky"
+
+#: command.c:4297 command.c:4485
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: neznámá volba: %s"
+
+#: command.c:4317
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Styl rámečků je %d.\n"
+
+#: command.c:4323
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "Cílová šířka není nastavena.\n"
+
+#: command.c:4325
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "Cílová šířka je %d.\n"
+
+#: command.c:4332
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Rozšířené zobrazení zapnuto.\n"
+
+#: command.c:4334
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "Rozšířené zobrazení je zapnuto automaticky.\n"
+
+#: command.c:4336
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Rozšířené zobrazení vypnuto.\n"
+
+#: command.c:4342
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "Oddělovač polí pro CSV je '\"%s\"'.\n"
+
+#: command.c:4350 command.c:4358
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Oddělovač polí je nulový byte.\n"
+
+#: command.c:4352
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Oddělovač polí je '\"%s\"'.\n"
+
+#: command.c:4365
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Implicitní zápatí je zapnuto.\n"
+
+#: command.c:4367
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Implicitní zápatí je vypnuto.\n"
+
+#: command.c:4373
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Výstupní formát je %s.\n"
+
+#: command.c:4379
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Styl čar je %s.\n"
+
+#: command.c:4386
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null je zobrazován jako '\"%s\"'.\n"
+
+#: command.c:4394
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "Zobrazení číselného výstupu dle národního nastavení je vypnuto.\n"
+
+#: command.c:4396
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "Zobrazení číselného výstupu dle národního nastavení je vypnuto.\n"
+
+#: command.c:4403
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Stránkování je zapnuto pro dlouhé výstupy.\n"
+
+#: command.c:4405
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Stránkování je vždy použito.\n"
+
+#: command.c:4407
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "Stránkování je vypnuto.\n"
+
+#: command.c:4413
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "Pager nebude použit pro méně než %d řáden.\n"
+msgstr[1] "Pager won't be used for less than %d lines.\n"
+msgstr[2] "Pager won't be used for less than %d lines.\n"
+
+#: command.c:4423 command.c:4433
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Oddělovač záznamů je nulový byte.\n"
+
+#: command.c:4425
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Oddělovač záznamů je <newline>.\n"
+
+#: command.c:4427
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Oddělovač záznamů je '\"%s\"'.\n"
+
+#: command.c:4440
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Atributy tabulky jsou \"%s\".\n"
+
+#: command.c:4443
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Atributy tabulky nejsou nastaveny.\n"
+
+#: command.c:4450
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Nadpis je \"%s\".\n"
+
+#: command.c:4452
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Nadpis není nastaven.\n"
+
+#: command.c:4459
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "Zobrazování pouze záznamů je vypnuto.\n"
+
+#: command.c:4461
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "Zobrazování pouze záznamů je vypnuto.\n"
+
+#: command.c:4467
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Styl Unicode rámečků je \"%s\".\n"
+
+#: command.c:4473
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Styl Unicode sloupců je \"%s\".\n"
+
+#: command.c:4479
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Styl Unicode rámečků záhlaví je \"%s\".\n"
+
+#: command.c:4712
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: selhal"
+
+#: command.c:4737 common.c:648
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch neze použít s prázdným dotazem"
+
+#: command.c:4778
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (každé %gs)\n"
+
+#: command.c:4781
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (každé %gs)\n"
+
+#: command.c:4835 command.c:4842 common.c:548 common.c:555 common.c:1220
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********* DOTAZ **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:5034
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\" není pohled"
+
+#: command.c:5050
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "nelze naparsovat pole reloptions"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "nelze escapovat bez aktivního spojení"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "argument shell příkazu obsahuje přechod na nový řádek nebo návrat na začátek (carriage return): \"%s\""
+
+#: common.c:304
+#, c-format
+msgid "connection to server was lost"
+msgstr "spojení na server bylo ztraceno"
+
+#: common.c:308
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "Spojení na server bylo ztraceno. Zkoušen restart: "
+
+#: common.c:313
+#, c-format
+msgid "Failed.\n"
+msgstr "Nepodařilo se.\n"
+
+#: common.c:326
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Podařilo se.\n"
+
+#: common.c:378 common.c:938 common.c:1155
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "neočekávaný PQresultStatus: %d"
+
+#: common.c:487
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Čas: %.3f ms\n"
+
+#: common.c:502
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Čas: %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:511
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Čas: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:518
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Čas: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:542 common.c:600 common.c:1191
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "Aktuálně nejste připojeni k databázi."
+
+#: common.c:655
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch nelze použít s COPY"
+
+#: common.c:660
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "neočekávaný stav výsledku pro \\watch"
+
+#: common.c:690
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "Asynchronní upozornění \"%s\" s obsahem \"%s\" obdrženo ze serverového procesu s PID %d.\n"
+
+#: common.c:693
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "Asynchronní upozornění \"%s\" obdrženo z procesu serveru s PID %d.\n"
+
+#: common.c:726 common.c:743
+#, c-format
+msgid "could not print result table: %m"
+msgstr "nelze číst vypsat tabulku: %m"
+
+#: common.c:764
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "žádné řádky nevráceny pro \\gset"
+
+#: common.c:769
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "více než jedna řádka vrácena pro \\gset"
+
+#: common.c:1200
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(Krokovací mód: potvrďte příkaz)*******************************************\n"
+"%s\n"
+"***(stiskněte return pro zpracování nebo x a return pro zrušení)********************\n"
+
+#: common.c:1255
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "Server (verze %s) nepodporuje savepoints pro ON_ERROR_ROLLBACK."
+
+#: common.c:1318
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "PŘÍKAZ: %s"
+
+#: common.c:1361
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "neočekávaný stav transakce: (%d)"
+
+#: common.c:1502 describe.c:2001
+msgid "Column"
+msgstr "Sloupec"
+
+#: common.c:1503 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3729 describe.c:3939
+#: describe.c:4172 describe.c:5378
+msgid "Type"
+msgstr "Typ"
+
+#: common.c:1552
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "Příkaz nevrátil žádný výsledek, nebo výsledek nemá žádné sloupce.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy: argumenty jsou povinné"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: chyba na \"%s\""
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: chyba na konci řádku"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "nelze spustit příkaz \"%s\": %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "nelze provést stat souboru \"%s\": %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: nelze kopírovat z/do adresáře"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "nelze zavřít rouru (pipe) pro externí příkaz: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "nelze zapsat data příkazu COPY: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "přenos dat příkazu COPY selhal: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "zrušeno na žádost uživatele"
+
+# common.c:485
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Zadejte data pro kopírování následovaná novým řádkem.\n"
+"Ukončete zpětným lomítkem a tečkou na samostatném řádku."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "přerušeno z důvodu chyby čtení"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "pokouším se opustit copy mód"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: příkaz nevrátil žádný výsledek"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: dotaz musí vracet alespoň tři sloupce"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: vertikální a horozintální záklaví musí být různé sloupce"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: datový sloupec musí být specifikován pokud má dotaz více než tři sloupce"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: maximální počet sloupců (%d) překročen"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: výsledek dotazu obsahuje několik hodnot pro řádek \"%s\", sloupec \"%s\""
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: číslo sloupce %d je mimo rozsah 1..%d"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: nejednoznačný název sloupce: \"%s\""
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: sloupec nenaleze: \"%s\""
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3718 describe.c:3926
+#: describe.c:4170 describe.c:4261 describe.c:4528 describe.c:4688
+#: describe.c:4929 describe.c:5004 describe.c:5015 describe.c:5077
+#: describe.c:5502 describe.c:5585
+msgid "Schema"
+msgstr "Schéma"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3719 describe.c:3927 describe.c:4093 describe.c:4171
+#: describe.c:4262 describe.c:4341 describe.c:4529 describe.c:4613
+#: describe.c:4689 describe.c:4930 describe.c:5005 describe.c:5016
+#: describe.c:5078 describe.c:5275 describe.c:5359 describe.c:5583
+#: describe.c:5755 describe.c:5995
+msgid "Name"
+msgstr "Jméno"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "Datový typ výsledku"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "Datový typ parametru"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3506 describe.c:3779 describe.c:3973 describe.c:4124
+#: describe.c:4198 describe.c:4271 describe.c:4354 describe.c:4437
+#: describe.c:4556 describe.c:4622 describe.c:4690 describe.c:4831
+#: describe.c:4873 describe.c:4946 describe.c:5008 describe.c:5017
+#: describe.c:5079 describe.c:5301 describe.c:5381 describe.c:5516
+#: describe.c:5586 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Popis"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Seznam agregačních funkcí"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "Server (verze %s) nepodporuje přístupové metody (access methods)."
+
+#: describe.c:175
+msgid "Index"
+msgstr "Index"
+
+#: describe.c:176 describe.c:3737 describe.c:3952 describe.c:5503
+msgid "Table"
+msgstr "Tabulka"
+
+#: describe.c:184 describe.c:5280
+msgid "Handler"
+msgstr "Handler"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "Seznam přístupových metod"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "Server (verze %s) nepodporuje tablespaces."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3730 describe.c:3928 describe.c:4097
+#: describe.c:4343 describe.c:4614 describe.c:5276 describe.c:5360
+#: describe.c:5756 describe.c:5893 describe.c:5996 describe.c:6111
+#: describe.c:6190 large_obj.c:289
+msgid "Owner"
+msgstr "Vlastník"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "Umístění"
+
+#: describe.c:263 describe.c:3323
+msgid "Options"
+msgstr "Volby"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3771 describe.c:3775
+msgid "Size"
+msgstr "Velikost"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "Seznam tablespaces"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "pro \\df můžete použít pouze přepínače [anptwS+]"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "pro \\df nelze použít volbu \"%c\" ve verzi serveru %s"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "agg"
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "window"
+
+#: describe.c:391
+msgid "proc"
+msgstr "proc"
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "func"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "trigger"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "immutable"
+
+#: describe.c:484
+msgid "stable"
+msgstr "stable"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "volatile"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "Volatilita"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "restricted"
+
+#: describe.c:495
+msgid "safe"
+msgstr "safe"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "unsafe"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "Parallel"
+
+#: describe.c:502
+msgid "definer"
+msgstr "definer"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "invoker"
+
+#: describe.c:504
+msgid "Security"
+msgstr "Bezpečnost"
+
+#: describe.c:511
+msgid "Language"
+msgstr "Jazyk"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "Zdrojový kód"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "Seznam funkcí"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "Interní jméno"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "Složky"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "Seznam datových typů"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "Typ levého argumentu"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "Typ pravého argumentu"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "Typ výsledku"
+
+#: describe.c:819 describe.c:4349 describe.c:4414 describe.c:4420
+#: describe.c:4830 describe.c:6362 describe.c:6366
+msgid "Function"
+msgstr "Funkce"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "Seznam operátorů"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "Kódování"
+
+#: describe.c:879 describe.c:4530
+msgid "Collate"
+msgstr "Collation"
+
+#: describe.c:880 describe.c:4531
+msgid "Ctype"
+msgstr "CType"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "Tablespace"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "Seznam databází"
+
+#: describe.c:956 describe.c:1117 describe.c:3720
+msgid "table"
+msgstr "tabulka"
+
+#: describe.c:957 describe.c:3721
+msgid "view"
+msgstr "pohled"
+
+#: describe.c:958 describe.c:3722
+msgid "materialized view"
+msgstr "materializovaný pohled"
+
+#: describe.c:959 describe.c:1119 describe.c:3724
+msgid "sequence"
+msgstr "sekvence"
+
+#: describe.c:960 describe.c:3726
+msgid "foreign table"
+msgstr "foreign_tabulka"
+
+#: describe.c:961 describe.c:3727 describe.c:3937
+msgid "partitioned table"
+msgstr "partitioned tabulka"
+
+#
+#: describe.c:973
+msgid "Column privileges"
+msgstr "Přístupová práva k atributům"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "Politiky"
+
+#: describe.c:1070 describe.c:6052 describe.c:6056
+msgid "Access privileges"
+msgstr "Přístupová práva"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "Server (verze %s) nepodporuje změny výchozích privilegií."
+
+#: describe.c:1121
+msgid "function"
+msgstr "funkce"
+
+#: describe.c:1123
+msgid "type"
+msgstr "typ"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "schéma"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "Implicitní přístupová práva"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "Objekt"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "omezení tabulky"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "omezení domény"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "třída operátorů"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "rodina operátorů"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "rule"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "Popis objektu"
+
+#: describe.c:1402 describe.c:3843
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "Nelze nalézt relaci se jménem \"%s\"."
+
+#: describe.c:1405 describe.c:3846
+#, c-format
+msgid "Did not find any relations."
+msgstr "Nelze nalézt žádnou relaci."
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "Nelze nalézt relaci se OID %s."
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "Start"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "Minimum"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "Maximum"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "Inkrement"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4265
+#: describe.c:4431 describe.c:4545 describe.c:4550 describe.c:6099
+msgid "yes"
+msgstr "ano"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4265
+#: describe.c:4428 describe.c:4545 describe.c:6100
+msgid "no"
+msgstr "ne"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "Cycles?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "Cache"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "Vlastník: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Sekvence pro identity sloupec: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Sekvence \"%s.%s\""
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Unlogged tabulka \"%s.%s\""
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Tabulka \"%s.%s\""
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Pohled \"%s.%s\""
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Unlogged materializovaný pohled \"%s.%s\""
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Materializovaný pohled \"%s.%s\""
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Unlogged index \"%s.%s\""
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Index \"%s.%s\""
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Unlogged partitioned index \"%s.%s\""
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "Partitioned index \"%s.%s\""
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Speciální relace \"%s.%s\""
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "TOAST tabulka \"%s.%s\""
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Složený typ \"%s.%s\""
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Foreign tabulka \"%s.%s\""
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Unlogged partitioned tabulka \"%s.%s\""
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "Partitioned tabulka \"%s.%s\""
+
+#: describe.c:2005 describe.c:4178
+msgid "Collation"
+msgstr "Collation"
+
+#: describe.c:2006 describe.c:4185
+msgid "Nullable"
+msgstr "Nullable"
+
+#: describe.c:2007 describe.c:4186
+msgid "Default"
+msgstr "Implicitně"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "Klíč?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "Definice"
+
+#: describe.c:2014 describe.c:5296 describe.c:5380 describe.c:5451
+#: describe.c:5515
+msgid "FDW options"
+msgstr "FDW volby"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "Uložení"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "Stats target"
+
+#: describe.c:2131
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Partition pro: %s %s"
+
+#: describe.c:2143
+msgid "No partition constraint"
+msgstr "Žádné omezení partition"
+
+#: describe.c:2145
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Omezení partition: %s"
+
+#: describe.c:2169
+#, c-format
+msgid "Partition key: %s"
+msgstr "Partition klíč: %s"
+
+#: describe.c:2195
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "Owning table: \"%s.%s\""
+
+#: describe.c:2266
+msgid "primary key, "
+msgstr "primární klíč, "
+
+#: describe.c:2268
+msgid "unique, "
+msgstr "unikátní, "
+
+#: describe.c:2274
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "pro tabulku \"%s.%s\""
+
+#: describe.c:2278
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", predikát (%s)"
+
+#: describe.c:2281
+msgid ", clustered"
+msgstr ", clusterován"
+
+#: describe.c:2284
+msgid ", invalid"
+msgstr ", neplatný"
+
+#: describe.c:2287
+msgid ", deferrable"
+msgstr ", odložitelný"
+
+#: describe.c:2290
+msgid ", initially deferred"
+msgstr ", iniciálně odložený"
+
+#: describe.c:2293
+msgid ", replica identity"
+msgstr ", replica identity"
+
+#: describe.c:2360
+msgid "Indexes:"
+msgstr "Indexy:"
+
+#: describe.c:2444
+msgid "Check constraints:"
+msgstr "Kontrolní pravidla:"
+
+#: describe.c:2512
+msgid "Foreign-key constraints:"
+msgstr "Podmínky cizího klíče:"
+
+#: describe.c:2575
+msgid "Referenced by:"
+msgstr "Odkazovaný:"
+
+#: describe.c:2625
+msgid "Policies:"
+msgstr "Politiky:"
+
+#: describe.c:2628
+msgid "Policies (forced row security enabled):"
+msgstr "Poitiky (forced row security zapnuta):"
+
+#: describe.c:2631
+msgid "Policies (row security enabled): (none)"
+msgstr "Politiky (row security zapnuta): (žádné)"
+
+#: describe.c:2634
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Politiky (forced row security zapnuta): (žádné)"
+
+#: describe.c:2637
+msgid "Policies (row security disabled):"
+msgstr "Politiky (row security vypnuta):"
+
+#: describe.c:2705
+msgid "Statistics objects:"
+msgstr "Statistické objekty:"
+
+#: describe.c:2819 describe.c:2923
+msgid "Rules:"
+msgstr "Rules:"
+
+#: describe.c:2822
+msgid "Disabled rules:"
+msgstr "Vypnutá pravidla (rules):"
+
+#: describe.c:2825
+msgid "Rules firing always:"
+msgstr "Vždy spouštěná pravidla:"
+
+#: describe.c:2828
+msgid "Rules firing on replica only:"
+msgstr "Pravidla spouštěná jen na replice:"
+
+#: describe.c:2868
+msgid "Publications:"
+msgstr "Publikace:"
+
+#: describe.c:2906
+msgid "View definition:"
+msgstr "Definice pohledu:"
+
+#: describe.c:3053
+msgid "Triggers:"
+msgstr "Triggery:"
+
+#: describe.c:3057
+msgid "Disabled user triggers:"
+msgstr "Vypnuté uživatelské triggery:"
+
+#: describe.c:3059
+msgid "Disabled triggers:"
+msgstr "Vypnuté triggery:"
+
+#: describe.c:3062
+msgid "Disabled internal triggers:"
+msgstr "Vypnuté interní triggery:"
+
+#: describe.c:3065
+msgid "Triggers firing always:"
+msgstr "Vždy spouštěné triggery:"
+
+#: describe.c:3068
+msgid "Triggers firing on replica only:"
+msgstr "Triggery spouštěné jen na replice:"
+
+#: describe.c:3140
+#, c-format
+msgid "Server: %s"
+msgstr "Server: %s"
+
+#: describe.c:3148
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "FDW volby: (%s)"
+
+#: describe.c:3169
+msgid "Inherits"
+msgstr "Dědí"
+
+#: describe.c:3229
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Počet partition: %d"
+
+#: describe.c:3238
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Počet partitions: %d (Použijte \\d+ pro jejich seznam.)"
+
+#: describe.c:3240
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Počet podřízených tabulek: %d (Použijte \\d+ pro jejich seznam.)"
+
+#: describe.c:3247
+msgid "Child tables"
+msgstr "Podřízené tabulky"
+
+#: describe.c:3247
+msgid "Partitions"
+msgstr "Partitions"
+
+#: describe.c:3276
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Typovaná tabulka typu: %s"
+
+#: describe.c:3292
+msgid "Replica Identity"
+msgstr "Replica Identity"
+
+#: describe.c:3305
+msgid "Has OIDs: yes"
+msgstr "Má OID: ano"
+
+#: describe.c:3314
+#, c-format
+msgid "Access method: %s"
+msgstr "Přístupová metoda: %s"
+
+#: describe.c:3394
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Tablespace: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3406
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", tablespace: \"%s\""
+
+#: describe.c:3499
+msgid "List of roles"
+msgstr "Seznam rolí"
+
+#: describe.c:3501
+msgid "Role name"
+msgstr "Jméno role"
+
+#: describe.c:3502
+msgid "Attributes"
+msgstr "Atributy"
+
+#: describe.c:3503
+msgid "Member of"
+msgstr "Je členem"
+
+#: describe.c:3514
+msgid "Superuser"
+msgstr "Super-uživatel"
+
+#: describe.c:3517
+msgid "No inheritance"
+msgstr "Bez dědičnosti"
+
+#: describe.c:3520
+msgid "Create role"
+msgstr "Vytvoř roli"
+
+#: describe.c:3523
+msgid "Create DB"
+msgstr "Vytvoř DB"
+
+#: describe.c:3526
+msgid "Cannot login"
+msgstr "Nemohu se přihlásit"
+
+#: describe.c:3530
+msgid "Replication"
+msgstr "Replikace"
+
+#: describe.c:3534
+msgid "Bypass RLS"
+msgstr "Obejít RLS"
+
+#: describe.c:3543
+msgid "No connections"
+msgstr "Není spojení"
+
+#: describe.c:3545
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d spojení"
+msgstr[1] "%d spojení"
+msgstr[2] "%d spojení"
+
+#: describe.c:3555
+msgid "Password valid until "
+msgstr "Heslo platné do "
+
+#: describe.c:3605
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "Server (verze %s) nepodporuje nastavení rolí pro jednotlivé databáze."
+
+#: describe.c:3618
+msgid "Role"
+msgstr "Role"
+
+#: describe.c:3619
+msgid "Database"
+msgstr "Databáze"
+
+#: describe.c:3620
+msgid "Settings"
+msgstr "Nastavení"
+
+#: describe.c:3641
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "Nelze nalézt žádné nastavení pro roli \"%s\" a databázi \"%s\"."
+
+#: describe.c:3644
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "Nelze nalézt žádné nastavení pro roli \"%s\"."
+
+#: describe.c:3647
+#, c-format
+msgid "Did not find any settings."
+msgstr "Žádná nastavení nenalezena."
+
+#: describe.c:3652
+msgid "List of settings"
+msgstr "Seznam nastavení"
+
+#: describe.c:3723
+msgid "index"
+msgstr "index"
+
+#: describe.c:3725
+msgid "special"
+msgstr "speciální"
+
+#: describe.c:3728 describe.c:3938
+msgid "partitioned index"
+msgstr "partitioned index"
+
+#: describe.c:3752
+msgid "permanent"
+msgstr "permanent"
+
+#: describe.c:3753
+msgid "temporary"
+msgstr "temporary"
+
+#: describe.c:3754
+msgid "unlogged"
+msgstr "unlogged"
+
+#: describe.c:3755
+msgid "Persistence"
+msgstr "Persistence"
+
+#: describe.c:3851
+msgid "List of relations"
+msgstr "Seznam relací"
+
+#: describe.c:3899
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "Server (verze %s) nepodporuje deklarativní partitioning."
+
+#: describe.c:3910
+msgid "List of partitioned indexes"
+msgstr "Seznam partitioned indexů"
+
+#: describe.c:3912
+msgid "List of partitioned tables"
+msgstr "Seznam partitioned tabulek"
+
+#: describe.c:3916
+msgid "List of partitioned relations"
+msgstr "Seznam partitioned relací"
+
+#: describe.c:3947
+msgid "Parent name"
+msgstr "Jméno předka"
+
+#: describe.c:3960
+msgid "Leaf partition size"
+msgstr "Leaf partition size"
+
+#: describe.c:3963 describe.c:3969
+msgid "Total size"
+msgstr "Celková velikost"
+
+#: describe.c:4101
+msgid "Trusted"
+msgstr "Důvěryhodný"
+
+#: describe.c:4109
+msgid "Internal language"
+msgstr "Interní jazyk"
+
+#: describe.c:4110
+msgid "Call handler"
+msgstr "Call handler"
+
+#: describe.c:4111 describe.c:5283
+msgid "Validator"
+msgstr "Validátor"
+
+#: describe.c:4114
+msgid "Inline handler"
+msgstr "Inline handler"
+
+#: describe.c:4142
+msgid "List of languages"
+msgstr "Seznam jazyků"
+
+#: describe.c:4187
+msgid "Check"
+msgstr "Kontrola"
+
+#: describe.c:4229
+msgid "List of domains"
+msgstr "Seznam domén"
+
+#: describe.c:4263
+msgid "Source"
+msgstr "Zdroj"
+
+#: describe.c:4264
+msgid "Destination"
+msgstr "Cíl"
+
+#: describe.c:4266 describe.c:6101
+msgid "Default?"
+msgstr "Implicitně?"
+
+#: describe.c:4303
+msgid "List of conversions"
+msgstr "Seznam konverzí"
+
+#: describe.c:4342
+msgid "Event"
+msgstr "Událost"
+
+#: describe.c:4344
+msgid "enabled"
+msgstr "povoleno"
+
+#: describe.c:4345
+msgid "replica"
+msgstr "replica"
+
+#: describe.c:4346
+msgid "always"
+msgstr "vždy"
+
+#: describe.c:4347
+msgid "disabled"
+msgstr "disabled"
+
+#: describe.c:4348 describe.c:5997
+msgid "Enabled"
+msgstr "Povoleno"
+
+#: describe.c:4350
+msgid "Tags"
+msgstr "Tagy"
+
+#: describe.c:4369
+msgid "List of event triggers"
+msgstr "Seznam event triggerů"
+
+#: describe.c:4398
+msgid "Source type"
+msgstr "Zdrojový typ"
+
+#: describe.c:4399
+msgid "Target type"
+msgstr "Cílový typ"
+
+#: describe.c:4430
+msgid "in assignment"
+msgstr "v přiřazení"
+
+#: describe.c:4432
+msgid "Implicit?"
+msgstr "Implicitně?"
+
+#: describe.c:4487
+msgid "List of casts"
+msgstr "Seznam přetypování"
+
+#: describe.c:4515
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "Server (verze %s) nepodporuje collations."
+
+#: describe.c:4536 describe.c:4540
+msgid "Provider"
+msgstr "Provider"
+
+#: describe.c:4546 describe.c:4551
+msgid "Deterministic?"
+msgstr "Deterministická?"
+
+#: describe.c:4586
+msgid "List of collations"
+msgstr "Seznam collations"
+
+#: describe.c:4645
+msgid "List of schemas"
+msgstr "Seznam schémat"
+
+#: describe.c:4670 describe.c:4917 describe.c:4988 describe.c:5059
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "Server (verze %s) nepodporuje fulltextové vyhledávání."
+
+#: describe.c:4705
+msgid "List of text search parsers"
+msgstr "Seznam fulltextových parserů"
+
+#: describe.c:4750
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "Nelze nalézt fulltextový parser se jménem \"%s\"."
+
+#: describe.c:4753
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "Nelze nalézt žádný fulltextový parser."
+
+#: describe.c:4828
+msgid "Start parse"
+msgstr "Začátek parsování"
+
+#: describe.c:4829
+msgid "Method"
+msgstr "Metoda"
+
+#: describe.c:4833
+msgid "Get next token"
+msgstr "Získej další token"
+
+#: describe.c:4835
+msgid "End parse"
+msgstr "Konec parsování"
+
+#: describe.c:4837
+msgid "Get headline"
+msgstr "Získej záhlaví"
+
+#: describe.c:4839
+msgid "Get token types"
+msgstr "Získej typy tokenu"
+
+#: describe.c:4850
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Fulltextový parser \"%s.%s\""
+
+#: describe.c:4853
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Fulltextový parser \"%s\""
+
+#: describe.c:4872
+msgid "Token name"
+msgstr "Jméno tokenu"
+
+#: describe.c:4883
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Jméno tokenu pro parser \"%s.%s\""
+
+#: describe.c:4886
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Typ tokenu pro parser \"%s\""
+
+#: describe.c:4940
+msgid "Template"
+msgstr "Šablona"
+
+#: describe.c:4941
+msgid "Init options"
+msgstr "Init options"
+
+#: describe.c:4963
+msgid "List of text search dictionaries"
+msgstr "Seznam fulltextových slovníků"
+
+#: describe.c:5006
+msgid "Init"
+msgstr "Init"
+
+#: describe.c:5007
+msgid "Lexize"
+msgstr "Lexize"
+
+#: describe.c:5034
+msgid "List of text search templates"
+msgstr "Seznam fulltextových šablon"
+
+#: describe.c:5094
+msgid "List of text search configurations"
+msgstr "Seznam fulltextových konfigurací"
+
+#: describe.c:5140
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "Nelze nalézt fulltextovou konfiguraci se jménem \"%s\"."
+
+#: describe.c:5143
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "Nelze nalézt žádnou fulltextovou konfiguraci."
+
+#: describe.c:5209
+msgid "Token"
+msgstr "Token"
+
+#: describe.c:5210
+msgid "Dictionaries"
+msgstr "Slovníky"
+
+#: describe.c:5221
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Fulltextová konfigurace \"%s.%s\""
+
+#: describe.c:5224
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Fulltextová konfigurace \"%s\""
+
+#: describe.c:5228
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Parser: \"%s.%s\""
+
+#: describe.c:5231
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Parser: \"%s\""
+
+#: describe.c:5265
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "Server (verze %s) nepodporuje foreign-data wrappery."
+
+#: describe.c:5323
+msgid "List of foreign-data wrappers"
+msgstr "Seznam foreign-data wrapperů"
+
+#: describe.c:5348
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "Server (verze %s) nepodporuje foreign servery."
+
+#: describe.c:5361
+msgid "Foreign-data wrapper"
+msgstr "Foreign-data wrapper"
+
+#: describe.c:5379 describe.c:5584
+msgid "Version"
+msgstr "Verze"
+
+#: describe.c:5405
+msgid "List of foreign servers"
+msgstr "Seznam foreign serverů"
+
+#: describe.c:5430
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "Server (verze %s) nepodporuje mapování uživatelů."
+
+#: describe.c:5440 describe.c:5504
+msgid "Server"
+msgstr "Server"
+
+#: describe.c:5441
+msgid "User name"
+msgstr "Uživatelské jméno"
+
+#: describe.c:5466
+msgid "List of user mappings"
+msgstr "Seznam mapování uživatelů"
+
+#: describe.c:5491
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "Server (verze %s) nepodporuje foreign tabulky."
+
+#: describe.c:5544
+msgid "List of foreign tables"
+msgstr "Seznam foreign tabulek"
+
+#: describe.c:5569 describe.c:5626
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "Server (verze %s) nepodporuje extensions."
+
+#: describe.c:5601
+msgid "List of installed extensions"
+msgstr "Seznam instalovaných extensions"
+
+#: describe.c:5654
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "Nelze nalézt extension se jménem \"%s\"."
+
+#: describe.c:5657
+#, c-format
+msgid "Did not find any extensions."
+msgstr "Nelze nalézt žádnou extension."
+
+#: describe.c:5701
+msgid "Object description"
+msgstr "Popis objektu"
+
+#: describe.c:5711
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Objekty v rozšíření \"%s\""
+
+#: describe.c:5740 describe.c:5816
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "Server (verze %s) nepodporuje publikace."
+
+#: describe.c:5757 describe.c:5894
+msgid "All tables"
+msgstr "Všechny tabulky"
+
+#: describe.c:5758 describe.c:5895
+msgid "Inserts"
+msgstr "Insert"
+
+#: describe.c:5759 describe.c:5896
+msgid "Updates"
+msgstr "Update"
+
+#: describe.c:5760 describe.c:5897
+msgid "Deletes"
+msgstr "Delete"
+
+#: describe.c:5764 describe.c:5899
+msgid "Truncates"
+msgstr "Truncates"
+
+#: describe.c:5768 describe.c:5901
+msgid "Via root"
+msgstr "Via root"
+
+#: describe.c:5785
+msgid "List of publications"
+msgstr "Seznam publikací"
+
+#: describe.c:5858
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "Nelze nalézt publikaci se jménem \"%s\"."
+
+#: describe.c:5861
+#, c-format
+msgid "Did not find any publications."
+msgstr "Nelze nalézt žádnou publikaci."
+
+#: describe.c:5890
+#, c-format
+msgid "Publication %s"
+msgstr "Publikace %s"
+
+#: describe.c:5938
+msgid "Tables:"
+msgstr "Tabulky:"
+
+#: describe.c:5982
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "Server (verze %s) nepodporuje subskripce."
+
+#: describe.c:5998
+msgid "Publication"
+msgstr "Publikace"
+
+#: describe.c:6005
+msgid "Synchronous commit"
+msgstr "Synchronní commit"
+
+#: describe.c:6006
+msgid "Conninfo"
+msgstr "Spojení"
+
+#: describe.c:6028
+msgid "List of subscriptions"
+msgstr "Seznam subskripcí"
+
+#: describe.c:6095 describe.c:6184 describe.c:6270 describe.c:6353
+msgid "AM"
+msgstr "AM"
+
+#: describe.c:6096
+msgid "Input type"
+msgstr "Vstupní typ"
+
+#: describe.c:6097
+msgid "Storage type"
+msgstr "Typ uložení"
+
+#: describe.c:6098
+msgid "Operator class"
+msgstr "Třída operátorů"
+
+#: describe.c:6110 describe.c:6185 describe.c:6271 describe.c:6354
+msgid "Operator family"
+msgstr "Rodina operátorů"
+
+#: describe.c:6143
+msgid "List of operator classes"
+msgstr "Seznam tříd operátorů"
+
+#: describe.c:6186
+msgid "Applicable types"
+msgstr "Aplikovatelné typy"
+
+#: describe.c:6225
+msgid "List of operator families"
+msgstr "Seznam rodin operátorů"
+
+#: describe.c:6272
+msgid "Operator"
+msgstr "Operátor"
+
+#: describe.c:6273
+msgid "Strategy"
+msgstr "Strategie"
+
+#: describe.c:6274
+msgid "ordering"
+msgstr "řazení"
+
+#: describe.c:6275
+msgid "search"
+msgstr "hledání"
+
+#: describe.c:6276
+msgid "Purpose"
+msgstr "Účel"
+
+#: describe.c:6281
+msgid "Sort opfamily"
+msgstr "Rodina operátorů"
+
+#: describe.c:6312
+msgid "List of operators of operator families"
+msgstr "List operátorů v rodinách operátorů"
+
+#: describe.c:6355
+msgid "Registered left type"
+msgstr "Typ levého argumentu"
+
+#: describe.c:6356
+msgid "Registered right type"
+msgstr "Typ pravého argumentu"
+
+#: describe.c:6357
+msgid "Number"
+msgstr "Číslo"
+
+#: describe.c:6393
+msgid "List of support functions of operator families"
+msgstr "Seznam support funkcí pro rodiny operátorů"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql je PostgreSQL interaktivní terminál.\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "Použití:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [PŘEPÍNAČE]... [DATABÁZE [UŽIVATEL]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Základní volby:\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=PŘÍKAZ provede pouze jeden příkaz (SQL nebo interní) a skončí\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr " -d, --dbname=DATABÁZE jméno databáze pro spojení (implicitně: \"%s\")\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=SOUBOR provede příkazy ze souboru a skončí\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list vypíše seznam dostupných databází a skončí\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=JMÉNO=HODNOTA\n"
+" nastaví psql proměnnou JMÉNO na HODNOTA\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+"\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version ukáže informace o verzi a skončí\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc nečíst inicializační soubor (~/.psqlrc)\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (\"jedna\"), --single-transaction\n"
+" proveď operaci v rámci jedné transakce\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] ukáže tuto nápovědu, a skončí\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands vypíše interní příkazy, poté skončí\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables vypíše speciální proměnné, poté skončí\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Vstupní a výstupní přepínače:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all ukáže všechny vstupy ze skriptu\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors vypíše příkazy které selhaly\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e --echo-queries ukáže všechny příkazy poslané na server\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden ukáže dotazy generované interními příkazy\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=SOUBOR uloží záznam sezení do souboru\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline vypne pokročilé editační možnosti příkazové řádky (podpora readline)\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=SOUBOR zapíše výsledek dotazu do souboru (nebo |roury)\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet tichý chod (bez hlášek, pouze výstupy dotazů)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step krokovací mód (nutné potvrzení každého dotazu)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line jednořádkový mód (konec řádky ukončuje SQL příkaz)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Výstupní formát je:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align mód nezarovnaného formátu tabulky\n"
+
+#: help.c:111
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv CSV (Comma-Separated Values) mód výstupu tabulek\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=ŘETĚZEC\n"
+" oddělovač polí pro nezarovnaný výstup (implicitně: \"%s\")\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html mód HTML formátu tabulky\n"
+
+#: help.c:116
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr " -P, --pset=VAR[=ARG] nastaví zobrazovací parametr VAR na hodnotu ARG (viz. příkaz \\pset)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=ŘETĚZEC\n"
+" oddělovač záznamů pro nezarovnaný výstup (implicitně: newline)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only tiskni pouze řádky\n"
+
+#: help.c:120
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr " -T, --table-attr=TEXT nastaví atributy HTML tabulky (např. width, border)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded zapne rozšířený tabulkový výstup\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" nastaví oddělovač polí pro nezarovnaný výstup na nulový byte\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" nastaví oddělovač záznamů pro nezarovnaný výstup na nulový byte\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Parametry spojení:\n"
+
+#: help.c:130
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr " -h, --host=HOSTNAME jméno databázového serveru nebo adresář se soketem (implicitně: \"%s\")\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "lokální soket"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORT port databázového serveru (implicitně: \"%s\")\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=JMÉNO jméno databázového uživatele (implicitně: \"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password neptá se na heslo\n"
+
+#: help.c:142
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr " -W, --password vynucený dotaz na heslo (měl by být proveden automaticky)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"Pro více informací použijte \"\\?\" (pro interní příkazy) nebo \"\\help\"\n"
+"(pro SQL příkazy), nebo se podívejte do dokumentace PostgreSQL a\n"
+"části věnované psql.\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Chyby hlašte na <%s>.\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s domácí stránka: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "Hlavní\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright zobrazí podmínky použití a distribuce PostgreSQL\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [SLOUPCE] spustí dotaz a zobrazí výsledek přes crosstab\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose zobrazí polední chybovou hlášku s maximem podrobností\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc popíše výsledek dotazu, bez spuštění\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec spustí dotaz, poté spustí každou hodnotu z jeho výsledku\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] spustí dotaz a uloží výsledky v psql proměnných\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [(VOLBY)] [SOUBOR] jako \\g, ale vynucuje rozšířený mód výstupu\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q ukončení psql\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEC] každých SEC vteřin spusť dotaz\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "Nápověda\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] zobrazí nápovědu k interním příkazům\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options zobrazí nápovědu k psql parametrům psql pro příkazovou řádku\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables zobrazí nápovědu ke speciálním proměnným\n"
+
+#: help.c:193
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr " \\h [JMÉNO] nápověda syntaxe SQL příkazů, * pro všechny příkazy\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Paměť dotazu\n"
+
+#: help.c:197
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr " \\e [SOUBOR] [ŘÁDEK] editace aktuálního dotazu (nebo souboru) v externím editoru\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [JMENOFUNKCE [ŘÁDEK]] editace definice funkce v externím editoru\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr ""
+" \\ev [VIEWNAME [LINE]] editace definice pohledu v externím editoru\n"
+"\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p ukázat současný obsah paměti s dotazem\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r vyprázdnění paměti s dotazy\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [SOUBOR] vytiskne historii nebo ji uloží do souboru\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w SOUBOR zapsání paměti s dotazem do souboru\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "Vstup/Výstup\n"
+
+#: help.c:209
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... provede SQL COPY s tokem dat na klienta\n"
+
+#: help.c:210
+#, c-format
+msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"
+msgstr ""
+" \\echo [-n] [ŘETĚZEC] vypsání textu na standardní výstup (-n pro potlačení\n"
+" nového řádku)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i SOUBOR provedení příkazů ze souboru\n"
+
+#: help.c:212
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr " \\ir FILE jako \\i, ale relativně k pozici v aktuálním skriptu\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [SOUBOR] přesměrování výsledků dotazu do souboru nebo |roury\n"
+
+#: help.c:214
+#, c-format
+msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"
+msgstr ""
+" \\qecho [ŘETĚZEC] vypsání textu na \\o výstup dotazů (-n pro potlačení\n"
+" nového řádku)\n"
+
+#: help.c:215
+#, c-format
+#| msgid " \\echo [STRING] write string to standard output\n"
+msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"
+msgstr ""
+" \\warn [-n] [TEXT] vypsání textu na standardní výstup (-n pro potlačení\n"
+" nového řádku)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "Podmínka\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR začne podmíněný blok\n"
+
+#: help.c:220
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR alternativa v současném podmíněném bloku\n"
+
+#: help.c:221
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else poslední alternativa v současném podmíněném bloku\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif ukončí podmíněný blok\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "Informační\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (volby: S = zobraz systémové objekty, + = další detaily)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] seznam tabulek, pohledů a sekvencí\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] JMÉNO popis tabulky, pohledů, sekvence nebo indexu\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [VZOR] seznam agregačních funkcí\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [PATTERN] seznam přístupových metod\n"
+
+#: help.c:231
+#, c-format
+#| msgid " \\do[S] [PATTERN] list operators\n"
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] vypíše třídy operátorů\n"
+
+#: help.c:232
+#, c-format
+#| msgid " \\do[S] [PATTERN] list operators\n"
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] vypíše rodiny operátorů\n"
+
+#: help.c:233
+#, c-format
+#| msgid " \\do[S] [PATTERN] list operators\n"
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] vypíše operátory pro rodiny operátorů\n"
+
+#: help.c:234
+#, c-format
+msgid " \\dAp [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr " \\dAp [AMPTRN [OPFPTRN]] vypíše support funkce rodin operátorů\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [VZOR] seznam tablespaces\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [PATTERN] seznam konverzí\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [PATTERN] seznam přetypování\n"
+
+#: help.c:238
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [PATTERN] zobrazí popis objektů nezobrazených jinde\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [PATTERN] seznam domén\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [VZOR] seznam implicitních privilegií\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [VZOR] seznam foreign tabulek\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [VZOR] seznam foreign tabulek\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [VZOR] seznam foreign serverů\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [VZOR] seznam mapování uživatelů\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [VZOR] seznam foreign-data wrapperů\n"
+
+#: help.c:246
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[anptw][S+] [VZOR] seznam [pouze agg/normal/procedures/trigger/window] funkcí\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [VZOR] seznam konfigurací fulltextového vyhledávání\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [VZOR] seznam slovníků fulltextového vyhledávání\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [VZOR] seznam parserů fulltextového vyhledávání\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [VZOR] seznam šablon fulltextového vyhledávání\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [PATTERN] seznam rolí\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [VZOR] seznam indexů\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl seznam \"large object\" stejné jako \\lo_list\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [VZOR] seznam procedurálních jazyků\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [PATTERN] seznam materializovaných pohledů\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [VZOR] seznam schémat\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [VZOR] seznam operátorů\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [VZOR] seznam collations\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [VZOR] seznam přístupových práv tabulek, pohledů a sekvencí\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"
+msgstr " \\dP[itn+] [PATTERN] seznam [pouze index/table] partitioned relations [n=nested]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [VZOR1 [VZOR2]] seznam nastavení rolí pro jednotlivé databáze\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [PATTERN] seznam replikačních publikací\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [PATTERN] seznam replikačních subskripcí\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [VZOR] seznam sekvencí\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [VZOR] seznam tabulek\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [VZOR] seznam datových typů\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [PATTERN] seznam rolí\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [VZOR] seznam pohledů\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [VZOR] seznam rozšíření\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [PATTERN] seznam event triggerů\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [PATTERN] seznam databází\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNCNAME zobrazí definici funkce\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] VIEWNAME zobrazí definici pohledu\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [VZOR] stejné jako \\dp\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "Formátování\n"
+
+#: help.c:278
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a přepíná mezi 'unaligned' a 'aligned' modem výstupu\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [ŘETĚZEC] nastaví titulek tabulky nebo odnastaví pokud není definován řetězec\n"
+
+#: help.c:280
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr " \\f [ŘETĚZEC] nastaví nebo zobrazí oddělovače polí pro nezarovnaný výstup dotazů\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H zapne HTML mód výstupu (nyní %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] ukazovat pouze řádky (nyní %s)\n"
+
+#: help.c:292
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [ŘETĚZEC] nastavení atributů HTML tagu <table>\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] zapne rozšířený mód výstupu (nyní %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "Spojení\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] [DATABÁZE|- UŽIVATEL|- HOST|- PORT|-] | conninfo]\n"
+" připojí se do nové databáze (současná \"%s\")\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] [DATABÁZE|- UŽIVATEL|- HOST|- PORT|-] | conninfo]\n"
+" připojí se do nové databáze (současně žádné spojení)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo zobrazí informace o aktuálním spojení\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [KÓDOVÁNÍ] zobrazení nebo nastavení kódování klienta\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [UŽIVATEL] bezpečná změna hesla uživatele\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "Operační systém\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [ADRESÁŘ] změna aktuálního pracovního adresář\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NAME [VALUE] nastaví nebo zruší proměnnou prostředí\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] použít sledování času u příkazů (nyní %s)\n"
+
+#: help.c:315
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr " \\! [PŘÍKAZ] provedení příkazu v shellu nebo nastartuje interaktivní shell\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "Proměnné\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [TEXT] PROMĚNÁ vyzve uživatele, aby zadal hodnotu proměnné\n"
+
+#: help.c:320
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr ""
+" \\set [PROMĚNÁ [HODNOTA]]\n"
+" nastavení interní proměnné nebo bez parametrů zobrazí\n"
+" seznam všech proměnných\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset JMÉNO zrušení interní proměnné\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "Velké objekty (LO)\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID SOUBOR\n"
+" \\lo_import SOUBOR [KOMENTÁŘ]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID operace s \"large\" objekty\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"Seznam proměnných se zvláštním významem\n"
+"\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "psql proměnné:\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NAME=VALUE\n"
+" nebo \\set NAME VALUE v psql\n"
+"\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" pokud nastaveno, úspěšně dokončené SQL příkazy jsou automaticky commitovány\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" určuje velikost písmen pro dokončování SQL klíčových slov\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" název aktuálně připojené databáze\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" určuje jaký vstup je zapisován na standardní výstup\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" pokud je nastaveno, zobrazuje dotazy spouštěné interními (backslash) příkazy;\n"
+" při nastavení na \"noexec\", pouze zobrazí bez spuštění\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" aktuální kódování znakové sady klienta\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" nastaveno na true pokud poslední dotaz selhal, jinak false\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" počet řádek výsledku pro načtení a zobrazení nanjednou (0 = unlimited)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" pokud nastaveno, informace o table access methods nejsou zobrazovány\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" nastavuje chování historie příkazů [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" název souboru pro uložení historie příkazů\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" maximální počet položek uložených v historii přkazů\n"
+"\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" databázový server ke kterému jste aktuálně připojeni\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" počet EOF znaků potřebných pro ukončení interaktivníhi sezení\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" hodnota posledního změněného OID\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" zpráva a SQLSTATE poslední chyby, nebo prázdný řetězec a \"00000\" pokud se chyba nevyskytla\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" pokud nastaveno, chyba nepřeruší transakci (používá implicitní savepointy)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" zastaví dávkové spouštění v případě výskytu chyby\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" port na serveru používaný aktuálním spojením\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" specifikuje standardní psql prompt\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" specifikuje prompt používaný pokud příkaz pokračuje z předchozí řádky\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" specifikuje prompt používaný během COPY ... FROM STDIN\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" tichý běh (stejné jako volba -q)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" počet řádek vrácených nebo ovlivněných předchozím dotazem, nebo 0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" verze serveru (v krátkém textovém nebo numerickém formátu)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" určuje zobrazení informací o kontextu zpráv [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" pokud nastaveno, konec řádky ukončuje SQL příkazy (stejné jako volba -S)\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" single-step mód (stejné jako volba -s)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" SQLSTATE posledního dotazu, nebo \"00000\" pokud skončil bez chyby\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" uživatelský účet ke kterému jste aktuálně připojeni\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" určuje podrobnost chybových hlášení [default, verbose, terse, sqlstate]\n"
+"\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" verze psql (v podropbném řetězci, krátkém řetězci, nebo numerickém formátu)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Nastavení zobrazení:\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NAME[=VALUE]\n"
+" nebo \\pset NAME [VALUE] v psql\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" styl rámečků (číslo)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" cílová šířka pro zalomený formát\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (nebo x)\n"
+" rozšířený výstup [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" oddělovač položek pro nezarovnaný výstup (výchozí \"%s\")\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" nastaví oddělovač polí pro nezarovnaný výstup na nulový byte\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" zapne nebo vypne zobrazení zápatí tabulky [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" nastaví formát výstupu [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestype\n"
+" nastaví styl vykreslování rámečků [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" nastaví řetězec vypisovaný místo null hodnoty\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" zapne zobrazení lokalizovaného znaku pro oddělení skupin číslic\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" určuje kdy se použije externí pager [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" oddělovač záznamů (řádek) pro nezarovnaný výstup\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" nastaví oddělovač záznamů pro nezarovnaný výstup na nulový byte\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (or T)\n"
+" specifikuje attributy pro table tag v html formátu, nebo proporcionální\n"
+" šířky sloupců pro datové typy zarovnávané doleva v latex-longtable formátu\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" nastavuje titulek tabulky pro následně vypisované tabulky\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" pokud nastaveno, jsou vypsána pouze data z tabulky\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" nastaví styl Unicode rámečků [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Proměnné prostředí:\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" nebo \\setenv NAME [VALUE] v rámci psql\n"
+"\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" nebo \\setenv NAME [VALUE] v rámci psql\n"
+"\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" počet sloupců pro zalamovaný formát\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" stejné jako application_name v parametrech spojení\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" stejné jako dbname v parametrech spojení\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" stejné jako host v parametrech spojení\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" heslo pro spojení (nedoporučuje se)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" jméno souboru s hesly\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" stejné jako port v parametrech spojení\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" stejné jako user v parametrech spojení\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor používaný příkazy \\e, \\ef, a \\ev\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" jak specifikovat číslo řádky při spouštění editoru\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" alternativní umístění pro soubor s historií příkazů\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" jméno externího stránkovacího programu (pageru)\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" alternativní umístění uživatelova .psqlrc souboru\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" shell používaný \\! příkazem\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" adresář pro dočasné soubory\n"
+
+#: help.c:554
+msgid "Available help:\n"
+msgstr "Dostupná nápověda:\n"
+
+#: help.c:642
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"Příkaz: %s\n"
+"Popis: %s\n"
+"Syntaxe:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:661
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"Nápověda pro \"%s\" je nedostupná.\n"
+"Pomocí \\h bez parametrů lze získat seznam dostupných nápověd.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "nelze číst vstupní soubor: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "nelze uložit historii do souboru \"%s\": %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "historie není podporována pro tuto instalaci"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: není spojení s databází"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: současná transakce je přerušena (abort)"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: neznámý status transakce"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "Velké objekty (LO)"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: escapované"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Použijte \"\\q\" pro odchod z %s.\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"Na vstupu je dump v PostgreSQL \"custom\" formátu.\n"
+"Pro obnovení této zálohy použijte klienta pg_restore pro příkazovou řádku.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Použijte \\? pro nápovědu nebo stiskněte control-C pro vymazání vstupního bufferu."
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "Pro zobrazení nápovědy použijte \"\\?\"."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Používáte psql, řádkový nástroj pro připojení k PostgreSQL."
+
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Pište: \\copyright pro podmínky distribuce\n"
+" \\h pro nápovědu k SQL příkazům\n"
+" \\? pro nápovědu k psql příkazům\n"
+" \\g nebo středník pro ukončení SQL příkazů\n"
+" \\q pro ukončení programu\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "Použijte \\q pro ukončení."
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "Použijte control-D pro ukončení."
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "Použijte control-C pro ukončení."
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "dotaz ignorován; použijte \\endif nebo Ctrl-C pro ukončení aktuálního \\if bloku"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "dosažen EOF bez nalezení ukončujícího \\endif(s)"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "neukončený řetězec v uvozovkách"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: nedostatek paměti"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "jméno"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "aggregate_signature"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "nové_jméno"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "nový_vlastník"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "nové_schéma"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "kde aggregate_signature je:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "mód_argumentu"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "jméno_argumentu"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "typ_argumentu"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "volba"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "kde volba může být:"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "allowconn"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "connlimit"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "istemplate"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "nový_tablespace"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "konfigurační_parametr"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "hodnota"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "cílová_role"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "jméno_schématu"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "zkrácený_grant_nebo_revoke"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "kde zkrácený_grant_nebo_revoke je jedno z:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "jméno_role"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "výraz"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "omezení_domény"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "jméno_omezení"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "jméno_nového_omezení"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "nová_verze"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "členský_objekt"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "kde členský_objekt je:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "jméno_objektu"
+
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "aggregate_name"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "zdrojový_typ"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "cílový_typ"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "jméno_funkce"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "jméno_operátoru"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "levý_typ"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "pravý_typ"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "metoda_indexování"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "procedure_name"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "routine_name"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "jméno_typu"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "jméno_jazyka"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "a aggregate_signature je:"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "handler_function"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "validator_function"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "akce"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "jméno_sloupce"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "nové_jméno_sloupce"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "kde akce je jedno z:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "datový_typ"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "collation"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "omezení_sloupce"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "integer"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "volba_atributu"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "omezení_tabulky"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "jméno_triggeru"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "nadřízená_tabulka"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "název_extension"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "execution_cost"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "výsledné_řádky"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "support_funkce"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "role_specification"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "uživatel"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "kde role_specification může být:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "group_name"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "jméno_tablespace"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "jméno_indexu"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "parametr_uložení"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "column_number"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "oid_large_objektu"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr "res_proc"
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr "join_proc"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "číslo_strategie"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "typ_operátoru"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr "sort_family_name"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr "support_number"
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "typ_argumentu"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "jméno_tabulky"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr "using_expression"
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "check_expression"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "publication_parameter"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "heslo"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr "timestamp"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "jméno_databáze"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr "inkrement"
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "min_hodnota"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "max_hodnota"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "start"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "restart"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "cache"
+
+#: sql_help.c:1097
+#| msgid "new_table"
+msgid "new_target"
+msgstr "nový_cíl"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "conninfo"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "publication_name"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "set_publication_option"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "refresh_option"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "subscription_parameter"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "partition_name"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "partition_bound_spec"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "sequence_options"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "sequence_option"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr "omezení_tabulky_s_využitím_indexu"
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr "přepisovací_pravidlo"
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr "a partition_bound_spec je:"
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "partition_bound_expr"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr "numeric_literal"
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "a column_constraint je:"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "implicitní_výraz"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr "generation_expr"
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "parametry_indexu"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "odkazovaná_tabulka"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "odkazovaný_sloupec"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "referential_action"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "a omezení_tabulky je:"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr "exclude_element"
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "operátor"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "predikát"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr "a omezení_tabulky_s_využitím_indexu je:"
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "parametry_indexu v UNIQUE, PRIMARY KEY, a EXCLUDE omezeních jsou:"
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "exclude_element v EXCLUDE omezení je:"
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "třída_operátoru"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "volba_tablespace"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "typ_tokenu"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "jméno_slovníku"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "starý_slovník"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "nový_slovník"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "jméno_atributu"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "nové_jméno_atributu"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr "nová_enum_hodnota"
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr "neighbor_enum_value"
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr "existing_enum_value"
+
+#: sql_help.c:1537
+#| msgid "operator"
+msgid "property"
+msgstr "vlastnost"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "jméno_serveru"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "název_volby_pohledu"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr "hodnota_volby_pohledu"
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "table_and_columns"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "kde volba je jedno z:"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr "boolean"
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "a table_and_columns je:"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "transakční_mód"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "kde transakční_mód je jedno z:"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "argument"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "název_relace"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "jméno_domény"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "policy_name"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "jméno_pravidla"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr "text"
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "id_transakce"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "jméno_souboru"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "příkaz"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "podmínka"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "dotaz"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "jméno_formátu"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "oddělovací_znak"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "null_string"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "quote_character"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "escape_character"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "název_kódování"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr "access_method_type"
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "arg_data_type"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr "sfunc"
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr "datový_typ_stavu"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr "state_data_size"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr "ffunc"
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr "combinefunc"
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr "serialfunc"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr "deserialfunc"
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr "výchozí_podmínka"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr "msfunc"
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr "minvfunc"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr "mstate_data_type"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr "mstate_data_size"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr "mffunc"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr "minitial_condition"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "operátor_třídění"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "nebo stará syntaxe"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "základní_typ"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "locale"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "provider"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "verze"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr "existující_collation"
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "kódování_zdroje"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "kódování_cíle"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "šablona"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "kódování"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "omezení"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "kde omezení je:"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "událost"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr "filter_variable"
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "kde omezení_sloupce je:"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr "návratový_typ"
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr "typ_sloupce"
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "definice"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "obj_file"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "link_symbol"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "metoda"
+
+#: sql_help.c:2371
+#| msgid "storage_parameter"
+msgid "opclass_parameter"
+msgstr "opclass_parametr"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr "call_handler"
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr "inline_handler"
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "valfunction"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr "com_op"
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr "neg_op"
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr "family_name"
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "typ_uložení"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "kde událost může být jedno z:"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr "prvek_schématu"
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "typ_serveru"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "verze_serveru"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "fdw_jméno"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "statistics_name"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "statistics_kind"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "subscription_name"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "zdrojová_tabulka"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "like_volba"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr "a like_volba je:"
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "adresář"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "jméno_parseru"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "source_config"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "start_funkce"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "gettoken_funkce"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "end_function"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "lextypes_funkce"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "headline_funkce"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "init_funkce"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "lexize_funkce"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr "from_sql_function_name"
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr "to_sql_function_name"
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr "jméno_odkazované_tabulky"
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "transition_relation_name"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "argumenty"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr "popisek"
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr "subtyp"
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr "třída_operátorů_subtypu"
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr "kanonická_funkce"
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr "diff_funkce_subtypu"
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "vstupní_funkce"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "výstupní_funkce"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "receive_funkce"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "send_funkce"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr "type_modifier_input_function"
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr "type_modifier_output_function"
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "analyze_funkce"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr "interní_délka"
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "zarovnání"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "uložení"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr "like_typ"
+
+#: sql_help.c:3065
+msgid "category"
+msgstr "kategorie"
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr "preferovaný"
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "implicitní"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "prvek"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "oddělovač"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr "collatable"
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr "with_dotaz"
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "alias"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr "z_položky"
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "jméno_kurzoru"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "výstupní_výraz"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr "výstupní_jméno"
+
+#: sql_help.c:3190
+msgid "code"
+msgstr "kód"
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "parametr"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "příkaz"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "směr"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "kde směr může být prázdný nebo jedno z:"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "počet"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "sekvence"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "jméno_argumentu"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "typ_argumentu"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr "loid"
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "remote_schema"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "local_schema"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr "conflict_target"
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr "conflict_action"
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "where conflict_target can be one of:"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "index_column_name"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "index_expression"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr "index_predicate"
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "a conflict_action je jedno z:"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr "sub-SELECT"
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr "kanál"
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr "mód_zámku"
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "kde mód_zámku je jedno z:"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr "náklad"
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "stará_role"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "nová_role"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "jméno_savepointu"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr "grouping_element"
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "jméno_okna"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "definice_okna"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr "select"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr "kde z_položky může být jedno z:"
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "alias_sloupce"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "sampling_method"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr "seed"
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr "jméno_with_dotazu"
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "definice_sloupce"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr "typ_joinu"
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr "joinovací_podmínka"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr "joinovací_sloupec"
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr "a grouping_element může být jedno z:"
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr "a with_dotaz je:"
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "hodnoty"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "nová_tabulka"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr "časová_zóna"
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr "snapshot_id"
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr "sort_expression"
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "nestandardní ukončení (abort) současné transakce"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "změna definice agregátní funkce"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "změní definici collation"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "změna definice konverze"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "změní databázi"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "definuje výchozí přístupová práva"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "změní definici domény"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "změní definici event triggeru"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "změna definice extension"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "změní definici foreign-data wrapperu"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "změní definici foreign tabulky"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "změní definici funkce"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "změní jméno role nebo členství"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "změní definici indexu"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "změní definici procedurálního jazyka"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "změní definici large objektu"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "změní definici materializovaného pohledu"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "změní definici operátoru"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "změní definici třídy operátorů"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "změní definici rodiny operátorů"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "změní definici row level security politiky"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "změní definici procedury"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "změní definici publikace"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "změní databázovou roli"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "změní definici rutiny"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "změní definici pravidla"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "změní definici schématu"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "změní definici generátoru sekvencí"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "změní definici foreign serveru"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "změna definice rozšířené statistiky"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "změní definici subskripce"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "změní serverový konfigurační parametr"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "změní definici tabulky"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "změní definici tablespace"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "změní definici konfigurace fulltextového vyhledávání"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "změní definici slovníku pro fulltextové vyhledávání"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "změní definici parseru pro fulltextové vyhledávání"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "změní definici šablony pro fulltextové vyhledávání"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "změní definici triggeru"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "změní definici datového typu"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "změní definici mapování uživatelů"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "změní definici pohledu"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "shromáždí statistické informace o databázi"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "nastartuje nový transakční blok"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "spustí proceduru"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "vynutí checkpoint transakčního logu"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "uzavře kursor"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "přerovná obsah tabulky dle indexu"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "definuje nebo změní komentář objektu"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "potvrzení aktuální transakce"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "potvrzení aktuální transakce, která byla již dříve připravena pro dvoufázový commit"
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "kopíruje data mezi souborem a tabulkou"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "definuje novou přístupovou metodu"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "definuje novou agrefunkci"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "definuje nové přetypování"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "definuje novou collation"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "definuje novou konverzi kódování"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "vytvoří novou databázi"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "definuje novou atributovou doménu"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "definuje nový event trigger"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "instaluje rozšíření"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "definuje nový foreign-data wrapper"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "definuje nový foreign tabulku"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "definuje novou funkci"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "definuje novou databázovou roli"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "definuje nový index"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "definuje nový procedurální jazyk"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "definuje nový materializovaný pohled"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "definuje nový operátor"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "definuje novou třídu operátorů"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "definuje novou rodinu operátorů"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "definute novou row level security politiku pro tabulku"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "definuje novou proceduru"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "definuje novou publikaci"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "definuje nové přepisovací pravidlo (rule)"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "definuje nové schéma"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "definuje nový generátor sekvencí"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "definuje nový foreign server"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "definuje nové rozšířené statistiky"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "definuje novou subskripci"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "definuje novou tabulku"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "definuje novou tabulku dle výsledku dotazu"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "definuje nový tablespace"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "definuje novou konfiguraci fulltextového vyhledávání"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "definuje nový slovník pro fulltextové vyhledávání"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "definuje nový parser pro fulltextové vyhledávání"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "definuje novou šablonu pro fulltextové vyhledávání"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "definuje novou transformaci"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "definuje nový trigger"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "definuje nový datový typ"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "definuje nové mapování uživatele na vzdálený server"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "definuje nový pohled"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "dealokuje připravený dotaz (prepared statement)"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "definuje kursor"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "smaže řádky z takulky"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "zahodí stav session"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "spustí anonymní blok kódu"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "odstraní definici přístupové metody"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "odstraní agregační funkci"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "odstraní definici přetypování"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "odstraní collation"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "odstraní konverzi"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "odstraní databázi"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "odstraní doménu"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "odstraní event trigger"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "odstraní extension"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "odstraní foreign-data wrapper"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "odstraní foreign tabulku"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "odstraní funkci"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "odstraní databázovou roli"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "odstraní index"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "odstraní procedurální jazyk"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "odstraní materializovaný pohled"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "odstraní operátor"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "odstraní třídu operátorů"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "odstraní rodinu operátorů"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "odstraní objekty vlastněné databázovou rolí"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "odstraní row level security politiku z tabulky"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "odstraní proceduru"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "odstraní publikaci"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "odstraní rutinu"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "odstraní přepisovací pravidlo (rule)"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "odstraní schéma"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "odstraní sekvenci"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "odstraní deskriptor foreign serveru"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "odstraní rozšířené statistiky"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "odstraní subskripci"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "odstraní tabulku"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "odstraní tablespace"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "odstraní konfiguraci fulltextového vyhledávání"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "odstraní slovn?ik pro fulltextové vyhledávání"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "odstraní parser pro fulltextové vyhledávání"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "odstraní Šablonu fulltextového vyhledávání"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "odstraní transformaci"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "odstraní trigger"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "odstraní datový typ"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "odstraní mapování uživatele z foreign serveru"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "odstraní náhled"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "provede připravený dotaz (prepared statement)"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "ukáže prováděcí plán dotazu"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "načte řádky z výsledku dotazu pomocí kursoru"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "definuje přístupová práva"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "importuje definice tabulek z foreign serveru"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "přidá nové řádky do tabulky"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "naslouchá upozorněním"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "načte sdílenou knihovnu"
+
+#: sql_help.c:5725
+msgid "lock a named relation (table, etc)"
+msgstr "zamkne uvedenou relaci (tabulku, etc)"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "přemístí kursor"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "generuje upozornění"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "připraví a uloží dotaz pro provedení"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "přípraví aktuální transakci pro dvoufázoví commit"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "změní vlastníka databázových objektů vlastněných databázovou rolí"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "nahraď obsah materializovaného pohledu"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "znovuvytvoří indexy"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "odstraní dříve vytvořený savepoint"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "přenastaví parametr běhu na implicitní hodnotu"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "odstraní přístupová práva"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "zruší transakci, která byla připravena pro dvoufázový commit"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "vrátí se na savepoint"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "definuje nový savepoint uvnitř aktuální transakce"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "definuje nebo změní bezpečnostní štítek aplikovaný na objekt"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "vybere řádky z tabulky nebo náhledu"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "změní parametry běhu"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "nastaví mód kontroly omezení (constraints) pro aktuální transakci"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "nastaví uživatelský identifikátor aktuální session"
+
+#: sql_help.c:5851
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "nastaví uživatelský identifikátor session a identifikátor aktuálníhouživatele pro aktuální session"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "nastaví charakteristiku pro aktualní trasakci"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "zobrazí hodnoty run-time parametrů"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "zruší obsah tabulky nebo skupiny tabulek"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "ukončí naslouchání připomínkám"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "aktualizuje řádky tabulky"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "provede úklid a případně analýzu databáze"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "spočítá množinu řádek"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 může být použito pouze pro neinteraktivní módy"
+
+#: startup.c:299
+#, c-format
+msgid "could not connect to server: %s"
+msgstr "nelze se připojit k serveru: %s"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "nelze otevřít soubor \"%s\": %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Pro získání nápovědy napište \"help\".\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "nelze nastavit parametr zobrazení \"%s\""
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Zkuste \"%s --help\" pro více informací.\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "varování: nadbytečný parametr příkazové řádky \"%s\" ignorován"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "nelze najít vlastní spustitelný soubor"
+
+#: tab-complete.c:4640
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"tab completion dotaz selhal: %s\n"
+"Dotaz byl:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "nerozpoznaná hodnota \"%s\" pro \"%s\": očekáván Boolean výraz"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "neplatná hodnota \"%s\" pro \"%s\": očekáváno celé číslo"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "neplatný název proměnné: \"%s\""
+
+#: variables.c:393
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"nerozpoznaná hodnota \"%s\" pro \"%s\"\n"
+"Možné hodnoty jsou: %s."
+
+#~ msgid "could not read symbolic link \"%s\""
+#~ msgstr "nelze číst symbolický link \"%s\""
+
+#~ msgid "child process was terminated by signal %s"
+#~ msgstr "potomek byl ukončen signálem %s"
+
+#~ msgid "Invalid command \\%s. Try \\? for help.\n"
+#~ msgstr "Neplatný příkaz \\%s. Použijte \\? pro nápovědu.\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
+
+#~ msgid "Procedure"
+#~ msgstr "Procedura"
+
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid "unterminated quoted string\n"
+#~ msgstr "neukončený řetězec v uvozovkách\n"
+
+#~ msgid "string_literal"
+#~ msgstr "string_literal"
+
+#~ msgid "%s: could not open log file \"%s\": %s\n"
+#~ msgstr "%s: nelze otevřít logovací soubor \"%s\": %s\n"
+
+#~ msgid "\\%s: error\n"
+#~ msgstr "\\%s: chyba\n"
+
+#~ msgid "\\copy: %s"
+#~ msgstr "\\copy: %s"
+
+#~ msgid "\\copy: unexpected response (%d)\n"
+#~ msgstr "\\copy: neočekávaná odezva (%d)\n"
+
+#~ msgid "data type"
+#~ msgstr "datový typ"
+
+#~ msgid " on host \"%s\""
+#~ msgstr " na počítač \"%s\""
+
+#~ msgid " at port \"%s\""
+#~ msgstr " na port \"%s\""
+
+#~ msgid " as user \"%s\""
+#~ msgstr " jako uživatel \"%s\""
+
+#~ msgid "define a new constraint trigger"
+#~ msgstr "defunuje nový constraint trigger"
+
+#~ msgid " \"%s\" IN %s %s"
+#~ msgstr " \"%s\" IN %s %s"
+
+#~ msgid "ABORT [ WORK | TRANSACTION ]"
+#~ msgstr "ABORT [ WORK | TRANSACTION ]"
+
+#~ msgid "contains support for command-line editing"
+#~ msgstr "obsahuje podporu pro editaci příkazové řádky "
+
+#~ msgid "tablespace"
+#~ msgstr "tablespace"
+
+#~ msgid "new_column"
+#~ msgstr "nový_sloupec"
+
+#~ msgid "column"
+#~ msgstr "sloupec"
+
+#~ msgid " \\l[+] list all databases\n"
+#~ msgstr " \\l[+] seznam databází\n"
+
+#~ msgid "%s: -1 is incompatible with -c and -l\n"
+#~ msgstr "%s: -1 je nekompatibilní s -c a -l\n"
+
+#~ msgid "unrecognized Boolean value; assuming \"on\"\n"
+#~ msgstr "nerozpoznaná boolean hodnota; předpokládám \"on\".\n"
+
+#~ msgid "%s: could not set variable \"%s\"\n"
+#~ msgstr "%s: nelze nastavit proměnnou \"%s\"\n"
+
+#~ msgid "attribute"
+#~ msgstr "atribut"
+
+#~ msgid "input_data_type"
+#~ msgstr "vstupní_datový_typ"
+
+#~ msgid "agg_type"
+#~ msgstr "typ_agregace"
+
+#~ msgid "agg_name"
+#~ msgstr "jméno_agregace"
+
+#~ msgid "(No rows)\n"
+#~ msgstr "(Žádné řádky)\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help ukáže tuto nápovědu a skončí\n"
+
+#~ msgid "could not get current user name: %s\n"
+#~ msgstr "nelze získat aktuální uživatelské jméno: %s\n"
+
+#~ msgid "Object Description"
+#~ msgstr "Popis objektu"
+
+#~ msgid "Modifier"
+#~ msgstr "Modifikátor"
+
+#~ msgid "No relations found.\n"
+#~ msgstr "Žádné relace nenalezeny.\n"
+
+#~ msgid "No matching relations found.\n"
+#~ msgstr "Odpovídající relace nebyla nalezena.\n"
+
+#~ msgid "No settings found.\n"
+#~ msgstr "Žádné nastavení nenalezeno.\n"
+
+#~ msgid "No matching settings found.\n"
+#~ msgstr "Odpovídající relace nebyla nalezena.\n"
+
+#~ msgid "No per-database role settings support in this server version.\n"
+#~ msgstr "Tato verze serveru nepodporuje nastavení rolí dle databáze.\n"
+
+#~ msgid "default %s"
+#~ msgstr "implicitně %s"
+
+#~ msgid "not null"
+#~ msgstr "not null"
+
+#~ msgid "collate %s"
+#~ msgstr "collate %s"
+
+#~ msgid "Value"
+#~ msgstr "Hodnota"
+
+#~ msgid "Modifiers"
+#~ msgstr "Modifikátory"
+
+#~ msgid "normal"
+#~ msgstr "normal"
+
+#~ msgid "could not set variable \"%s\"\n"
+#~ msgstr "nelze nastavit proměnnou \"%s\"\n"
+
+#~ msgid "Watch every %lds\t%s"
+#~ msgstr "Zkontroluj každých %lds\t%s"
+
+#~ msgid "Showing only tuples."
+#~ msgstr "Zobrazovány jsou pouze záznamy."
+
+#~ msgid "Showing locale-adjusted numeric output."
+#~ msgstr "Zobrazí číselný výstup dle národního nastavení."
+
+#~ msgid "SSL connection (unknown cipher)\n"
+#~ msgstr "SSL spojení (neznámá šifra)\n"
+
+#~ msgid "+ opt(%d) = |%s|\n"
+#~ msgstr "+ opt(%d) = |%s|\n"
+
+#~ msgid "\\%s: error while setting variable\n"
+#~ msgstr "\\%s: chyba při nastavování proměnné\n"
+
+#~ msgid "Password encryption failed.\n"
+#~ msgstr "Zašifrování hesla selhalo.\n"
+
+#~ msgid "lock a table"
+#~ msgstr "uzamkne tabulku"
+
+#~ msgid "from_list"
+#~ msgstr "from_seznam"
+
+#~ msgid "using_list"
+#~ msgstr "using_seznam"
+
+#~ msgid "old_version"
+#~ msgstr "stará_verze"
+
+#~ msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n"
+#~ msgstr " \\g [SOUBOR] nebo ; pošle SQL dotaz na server (a zapíše výsledek do souboru nebo |roury)\n"
+
+#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr "Chyby posílejte na adresu <pgsql-bugs@postgresql.org>.\n"
diff --git a/src/bin/psql/po/de.po b/src/bin/psql/po/de.po
new file mode 100644
index 0000000..495d284
--- /dev/null
+++ b/src/bin/psql/po/de.po
@@ -0,0 +1,6427 @@
+# German message translation file for psql
+# Peter Eisentraut <peter@eisentraut.org>, 2001 - 2021.
+#
+# Use these quotes: »%s«
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 13\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-07-22 03:56+0000\n"
+"PO-Revision-Date: 2021-07-22 08:42+0200\n"
+"Last-Translator: Peter Eisentraut <peter@eisentraut.org>\n"
+"Language-Team: German <pgsql-translators@postgresql.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "Fatal: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "Fehler: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "Warnung: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "konnte aktuelles Verzeichnis nicht ermitteln: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "ungültige Programmdatei »%s«"
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "konnte Programmdatei »%s« nicht lesen"
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "konnte kein »%s« zum Ausführen finden"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "konnte symbolische Verknüpfung »%s« nicht lesen: %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "pclose fehlgeschlagen: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1256 command.c:3193 command.c:3242 command.c:3359 input.c:227
+#: mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "Speicher aufgebraucht"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "Speicher aufgebraucht\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "kann NULL-Zeiger nicht kopieren (interner Fehler)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "konnte effektive Benutzer-ID %ld nicht nachschlagen: %s"
+
+#: ../../common/username.c:45 command.c:560
+msgid "user does not exist"
+msgstr "Benutzer existiert nicht"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "Fehler beim Nachschlagen des Benutzernamens: Fehlercode %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "Befehl ist nicht ausführbar"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "Befehl nicht gefunden"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "Kindprozess hat mit Code %d beendet"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "Kindprozess wurde durch Ausnahme 0x%X beendet"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "Kindprozess wurde von Signal %d beendet: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "Kindprozess hat mit unbekanntem Status %d beendet"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "Abbruchsanforderung gesendet\n"
+
+#: ../../fe_utils/cancel.c:165 ../../fe_utils/cancel.c:210
+msgid "Could not send cancel request: "
+msgstr "Konnte Abbruchsanforderung nicht senden: "
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu Zeile)"
+msgstr[1] "(%lu Zeilen)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "Unterbrochen\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "Kann keinen weiteren Spaltenkopf zur Tabelle hinzufügen: Spaltenzahl %d überschritten.\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "Cann keine weitere Zelle zur Tabelle hinzufügen: Zellengesamtzahl %d überschritten.\n"
+
+#: ../../fe_utils/print.c:3417
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "ungültiges Ausgabeformat (interner Fehler): %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "rekursive Auswertung der Variable »%s« wird ausgelassen"
+
+#: command.c:225
+#, c-format
+msgid "invalid command \\%s"
+msgstr "ungültige Anweisung \\%s"
+
+#: command.c:227
+#, c-format
+msgid "Try \\? for help."
+msgstr "Versuchen Sie \\? für Hilfe."
+
+#: command.c:245
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: überflüssiges Argument »%s« ignoriert"
+
+#: command.c:297
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "Befehl \\%s ignoriert; verwenden Sie \\endif oder Strg-C um den aktuellen \\if-Block zu beenden"
+
+#: command.c:558
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "konnte Home-Verzeichnis für Benutzer-ID %ld nicht ermitteln: %s"
+
+#: command.c:576
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: konnte nicht in das Verzeichnis »%s« wechseln: %m"
+
+#: command.c:601
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "Sie sind gegenwärtig nicht mit einer Datenbank verbunden.\n"
+
+#: command.c:614
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Sie sind verbunden mit der Datenbank »%s« als Benutzer »%s« auf Adresse »%s« auf Port »%s«.\n"
+
+#: command.c:617
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Sie sind verbunden mit der Datenbank »%s« als Benutzer »%s« via Socket in »%s« auf Port »%s«.\n"
+
+#: command.c:623
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Sie sind verbunden mit der Datenbank »%s« als Benutzer »%s« auf Host »%s« (Adresse »%s«) auf Port »%s«.\n"
+
+#: command.c:626
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Sie sind verbunden mit der Datenbank »%s« als Benutzer »%s« auf Host »%s« auf Port »%s«.\n"
+
+#: command.c:966 command.c:1062 command.c:2551
+#, c-format
+msgid "no query buffer"
+msgstr "kein Anfragepuffer"
+
+#: command.c:999 command.c:5211
+#, c-format
+msgid "invalid line number: %s"
+msgstr "ungültige Zeilennummer: %s"
+
+#: command.c:1053
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "Der Server (Version %s) unterstützt das Bearbeiten des Funktionsquelltextes nicht."
+
+#: command.c:1056
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "Der Server (Version %s) unterstützt das Bearbeiten von Sichtdefinitionen nicht."
+
+#: command.c:1138
+msgid "No changes"
+msgstr "keine Änderungen"
+
+#: command.c:1217
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: ungültiger Kodierungsname oder Umwandlungsprozedur nicht gefunden"
+
+#: command.c:1252 command.c:1993 command.c:3189 command.c:3381 command.c:5313
+#: common.c:176 common.c:225 common.c:390 common.c:1246 common.c:1274
+#: common.c:1383 common.c:1490 common.c:1528 copy.c:488 copy.c:707 help.c:62
+#: large_obj.c:157 large_obj.c:192 large_obj.c:254 startup.c:299
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1259
+msgid "There is no previous error."
+msgstr "Es gibt keinen vorangegangenen Fehler."
+
+#: command.c:1372
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: rechte Klammer fehlt"
+
+#: command.c:1549 command.c:1854 command.c:1868 command.c:1885 command.c:2045
+#: command.c:2282 command.c:2518 command.c:2558
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: notwendiges Argument fehlt"
+
+#: command.c:1680
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: kann nicht nach \\else kommen"
+
+#: command.c:1685
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: kein passendes \\if"
+
+#: command.c:1749
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: kann nicht nach \\else kommen"
+
+#: command.c:1754
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: kein passendes \\if"
+
+#: command.c:1794
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: kein passendes \\if"
+
+#: command.c:1949
+msgid "Query buffer is empty."
+msgstr "Anfragepuffer ist leer."
+
+#: command.c:1971
+msgid "Enter new password: "
+msgstr "Neues Passwort eingeben: "
+
+#: command.c:1972
+msgid "Enter it again: "
+msgstr "Geben Sie es noch einmal ein: "
+
+#: command.c:1976
+#, c-format
+msgid "Passwords didn't match."
+msgstr "Passwörter stimmten nicht überein."
+
+#: command.c:2075
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: konnte Wert für Variable nicht lesen"
+
+#: command.c:2178
+msgid "Query buffer reset (cleared)."
+msgstr "Anfragepuffer wurde gelöscht."
+
+#: command.c:2200
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Befehlsgeschichte in Datei »%s« geschrieben.\n"
+
+#: command.c:2287
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: Name der Umgebungsvariable darf kein »=« enthalten"
+
+#: command.c:2348
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "Der Server (Version %s) unterstützt das Anzeigen des Funktionsquelltextes nicht."
+
+#: command.c:2351
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "Der Server (Version %s) unterstützt das Anzeigen von Sichtdefinitionen nicht."
+
+#: command.c:2358
+#, c-format
+msgid "function name is required"
+msgstr "Funktionsname wird benötigt"
+
+#: command.c:2360
+#, c-format
+msgid "view name is required"
+msgstr "Sichtname wird benötigt"
+
+#: command.c:2490
+msgid "Timing is on."
+msgstr "Zeitmessung ist an."
+
+#: command.c:2492
+msgid "Timing is off."
+msgstr "Zeitmessung ist aus."
+
+#: command.c:2577 command.c:2605 command.c:3790 command.c:3793 command.c:3796
+#: command.c:3802 command.c:3804 command.c:3830 command.c:3840 command.c:3852
+#: command.c:3866 command.c:3883 command.c:3941 common.c:72 copy.c:331
+#: copy.c:403 psqlscanslash.l:786 psqlscanslash.l:797 psqlscanslash.l:807
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2989 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "Passwort: "
+
+#: command.c:2994 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "Passwort für Benutzer %s: "
+
+#: command.c:3048
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "Alle Verbindungsparameter müssen angegeben werden, weil keine Datenbankverbindung besteht"
+
+#: command.c:3387
+#, c-format
+msgid "Previous connection kept"
+msgstr "Vorherige Verbindung wurde behalten"
+
+#: command.c:3393
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3440
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« auf Adresse »%s« auf Port »%s«.\n"
+
+#: command.c:3443
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« via Socket in »%s« auf Port »%s«.\n"
+
+#: command.c:3449
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« auf Host »%s« (Adresse »%s«) auf Port »%s«.\n"
+
+#: command.c:3452
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« auf Host »%s« auf Port »%s«.\n"
+
+#: command.c:3457
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s«.\n"
+
+#: command.c:3490
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, Server %s)\n"
+
+#: command.c:3498
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"WARNUNG: %s-Hauptversion %s, Server-Hauptversion %s.\n"
+" Einige Features von psql werden eventuell nicht funktionieren.\n"
+
+#: command.c:3537
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL-Verbindung (Protokoll: %s, Verschlüsselungsmethode: %s, Bits: %s, Komprimierung: %s)\n"
+
+#: command.c:3538 command.c:3539 command.c:3540
+msgid "unknown"
+msgstr "unbekannt"
+
+#: command.c:3541 help.c:45
+msgid "off"
+msgstr "aus"
+
+#: command.c:3541 help.c:45
+msgid "on"
+msgstr "an"
+
+#: command.c:3555
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "GSSAPI-verschlüsselte Verbindung\n"
+
+#: command.c:3575
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"Warnung: Konsolencodeseite (%u) unterscheidet sich von der Windows-\n"
+" Codeseite (%u). 8-Bit-Zeichen funktionieren möglicherweise nicht\n"
+" richtig. Einzelheiten finden Sie auf der psql-Handbuchseite unter\n"
+" »Notes for Windows users«.\n"
+
+#: command.c:3679
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "Umgebungsvariable PSQL_EDITOR_LINENUMBER_ARG muss gesetzt werden, um eine Zeilennummer angeben zu können"
+
+#: command.c:3708
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "konnte Editor »%s« nicht starten"
+
+#: command.c:3710
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "konnte /bin/sh nicht starten"
+
+#: command.c:3747
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "konnte temporäres Verzeichnis nicht finden: %s"
+
+#: command.c:3774
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "konnte temporäre Datei »%s« nicht öffnen: %m"
+
+#: command.c:4100
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: Abkürzung »%s« ist nicht eindeutig, passt auf »%s« und »%s«"
+
+#: command.c:4120
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: zulässige Formate sind aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:4139
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: zulässige Linienstile sind ascii, old-ascii, unicode"
+
+#: command.c:4154
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: zulässige Unicode-Rahmnenlinienstile sind single, double"
+
+#: command.c:4169
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: zulässige Unicode-Spaltenlinienstile sind single, double"
+
+#: command.c:4184
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: zulässige Unicode-Kopflinienstile sind single, double"
+
+#: command.c:4227
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep muss ein einzelnes Ein-Byte-Zeichen sein"
+
+#: command.c:4232
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldsep kann nicht doppeltes Anführungszeichen, Newline oder Carriage Return sein"
+
+#: command.c:4369 command.c:4557
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: unbekannte Option: %s"
+
+#: command.c:4389
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Rahmenstil ist %d.\n"
+
+#: command.c:4395
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "Zielbreite ist nicht gesetzt.\n"
+
+#: command.c:4397
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "Zielbreite ist %d.\n"
+
+#: command.c:4404
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Erweiterte Anzeige ist an.\n"
+
+#: command.c:4406
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "Erweiterte Anzeige wird automatisch verwendet.\n"
+
+#: command.c:4408
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Erweiterte Anzeige ist aus.\n"
+
+#: command.c:4414
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "Feldtrennzeichen für CSV ist »%s«.\n"
+
+#: command.c:4422 command.c:4430
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Feldtrennzeichen ist ein Null-Byte.\n"
+
+#: command.c:4424
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Feldtrennzeichen ist »%s«.\n"
+
+#: command.c:4437
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Standardfußzeile ist an.\n"
+
+#: command.c:4439
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Standardfußzeile ist aus.\n"
+
+#: command.c:4445
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Ausgabeformat ist »%s«.\n"
+
+#: command.c:4451
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Linienstil ist %s.\n"
+
+#: command.c:4458
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null-Anzeige ist »%s«.\n"
+
+#: command.c:4466
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "Lokalisiertes Format für numerische Daten ist an.\n"
+
+#: command.c:4468
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "Lokalisiertes Format für numerische Daten ist aus.\n"
+
+#: command.c:4475
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Pager wird für lange Ausgaben verwendet.\n"
+
+#: command.c:4477
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Pager wird immer verwendet.\n"
+
+#: command.c:4479
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "Pager-Verwendung ist aus.\n"
+
+#: command.c:4485
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "Pager wird nicht für weniger als %d Zeile verwendet werden.\n"
+msgstr[1] "Pager wird nicht für weniger als %d Zeilen verwendet werden.\n"
+
+#: command.c:4495 command.c:4505
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Satztrennzeichen ist ein Null-Byte.\n"
+
+#: command.c:4497
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Satztrennzeichen ist <newline>.\n"
+
+#: command.c:4499
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Satztrennzeichen ist »%s«.\n"
+
+#: command.c:4512
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Tabellenattribute sind »%s«.\n"
+
+#: command.c:4515
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Tabellenattribute sind nicht gesetzt.\n"
+
+#: command.c:4522
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Titel ist »%s«.\n"
+
+#: command.c:4524
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Titel ist nicht gesetzt.\n"
+
+#: command.c:4531
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "Nur Datenzeilen ist an.\n"
+
+#: command.c:4533
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "Nur Datenzeilen ist aus.\n"
+
+#: command.c:4539
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Unicode-Rahmenlinienstil ist »%s«.\n"
+
+#: command.c:4545
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Unicode-Spaltenlinienstil ist »%s«.\n"
+
+#: command.c:4551
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Unicode-Kopflinienstil ist »%s«.\n"
+
+#: command.c:4784
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: fehlgeschlagen"
+
+#: command.c:4809 common.c:650
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch kann nicht mit einer leeren Anfrage verwendet werden"
+
+#: command.c:4850
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (alle %gs)\n"
+
+#: command.c:4853
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (alle %gs)\n"
+
+#: command.c:4907 command.c:4914 common.c:550 common.c:557 common.c:1229
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"******** ANFRAGE *********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:5106
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "»%s.%s« ist keine Sicht"
+
+#: command.c:5122
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "konnte reloptions-Array nicht interpretieren"
+
+#: common.c:161
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "Escape kann nicht ohne aktive Verbindung ausgeführt werden"
+
+#: common.c:202
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "Argument des Shell-Befehls enthält Newline oder Carriage Return: »%s«"
+
+#: common.c:306
+#, c-format
+msgid "connection to server was lost"
+msgstr "Verbindung zum Server wurde verloren"
+
+#: common.c:310
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "Die Verbindung zum Server wurde verloren. Versuche Reset: "
+
+#: common.c:315
+#, c-format
+msgid "Failed.\n"
+msgstr "Fehlgeschlagen.\n"
+
+#: common.c:328
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Erfolgreich.\n"
+
+#: common.c:380 common.c:947 common.c:1164
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "unerwarteter PQresultStatus: %d"
+
+#: common.c:489
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Zeit: %.3f ms\n"
+
+#: common.c:504
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Zeit: %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:513
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Zeit: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:520
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Zeit: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:544 common.c:602 common.c:1200
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "Sie sind gegenwärtig nicht mit einer Datenbank verbunden."
+
+#: common.c:657
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch kann nicht mit COPY verwendet werden"
+
+#: common.c:662
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "unerwarteter Ergebnisstatus für \\watch"
+
+#: common.c:692
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "Asynchrone Benachrichtigung »%s« mit Daten »%s« vom Serverprozess mit PID %d empfangen.\n"
+
+#: common.c:695
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "Asynchrone Benachrichtigung »%s« vom Serverprozess mit PID %d empfangen.\n"
+
+#: common.c:728 common.c:745
+#, c-format
+msgid "could not print result table: %m"
+msgstr "konnte Ergebnistabelle nicht ausgeben: %m"
+
+#: common.c:766
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "keine Zeilen für \\gset zurückgegeben"
+
+#: common.c:771
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "mehr als eine Zeile für \\gset zurückgegeben"
+
+#: common.c:789
+#, c-format
+msgid "attempt to \\gset into specially treated variable \"%s\" ignored"
+msgstr "Versuch von \\gset in besonders behandelte Variable »%s« ignoriert"
+
+#: common.c:1209
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(Einzelschrittmodus: Anfrage bestätigen)*************************************\n"
+"%s\n"
+"***(Drücken Sie die Eingabetaste um fortzufahren oder »x« um abzubrechen)*******\n"
+
+#: common.c:1264
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "Der Server (Version %s) unterstützt keine Sicherungspunkte für ON_ERROR_ROLLBACK."
+
+#: common.c:1327
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "ANWEISUNG: %s"
+
+#: common.c:1371
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "unerwarteter Transaktionsstatus (%d)"
+
+#: common.c:1512 describe.c:2001
+msgid "Column"
+msgstr "Spalte"
+
+#: common.c:1513 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3733 describe.c:3943
+#: describe.c:4176 describe.c:5382
+msgid "Type"
+msgstr "Typ"
+
+#: common.c:1562
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "Der Befehl hat kein Ergebnis oder das Ergebnis hat keine Spalten.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy: benötigt Argumente"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: Parse-Fehler bei »%s«"
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: Parse-Fehler am Zeilenende"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "konnte Befehl »%s« nicht ausführen: %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "konnte »stat« für Datei »%s« nicht ausführen: %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: ein Verzeichnis kann nicht kopiert werden"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "konnte Pipe zu externem Programm nicht schließen: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "konnte COPY-Daten nicht schreiben: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "Datentransfer mit COPY fehlgeschlagen: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "vom Benutzer abgebrochen"
+
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Geben Sie die zu kopierenden Daten ein, gefolgt von einem Zeilenende.\n"
+"Beenden Sie mit einem Backslash und einem Punkt alleine auf einer Zeile, oder einem EOF-Signal."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "abgebrochen wegen Lesenfehlers"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "versuche, den COPY-Modus zu verlassen"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: Anweisung hat keine Ergebnismenge zurückgegeben"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: Anfrage muss mindestens drei Spalten zurückgeben"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: die vertikalen und horizontalen Kopffelder müssen verschiedene Spalten sein"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: Datenspalte muss angegeben werden, wenn die Anfrage mehr als drei Spalten zurückgibt"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: maximale Anzahl Spalten (%d) überschritten"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: Anfrageergebnis enthält mehrfache Datenwerte für Zeile »%s«, Spalte »%s«"
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: Spaltennummer %d ist außerhalb des zulässigen Bereichs 1..%d"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: zweideutiger Spaltenname: »%s«"
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: Spaltenname nicht gefunden: »%s«"
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3722 describe.c:3930
+#: describe.c:4174 describe.c:4265 describe.c:4532 describe.c:4692
+#: describe.c:4933 describe.c:5008 describe.c:5019 describe.c:5081
+#: describe.c:5506 describe.c:5589
+msgid "Schema"
+msgstr "Schema"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3723 describe.c:3931 describe.c:4097 describe.c:4175
+#: describe.c:4266 describe.c:4345 describe.c:4533 describe.c:4617
+#: describe.c:4693 describe.c:4934 describe.c:5009 describe.c:5020
+#: describe.c:5082 describe.c:5279 describe.c:5363 describe.c:5587
+#: describe.c:5759 describe.c:5999
+msgid "Name"
+msgstr "Name"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "Ergebnisdatentyp"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "Argumentdatentypen"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3510 describe.c:3783 describe.c:3977 describe.c:4128
+#: describe.c:4202 describe.c:4275 describe.c:4358 describe.c:4441
+#: describe.c:4560 describe.c:4626 describe.c:4694 describe.c:4835
+#: describe.c:4877 describe.c:4950 describe.c:5012 describe.c:5021
+#: describe.c:5083 describe.c:5305 describe.c:5385 describe.c:5520
+#: describe.c:5590 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Beschreibung"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Liste der Aggregatfunktionen"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "Der Server (Version %s) unterstützt keine Zugriffsmethoden."
+
+#: describe.c:175
+msgid "Index"
+msgstr "Index"
+
+#: describe.c:176 describe.c:3741 describe.c:3956 describe.c:5507
+msgid "Table"
+msgstr "Tabelle"
+
+#: describe.c:184 describe.c:5284
+msgid "Handler"
+msgstr "Handler"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "Liste der Zugriffsmethoden"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "Der Server (Version %s) unterstützt keine Tablespaces."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3734 describe.c:3932 describe.c:4101
+#: describe.c:4347 describe.c:4618 describe.c:5280 describe.c:5364
+#: describe.c:5760 describe.c:5897 describe.c:6000 describe.c:6115
+#: describe.c:6194 large_obj.c:289
+msgid "Owner"
+msgstr "Eigentümer"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "Pfad"
+
+#: describe.c:263 describe.c:3327
+msgid "Options"
+msgstr "Optionen"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3775 describe.c:3779
+msgid "Size"
+msgstr "Größe"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "Liste der Tablespaces"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df akzeptiert nur [anptwS+] als Optionen"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df akzeptiert die Option »%c« nicht mit Serverversion %s"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "Agg"
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "Fenster"
+
+#: describe.c:391
+msgid "proc"
+msgstr "Proz"
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "Funk"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "Trigger"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "unveränderlich"
+
+#: describe.c:484
+msgid "stable"
+msgstr "stabil"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "volatil"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "Volatilität"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "beschränkt"
+
+#: describe.c:495
+msgid "safe"
+msgstr "sicher"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "unsicher"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "Parallel"
+
+#: describe.c:502
+msgid "definer"
+msgstr "definer"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "invoker"
+
+#: describe.c:504
+msgid "Security"
+msgstr "Sicherheit"
+
+#: describe.c:511
+msgid "Language"
+msgstr "Sprache"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "Quelltext"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "Liste der Funktionen"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "Interner Name"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "Elemente"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "Liste der Datentypen"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "Linker Typ"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "Rechter Typ"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "Ergebnistyp"
+
+#: describe.c:819 describe.c:4353 describe.c:4418 describe.c:4424
+#: describe.c:4834 describe.c:6366 describe.c:6370
+msgid "Function"
+msgstr "Funktion"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "Liste der Operatoren"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "Kodierung"
+
+#: describe.c:879 describe.c:4534
+msgid "Collate"
+msgstr "Sortierfolge"
+
+#: describe.c:880 describe.c:4535
+msgid "Ctype"
+msgstr "Zeichentyp"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "Tablespace"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "Liste der Datenbanken"
+
+#: describe.c:956 describe.c:1117 describe.c:3724
+msgid "table"
+msgstr "Tabelle"
+
+#: describe.c:957 describe.c:3725
+msgid "view"
+msgstr "Sicht"
+
+#: describe.c:958 describe.c:3726
+msgid "materialized view"
+msgstr "materialisierte Sicht"
+
+#: describe.c:959 describe.c:1119 describe.c:3728
+msgid "sequence"
+msgstr "Sequenz"
+
+#: describe.c:960 describe.c:3730
+msgid "foreign table"
+msgstr "Fremdtabelle"
+
+#: describe.c:961 describe.c:3731 describe.c:3941
+msgid "partitioned table"
+msgstr "partitionierte Tabelle"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "Spaltenprivilegien"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "Policys"
+
+#: describe.c:1070 describe.c:6056 describe.c:6060
+msgid "Access privileges"
+msgstr "Zugriffsprivilegien"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "Der Server (Version %s) unterstützt kein Ändern der Vorgabeprivilegien."
+
+#: describe.c:1121
+msgid "function"
+msgstr "Funktion"
+
+#: describe.c:1123
+msgid "type"
+msgstr "Typ"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "Schema"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "Vorgegebene Zugriffsprivilegien"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "Objekt"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "Tabellen-Constraint"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "Domänen-Constraint"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "Operatorklasse"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "Operatorfamilie"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "Rule"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "Objektbeschreibungen"
+
+#: describe.c:1402 describe.c:3847
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "Keine Relation namens »%s« gefunden"
+
+#: describe.c:1405 describe.c:3850
+#, c-format
+msgid "Did not find any relations."
+msgstr "Keine Relationen gefunden"
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "Keine Relation mit OID %s gefunden"
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "Start"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "Minimum"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "Maximum"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "Inkrement"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4269
+#: describe.c:4435 describe.c:4549 describe.c:4554 describe.c:6103
+msgid "yes"
+msgstr "ja"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4269
+#: describe.c:4432 describe.c:4549 describe.c:6104
+msgid "no"
+msgstr "nein"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "Zyklisch?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "Cache"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "Eigentümer: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Sequenz für Identitätsspalte: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Sequenz »%s.%s«"
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Ungeloggte Tabelle »%s.%s«"
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Tabelle »%s.%s«"
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Sicht »%s.%s«"
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Ungeloggte materialisierte Sicht »%s.%s«"
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Materialisierte Sicht »%s.%s«"
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Ungeloggter Index »%s.%s«"
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Index »%s.%s«"
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Ungeloggter partitionierter Index »%s.%s«"
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "Partitionierter Index »%s.%s«"
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Spezielle Relation »%s.%s«"
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "TOAST-Tabelle »%s.%s«"
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Zusammengesetzter Typ »%s.%s«"
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Fremdtabelle »%s.%s«"
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Ungeloggte partitionierte Tabelle »%s.%s«"
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "Partitionierte Tabelle »%s.%s«"
+
+#: describe.c:2005 describe.c:4182
+msgid "Collation"
+msgstr "Sortierfolge"
+
+#: describe.c:2006 describe.c:4189
+msgid "Nullable"
+msgstr "NULL erlaubt?"
+
+#: describe.c:2007 describe.c:4190
+msgid "Default"
+msgstr "Vorgabewert"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "Schlüssel?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "Definition"
+
+#: describe.c:2014 describe.c:5300 describe.c:5384 describe.c:5455
+#: describe.c:5519
+msgid "FDW options"
+msgstr "FDW-Optionen"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "Speicherung"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "Statistikziel"
+
+#: describe.c:2135
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Partition von: %s %s"
+
+#: describe.c:2147
+msgid "No partition constraint"
+msgstr "Kein Partitions-Constraint"
+
+#: describe.c:2149
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Partitions-Constraint: %s"
+
+#: describe.c:2173
+#, c-format
+msgid "Partition key: %s"
+msgstr "Partitionsschlüssel: %s"
+
+#: describe.c:2199
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "Gehört zu Tabelle: »%s.%s«"
+
+#: describe.c:2270
+msgid "primary key, "
+msgstr "Primärschlüssel, "
+
+#: describe.c:2272
+msgid "unique, "
+msgstr "eindeutig, "
+
+#: describe.c:2278
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "für Tabelle »%s.%s«"
+
+#: describe.c:2282
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", Prädikat (%s)"
+
+#: describe.c:2285
+msgid ", clustered"
+msgstr ", geclustert"
+
+#: describe.c:2288
+msgid ", invalid"
+msgstr ", ungültig"
+
+#: describe.c:2291
+msgid ", deferrable"
+msgstr ", DEFERRABLE"
+
+#: describe.c:2294
+msgid ", initially deferred"
+msgstr ", INITIALLY DEFERRED"
+
+#: describe.c:2297
+msgid ", replica identity"
+msgstr ", Replika-Identität"
+
+#: describe.c:2364
+msgid "Indexes:"
+msgstr "Indexe:"
+
+#: describe.c:2448
+msgid "Check constraints:"
+msgstr "Check-Constraints:"
+
+#: describe.c:2516
+msgid "Foreign-key constraints:"
+msgstr "Fremdschlüssel-Constraints:"
+
+#: describe.c:2579
+msgid "Referenced by:"
+msgstr "Fremdschlüsselverweise von:"
+
+#: describe.c:2629
+msgid "Policies:"
+msgstr "Policys:"
+
+#: describe.c:2632
+msgid "Policies (forced row security enabled):"
+msgstr "Policys (Sicherheit auf Zeilenebene erzwungen):"
+
+#: describe.c:2635
+msgid "Policies (row security enabled): (none)"
+msgstr "Policys (Sicherheit auf Zeilenebene eingeschaltet): (keine)"
+
+#: describe.c:2638
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Policys (Sicherheit auf Zeilenebene erzwungen): (keine)"
+
+#: describe.c:2641
+msgid "Policies (row security disabled):"
+msgstr "Policys (Sicherheit auf Zeilenebene ausgeschaltet):"
+
+#: describe.c:2709
+msgid "Statistics objects:"
+msgstr "Statistikobjekte:"
+
+#: describe.c:2823 describe.c:2927
+msgid "Rules:"
+msgstr "Regeln:"
+
+#: describe.c:2826
+msgid "Disabled rules:"
+msgstr "Abgeschaltete Regeln:"
+
+#: describe.c:2829
+msgid "Rules firing always:"
+msgstr "Regeln, die immer aktiv werden:"
+
+#: describe.c:2832
+msgid "Rules firing on replica only:"
+msgstr "Regeln, die nur im Replikat aktiv werden:"
+
+#: describe.c:2872
+msgid "Publications:"
+msgstr "Publikationen:"
+
+#: describe.c:2910
+msgid "View definition:"
+msgstr "Sichtdefinition:"
+
+#: describe.c:3057
+msgid "Triggers:"
+msgstr "Trigger:"
+
+#: describe.c:3061
+msgid "Disabled user triggers:"
+msgstr "Abgeschaltete Benutzer-Trigger:"
+
+#: describe.c:3063
+msgid "Disabled triggers:"
+msgstr "Abgeschaltete Trigger:"
+
+#: describe.c:3066
+msgid "Disabled internal triggers:"
+msgstr "Abgeschaltete interne Trigger:"
+
+#: describe.c:3069
+msgid "Triggers firing always:"
+msgstr "Trigger, die immer aktiv werden:"
+
+#: describe.c:3072
+msgid "Triggers firing on replica only:"
+msgstr "Trigger, die nur im Replikat aktiv werden:"
+
+#: describe.c:3144
+#, c-format
+msgid "Server: %s"
+msgstr "Server: %s"
+
+#: describe.c:3152
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "FDW-Optionen: (%s)"
+
+#: describe.c:3173
+msgid "Inherits"
+msgstr "Erbt von"
+
+#: describe.c:3233
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Anzahl Partitionen: %d"
+
+#: describe.c:3242
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Anzahl Partitionen: %d (Mit \\d+ alle anzeigen.)"
+
+#: describe.c:3244
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Anzahl Kindtabellen: %d (Mit \\d+ alle anzeigen.)"
+
+#: describe.c:3251
+msgid "Child tables"
+msgstr "Kindtabellen"
+
+#: describe.c:3251
+msgid "Partitions"
+msgstr "Partitionen"
+
+#: describe.c:3280
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Getypte Tabelle vom Typ: %s"
+
+#: describe.c:3296
+msgid "Replica Identity"
+msgstr "Replika-Identität"
+
+#: describe.c:3309
+msgid "Has OIDs: yes"
+msgstr "Hat OIDs: ja"
+
+#: describe.c:3318
+#, c-format
+msgid "Access method: %s"
+msgstr "Zugriffsmethode: %s"
+
+#: describe.c:3398
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Tablespace: »%s«"
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3410
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", Tablespace »%s«"
+
+#: describe.c:3503
+msgid "List of roles"
+msgstr "Liste der Rollen"
+
+#: describe.c:3505
+msgid "Role name"
+msgstr "Rollenname"
+
+#: describe.c:3506
+msgid "Attributes"
+msgstr "Attribute"
+
+#: describe.c:3507
+msgid "Member of"
+msgstr "Mitglied von"
+
+#: describe.c:3518
+msgid "Superuser"
+msgstr "Superuser"
+
+#: describe.c:3521
+msgid "No inheritance"
+msgstr "keine Vererbung"
+
+#: describe.c:3524
+msgid "Create role"
+msgstr "Rolle erzeugen"
+
+#: describe.c:3527
+msgid "Create DB"
+msgstr "DB erzeugen"
+
+#: describe.c:3530
+msgid "Cannot login"
+msgstr "kann nicht einloggen"
+
+#: describe.c:3534
+msgid "Replication"
+msgstr "Replikation"
+
+#: describe.c:3538
+msgid "Bypass RLS"
+msgstr "Bypass RLS"
+
+#: describe.c:3547
+msgid "No connections"
+msgstr "keine Verbindungen"
+
+#: describe.c:3549
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d Verbindung"
+msgstr[1] "%d Verbindungen"
+
+#: describe.c:3559
+msgid "Password valid until "
+msgstr "Passwort gültig bis "
+
+#: describe.c:3609
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "Der Server (Version %s) unterstützt keine Rolleneinstellungen pro Datenbank."
+
+#: describe.c:3622
+msgid "Role"
+msgstr "Rolle"
+
+#: describe.c:3623
+msgid "Database"
+msgstr "Datenbank"
+
+#: describe.c:3624
+msgid "Settings"
+msgstr "Einstellung"
+
+#: describe.c:3645
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "Keine Einstellungen für Rolle »%s« und Datenbank »%s« gefunden"
+
+#: describe.c:3648
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "Keine Einstellungen für Rolle »%s« gefunden"
+
+#: describe.c:3651
+#, c-format
+msgid "Did not find any settings."
+msgstr "Keine Einstellungen gefunden"
+
+#: describe.c:3656
+msgid "List of settings"
+msgstr "Liste der Einstellungen"
+
+#: describe.c:3727
+msgid "index"
+msgstr "Index"
+
+#: describe.c:3729
+msgid "special"
+msgstr "speziell"
+
+#: describe.c:3732 describe.c:3942
+msgid "partitioned index"
+msgstr "partitionierter Index"
+
+#: describe.c:3756
+msgid "permanent"
+msgstr "permanent"
+
+#: describe.c:3757
+msgid "temporary"
+msgstr "temporär"
+
+#: describe.c:3758
+msgid "unlogged"
+msgstr "ungeloggt"
+
+#: describe.c:3759
+msgid "Persistence"
+msgstr "Persistenz"
+
+#: describe.c:3855
+msgid "List of relations"
+msgstr "Liste der Relationen"
+
+#: describe.c:3903
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "Der Server (Version %s) unterstützt keine deklarative Tabellenpartitionierung."
+
+#: describe.c:3914
+msgid "List of partitioned indexes"
+msgstr "Liste partitionierter Indexe"
+
+#: describe.c:3916
+msgid "List of partitioned tables"
+msgstr "Liste partitionierte Tabellen"
+
+#: describe.c:3920
+msgid "List of partitioned relations"
+msgstr "Liste partitionierter Relationen"
+
+#: describe.c:3951
+msgid "Parent name"
+msgstr "Elternname"
+
+#: describe.c:3964
+msgid "Leaf partition size"
+msgstr "Größe Leaf-Partition"
+
+#: describe.c:3967 describe.c:3973
+msgid "Total size"
+msgstr "Gesamtgröße"
+
+#: describe.c:4105
+msgid "Trusted"
+msgstr "Vertraut"
+
+#: describe.c:4113
+msgid "Internal language"
+msgstr "Interne Sprache"
+
+#: describe.c:4114
+msgid "Call handler"
+msgstr "Call-Handler"
+
+#: describe.c:4115 describe.c:5287
+msgid "Validator"
+msgstr "Validator"
+
+#: describe.c:4118
+msgid "Inline handler"
+msgstr "Inline-Handler"
+
+#: describe.c:4146
+msgid "List of languages"
+msgstr "Liste der Sprachen"
+
+#: describe.c:4191
+msgid "Check"
+msgstr "Check"
+
+#: describe.c:4233
+msgid "List of domains"
+msgstr "Liste der Domänen"
+
+#: describe.c:4267
+msgid "Source"
+msgstr "Quelle"
+
+#: describe.c:4268
+msgid "Destination"
+msgstr "Ziel"
+
+#: describe.c:4270 describe.c:6105
+msgid "Default?"
+msgstr "Standard?"
+
+#: describe.c:4307
+msgid "List of conversions"
+msgstr "Liste der Konversionen"
+
+#: describe.c:4346
+msgid "Event"
+msgstr "Ereignis"
+
+#: describe.c:4348
+msgid "enabled"
+msgstr "eingeschaltet"
+
+#: describe.c:4349
+msgid "replica"
+msgstr "Replika"
+
+#: describe.c:4350
+msgid "always"
+msgstr "immer"
+
+#: describe.c:4351
+msgid "disabled"
+msgstr "ausgeschaltet"
+
+#: describe.c:4352 describe.c:6001
+msgid "Enabled"
+msgstr "Eingeschaltet"
+
+#: describe.c:4354
+msgid "Tags"
+msgstr "Tags"
+
+#: describe.c:4373
+msgid "List of event triggers"
+msgstr "Liste der Ereignistrigger"
+
+#: describe.c:4402
+msgid "Source type"
+msgstr "Quelltyp"
+
+#: describe.c:4403
+msgid "Target type"
+msgstr "Zieltyp"
+
+#: describe.c:4434
+msgid "in assignment"
+msgstr "in Zuweisung"
+
+#: describe.c:4436
+msgid "Implicit?"
+msgstr "Implizit?"
+
+#: describe.c:4491
+msgid "List of casts"
+msgstr "Liste der Typumwandlungen"
+
+#: describe.c:4519
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "Der Server (Version %s) unterstützt keine Sortierfolgen."
+
+#: describe.c:4540 describe.c:4544
+msgid "Provider"
+msgstr "Provider"
+
+#: describe.c:4550 describe.c:4555
+msgid "Deterministic?"
+msgstr "Deterministisch?"
+
+#: describe.c:4590
+msgid "List of collations"
+msgstr "Liste der Sortierfolgen"
+
+#: describe.c:4649
+msgid "List of schemas"
+msgstr "Liste der Schemas"
+
+#: describe.c:4674 describe.c:4921 describe.c:4992 describe.c:5063
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "Der Server (Version %s) unterstützt keine Volltextsuche."
+
+#: describe.c:4709
+msgid "List of text search parsers"
+msgstr "Liste der Textsucheparser"
+
+#: describe.c:4754
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "Kein Textsucheparser namens »%s« gefunden"
+
+#: describe.c:4757
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "Keine Textsucheparser gefunden"
+
+#: describe.c:4832
+msgid "Start parse"
+msgstr "Parsen starten"
+
+#: describe.c:4833
+msgid "Method"
+msgstr "Methode"
+
+#: describe.c:4837
+msgid "Get next token"
+msgstr "Nächstes Token lesen"
+
+#: describe.c:4839
+msgid "End parse"
+msgstr "Parsen beenden"
+
+#: describe.c:4841
+msgid "Get headline"
+msgstr "Überschrift ermitteln"
+
+#: describe.c:4843
+msgid "Get token types"
+msgstr "Tokentypen ermitteln"
+
+#: describe.c:4854
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Textsucheparser »%s.%s«"
+
+#: describe.c:4857
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Textsucheparser »%s«"
+
+#: describe.c:4876
+msgid "Token name"
+msgstr "Tokenname"
+
+#: describe.c:4887
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Tokentypen für Parser »%s.%s«"
+
+#: describe.c:4890
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Tokentypen für Parser »%s«"
+
+#: describe.c:4944
+msgid "Template"
+msgstr "Vorlage"
+
+#: describe.c:4945
+msgid "Init options"
+msgstr "Initialisierungsoptionen"
+
+#: describe.c:4967
+msgid "List of text search dictionaries"
+msgstr "Liste der Textsuchewörterbücher"
+
+#: describe.c:5010
+msgid "Init"
+msgstr "Init"
+
+#: describe.c:5011
+msgid "Lexize"
+msgstr "Lexize"
+
+#: describe.c:5038
+msgid "List of text search templates"
+msgstr "Liste der Textsuchevorlagen"
+
+#: describe.c:5098
+msgid "List of text search configurations"
+msgstr "Liste der Textsuchekonfigurationen"
+
+#: describe.c:5144
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "Keine Textsuchekonfiguration namens »%s« gefunden"
+
+#: describe.c:5147
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "Keine Textsuchekonfigurationen gefunden"
+
+#: describe.c:5213
+msgid "Token"
+msgstr "Token"
+
+#: describe.c:5214
+msgid "Dictionaries"
+msgstr "Wörterbücher"
+
+#: describe.c:5225
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Textsuchekonfiguration »%s.%s«"
+
+#: describe.c:5228
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Textsuchekonfiguration »%s«"
+
+#: describe.c:5232
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Parser: »%s.%s«"
+
+#: describe.c:5235
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Parser: »%s«"
+
+#: describe.c:5269
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "Der Server (Version %s) unterstützt keine Fremddaten-Wrapper."
+
+#: describe.c:5327
+msgid "List of foreign-data wrappers"
+msgstr "Liste der Fremddaten-Wrapper"
+
+#: describe.c:5352
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "Der Server (Version %s) unterstützt keine Fremdserver."
+
+#: describe.c:5365
+msgid "Foreign-data wrapper"
+msgstr "Fremddaten-Wrapper"
+
+#: describe.c:5383 describe.c:5588
+msgid "Version"
+msgstr "Version"
+
+#: describe.c:5409
+msgid "List of foreign servers"
+msgstr "Liste der Fremdserver"
+
+#: describe.c:5434
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "Der Server (Version %s) unterstützt keine Benutzerabbildungen."
+
+#: describe.c:5444 describe.c:5508
+msgid "Server"
+msgstr "Server"
+
+#: describe.c:5445
+msgid "User name"
+msgstr "Benutzername"
+
+#: describe.c:5470
+msgid "List of user mappings"
+msgstr "Liste der Benutzerabbildungen"
+
+#: describe.c:5495
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "Der Server (Version %s) unterstützt keine Fremdtabellen."
+
+#: describe.c:5548
+msgid "List of foreign tables"
+msgstr "Liste der Fremdtabellen"
+
+#: describe.c:5573 describe.c:5630
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "Der Server (Version %s) unterstützt keine Erweiterungen."
+
+#: describe.c:5605
+msgid "List of installed extensions"
+msgstr "Liste der installierten Erweiterungen"
+
+#: describe.c:5658
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "Keine Erweiterung namens »%s« gefunden"
+
+#: describe.c:5661
+#, c-format
+msgid "Did not find any extensions."
+msgstr "Keine Erweiterungen gefunden"
+
+#: describe.c:5705
+msgid "Object description"
+msgstr "Objektbeschreibung"
+
+#: describe.c:5715
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Objekte in Erweiterung »%s«"
+
+#: describe.c:5744 describe.c:5820
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "Der Server (Version %s) unterstützt keine Publikationen."
+
+#: describe.c:5761 describe.c:5898
+msgid "All tables"
+msgstr "Alle Tabellen"
+
+#: describe.c:5762 describe.c:5899
+msgid "Inserts"
+msgstr "Inserts"
+
+#: describe.c:5763 describe.c:5900
+msgid "Updates"
+msgstr "Updates"
+
+#: describe.c:5764 describe.c:5901
+msgid "Deletes"
+msgstr "Deletes"
+
+#: describe.c:5768 describe.c:5903
+msgid "Truncates"
+msgstr "Truncates"
+
+#: describe.c:5772 describe.c:5905
+msgid "Via root"
+msgstr "Über Wurzel"
+
+#: describe.c:5789
+msgid "List of publications"
+msgstr "Liste der Publikationen"
+
+#: describe.c:5862
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "Keine Publikation namens »%s« gefunden"
+
+#: describe.c:5865
+#, c-format
+msgid "Did not find any publications."
+msgstr "Keine Publikationen gefunden"
+
+#: describe.c:5894
+#, c-format
+msgid "Publication %s"
+msgstr "Publikation %s"
+
+#: describe.c:5942
+msgid "Tables:"
+msgstr "Tabellen:"
+
+#: describe.c:5986
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "Der Server (Version %s) unterstützt keine Subskriptionen."
+
+#: describe.c:6002
+msgid "Publication"
+msgstr "Publikation"
+
+#: describe.c:6009
+msgid "Synchronous commit"
+msgstr "Synchroner Commit"
+
+#: describe.c:6010
+msgid "Conninfo"
+msgstr "Verbindungsinfo"
+
+#: describe.c:6032
+msgid "List of subscriptions"
+msgstr "Liste der Subskriptionen"
+
+#: describe.c:6099 describe.c:6188 describe.c:6274 describe.c:6357
+msgid "AM"
+msgstr "AM"
+
+#: describe.c:6100
+msgid "Input type"
+msgstr "Eingabetyp"
+
+#: describe.c:6101
+msgid "Storage type"
+msgstr "Storage-Typ"
+
+#: describe.c:6102
+msgid "Operator class"
+msgstr "Operatorklasse"
+
+#: describe.c:6114 describe.c:6189 describe.c:6275 describe.c:6358
+msgid "Operator family"
+msgstr "Operatorfamilie"
+
+#: describe.c:6147
+msgid "List of operator classes"
+msgstr "Liste der Operatorklassen"
+
+#: describe.c:6190
+msgid "Applicable types"
+msgstr "Passende Typen"
+
+#: describe.c:6229
+msgid "List of operator families"
+msgstr "Liste der Operatorfamilien"
+
+#: describe.c:6276
+msgid "Operator"
+msgstr "Operator"
+
+#: describe.c:6277
+msgid "Strategy"
+msgstr "Strategie"
+
+#: describe.c:6278
+msgid "ordering"
+msgstr "Sortieren"
+
+#: describe.c:6279
+msgid "search"
+msgstr "Suchen"
+
+#: describe.c:6280
+msgid "Purpose"
+msgstr "Zweck"
+
+#: describe.c:6285
+msgid "Sort opfamily"
+msgstr "Sortier-Opfamilie"
+
+#: describe.c:6316
+msgid "List of operators of operator families"
+msgstr "Liste der Operatoren in Operatorfamilien"
+
+#: describe.c:6359
+msgid "Registered left type"
+msgstr "Registrierter linker Typ"
+
+#: describe.c:6360
+msgid "Registered right type"
+msgstr "Registrierter rechter Typ"
+
+#: describe.c:6361
+msgid "Number"
+msgstr "Nummer"
+
+#: describe.c:6397
+msgid "List of support functions of operator families"
+msgstr "Liste der Unterstützungsfunktionen in Operatorfamilien"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql ist das interaktive PostgreSQL-Terminal.\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "Aufruf:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [OPTION]... [DBNAME [BENUTZERNAME]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Allgemeine Optionen:\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=ANWEISUNG einzelne Anweisung ausführen und beenden\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr ""
+" -d, --dbname=DBNAME Datenbank, zu der verbunden werden soll\n"
+" (Standard: »%s«)\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=DATEINAME Anweisungen aus Datei ausführen und danach beenden\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list verfügbare Datenbanken auflisten und beenden\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=NAME=WERT\n"
+" psql-Variable NAME auf WERT setzen\n"
+" (z.B. -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc Startdatei (~/.psqlrc) nicht lesen\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (»eins«), --single-transaction\n"
+" als eine einzige Transaktion ausführen (wenn nicht\n"
+" interaktiv)\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] diese Hilfe anzeigen, dann beenden\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands Backslash-Befehle auflisten, dann beenden\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables besondere Variablen auflisten, dann beenden\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Eingabe- und Ausgabeoptionen:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all Skript-Inhalt wiedergeben\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors fehlgeschlagene Anweisungen wiedergeben\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries an den Server geschickte Anweisungen zeigen\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden von internen Anweisungen erzeugte Anfragen zeigen\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr ""
+" -L, --log-file=DATEINAME\n"
+" Sitzungslog in Datei senden\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline erweiterte Zeilenbearbeitung (Readline) ausschalten\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=DATEINAME Anfrageergebnisse in Datei (oder |Pipe) senden\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr ""
+" -q, --quiet stille Ausführung (keine Mitteilungen, nur\n"
+" Anfrageergebnisse)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step Einzelschrittmodus (jede Anfrage bestätigen)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line Einzelzeilenmodus (Zeilenende beendet SQL-Anweisung)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Ausgabeformatoptionen:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align unausgerichteter Tabellenausgabemodus\n"
+
+#: help.c:111
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv Tabellenausgabemodus CSV (Comma-Separated Values)\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=ZEICHEN\n"
+" Feldtrennzeichen für unausgerichteten Ausgabemodus\n"
+" (Standard: »%s«)\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html HTML-Tabellenausgabemodus\n"
+
+#: help.c:116
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr ""
+" -P, --pset=VAR[=ARG] Ausgabeoption VAR auf ARG setzen (siehe\n"
+" \\pset-Anweisung)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=ZEICHEN\n"
+" Satztrennzeichen für unausgerichteten Ausgabemodus\n"
+" (Standard: Newline)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only nur Datenzeilen ausgeben\n"
+
+#: help.c:120
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr " -T, --table-attr=TEXT HTML »table«-Tag-Attribute setzen (z.B. width, border)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded erweiterte Tabellenausgabe einschalten\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" Feldtrennzeichen für unausgerichteten Ausgabemodus auf\n"
+" Null-Byte setzen\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" Satztrennzeichen für unausgerichteten Ausgabemodus auf\n"
+" Null-Byte setzen\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Verbindungsoptionen:\n"
+
+#: help.c:130
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr ""
+" -h, --host=HOSTNAME Hostname des Datenbankservers oder\n"
+" Socket-Verzeichnis (Standard: »%s«)\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "lokales Socket"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORT Port des Datenbankservers (Standard: »%s«)\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=NAME Datenbank-Benutzername (Standard: »%s«)\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password niemals nach Passwort fragen\n"
+
+#: help.c:142
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr " -W, --password nach Passwort fragen (sollte automatisch geschehen)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"Für mehr Informationen, geben Sie »\\?« (für interne Anweisungen) oder\n"
+"»\\help« (für SQL-Anweisungen) in psql ein oder schauen Sie in den psql-\n"
+"Abschnitt der PostgreSQL-Dokumentation.\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Berichten Sie Fehler an <%s>.\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s Homepage: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "Allgemein\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright PostgreSQL-Urheberrechtsinformationen zeigen\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr ""
+" \\crosstabview [SPALTEN] Anfrage ausführen und Ergebnisse als Kreuztabelle\n"
+" anzeigen\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose letzte Fehlermeldung mit vollen Details anzeigen\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(OPT)] [DATEI] SQL-Anweisung ausführen (und Ergebnis in Datei oder\n"
+" |Pipe schreiben); \\g ohne Argumente entspricht Semikolon\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc Ergebnis der Anfrage beschreiben ohne sie auszuführen\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr ""
+" \\gexec Anfrage ausführen, dann jeden Ergebniswert als\n"
+" Anweisung ausführen\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr ""
+" \\gset [PREFIX] SQL-Anweisung ausführen und Ergebnis in psql-Variablen\n"
+" ablegen\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [(OPT)] [DATEI] wie \\g, aber mit erweitertem Ausgabemodus\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q psql beenden\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEK] Anfrage alle SEK Sekunden ausführen\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "Hilfe\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] Hilfe über Backslash-Befehle anzeigen\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options Hilfe über psql-Kommandozeilenoptionen anzeigen\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables Hilfe über besondere Variablen anzeigen\n"
+
+#: help.c:193
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr " \\h [NAME] Syntaxhilfe über SQL-Anweisung, * für alle Anweisungen\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Anfragepuffer\n"
+
+#: help.c:197
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr " \\e [DATEI] [ZEILE] Anfragepuffer (oder Datei) mit externem Editor bearbeiten\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [FUNKNAME [ZEILE]] Funktionsdefinition mit externem Editor bearbeiten\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [SICHTNAME [ZEILE]] Sichtdefinition mit externem Editor bearbeiten\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p aktuellen Inhalt der Anfragepuffers zeigen\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r Anfragepuffer löschen\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [DATEI] Befehlsgeschichte ausgeben oder in Datei schreiben\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w DATEI Anfragepuffer in Datei schreiben\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "Eingabe/Ausgabe\n"
+
+#: help.c:209
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... SQL COPY mit Datenstrom auf Client-Host ausführen\n"
+
+#: help.c:210
+#, c-format
+msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"
+msgstr " \\echo [-n] [TEXT] Text auf Standardausgabe schreiben (-n für ohne Newline)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i DATEI Befehle aus Datei ausführen\n"
+
+#: help.c:212
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr " \\ir DATEI wie \\i, aber relativ zum Ort des aktuellen Skripts\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [DATEI] alle Anfrageergebnisse in Datei oder |Pipe schreiben\n"
+
+#: help.c:214
+#, c-format
+msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"
+msgstr ""
+" \\qecho [-n] [TEXT] Text auf Ausgabestrom für \\o schreiben (-n für ohne\n"
+" Newline)\n"
+
+#: help.c:215
+#, c-format
+msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"
+msgstr ""
+" \\warn [-n] [TEXT] Text auf Standardfehlerausgabe schreiben (-n für ohne\n"
+" Newline)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "Bedingte Anweisungen\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if AUSDRUCK Beginn einer bedingten Anweisung\n"
+
+#: help.c:220
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif AUSDRUCK Alternative in aktueller bedingter Anweisung\n"
+
+#: help.c:221
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else letzte Alternative in aktueller bedingter Anweisung\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif Ende einer bedingten Anweisung\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "Informationen\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (Optionen: S = Systemobjekte zeigen, + = zusätzliche Details zeigen)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] Tabellen, Sichten und Sequenzen auflisten\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] NAME Tabelle, Sicht, Sequenz oder Index beschreiben\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [MUSTER] Aggregatfunktionen auflisten\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [MUSTER] Zugriffsmethoden auflisten\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [AMMUST [TYPMUST]] Operatorklassen auflisten\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [AMMUST [TYPMUST]] Operatorfamilien auflisten\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\dAo[+] [AMMUST [OPFMUST]] Operatoren in Operatorfamilien auflisten\n"
+
+#: help.c:234
+#, c-format
+msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr " \\dAp[+] [AMMUST [OPFMUST]] Unterst.funktionen in Operatorfamilien auflisten\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [MUSTER] Tablespaces auflisten\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [MUSTER] Konversionen auflisten\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [MUSTER] Typumwandlungen (Casts) auflisten\n"
+
+#: help.c:238
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr ""
+" \\dd[S] [MUSTER] Objektbeschreibungen zeigen, die nirgendwo anders\n"
+" erscheinen\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [MUSTER] Domänen auflisten\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [MUSTER] Vorgabeprivilegien auflisten\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [MUSTER] Fremdtabellen auflisten\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [MUSTER] Fremdtabellen auflisten\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [MUSTER] Fremdserver auflisten\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [MUSTER] Benutzerabbildungen auflisten\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [MUSTER] Fremddaten-Wrapper auflisten\n"
+
+#: help.c:246
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[anptw][S+] [MUSTR] Funktionen [nur Agg/normale/Proz/Trigger/Fenster] auflisten\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [MUSTER] Textsuchekonfigurationen auflisten\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [MUSTER] Textsuchewörterbücher auflisten\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [MUSTER] Textsucheparser auflisten\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [MUSTER] Textsuchevorlagen auflisten\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [MUSTER] Rollen auflisten\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [MUSTER] Indexe auflisten\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl Large Objects auflisten, wie \\lo_list\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [MUSTER] prozedurale Sprachen auflisten\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [MUSTER] materialisierte Sichten auflisten\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [MUSTER] Schemas auflisten\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S+] [PATTERN] list operators\n"
+msgstr " \\do[S+] [MUSTER] Operatoren auflisten\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [MUSTER] Sortierfolgen auflisten\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr ""
+" \\dp [MUSTER] Zugriffsprivilegien für Tabellen, Sichten und\n"
+" Sequenzen auflisten\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"
+msgstr ""
+" \\dP[itn+] [MUSTER] partitionierte Relationen [nur Indexe/Tabellen]\n"
+" auflisten [n=geschachtelt]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [MUSTER1 [MUSTER2]] datenbankspezifische Rolleneinstellungen auflisten\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [MUSTER] Replikationspublikationen auflisten\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [MUSTER] Replikationssubskriptionen auflisten\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [MUSTER] Sequenzen auflisten\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [MUSTER] Tabellen auflisten\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [MUSTER] Datentypen auflisten\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [MUSTER] Rollen auflisten\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [MUSTER] Sichten auflisten\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [MUSTER] Erweiterungen auflisten\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy[+] [PATTERN] list event triggers\n"
+msgstr " \\dy[+] [MUSTER] Ereignistrigger auflisten\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [MUSTER] Datenbanken auflisten\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNKNAME Funktionsdefinition zeigen\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] SICHTNAME Sichtdefinition zeigen\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [MUSTER] äquivalent zu \\dp\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "Formatierung\n"
+
+#: help.c:278
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr ""
+" \\a zwischen unausgerichtetem und ausgerichtetem Ausgabemodus\n"
+" umschalten\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [TEXT] Tabellentitel setzen oder löschen\n"
+
+#: help.c:280
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr " \\f [ZEICHEN] Feldtrennzeichen zeigen oder setzen\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H HTML-Ausgabemodus umschalten (gegenwärtig %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [NAME [WERT]] Tabellenausgabeoption setzen\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] nur Datenzeilen zeigen (gegenwärtig %s)\n"
+
+#: help.c:292
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [TEXT] HTML <table>-Tag-Attribute setzen oder löschen\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] erweiterte Ausgabe umschalten (gegenwärtig %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "Verbindung\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- BENUTZER|- HOST|- PORT|-] | conninfo}\n"
+" mit neuer Datenbank verbinden (aktuell »%s«)\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- BENUTZER|- HOST|- PORT|-] | conninfo}\n"
+" mit neuer Datenbank verbinden (aktuell keine Verbindung)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo Informationen über aktuelle Verbindung anzeigen\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [KODIERUNG] Client-Kodierung zeigen oder setzen\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr ""
+" \\password [BENUTZERNAME]\n"
+" sicheres Ändern eines Benutzerpasswortes\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "Betriebssystem\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [VERZ] Arbeitsverzeichnis wechseln\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NAME [WERT] Umgebungsvariable setzen oder löschen\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] Zeitmessung umschalten (gegenwärtig %s)\n"
+
+#: help.c:315
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr " \\! [BEFEHL] Befehl in Shell ausführen oder interaktive Shell starten\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "Variablen\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [TEXT] NAME interne Variable vom Benutzer abfragen\n"
+
+#: help.c:320
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr " \\set [NAME [WERT]] interne Variable setzen, oder alle anzeigen\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset NAME interne Variable löschen\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "Large Objects\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID DATEI\n"
+" \\lo_import DATEI [KOMMENTAR]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID Large-Object-Operationen\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"Liste besonderer Variablen\n"
+"\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "psql-Variablen:\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NAME=WERT\n"
+" oder \\set NAME WERT innerhalb von psql\n"
+"\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" wenn gesetzt werden alle erfolgreichen SQL-Befehle automatisch committet\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" bestimmt, ob SQL-Schlüsselwörter in Groß- oder Kleinschreibung\n"
+" vervollständigt werden [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" Name der aktuellen Datenbank\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" kontrolliert, welche Eingaben auf die Standardausgabe geschrieben werden\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" wenn gesetzt, interne Anfragen, die von Backslash-Befehlen ausgeführt werden,\n"
+" anzeigen; wenn auf »noexec« gesetzt, nur anzeigen, nicht ausführen\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" aktuelle Zeichensatzkodierung des Clients\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" »true« wenn die letzte Anfrage fehlgeschlagen ist, sonst »false«\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" Anzahl auf einmal zu holender und anzuzeigender Zeilen (0 = unbegrenzt)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" wenn gesetzt werden Tabellenzugriffsmethoden nicht angezeigt\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" kontrolliert Befehlsgeschichte [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" Dateiname für die Befehlsgeschichte\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" maximale Anzahl der in der Befehlsgeschichte zu speichernden Befehle\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" der aktuell verbundene Datenbankserverhost\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" Anzahl benötigter EOFs um eine interaktive Sitzung zu beenden\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" Wert der zuletzt beinträchtigten OID\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" Fehlermeldung und SQLSTATE des letzten Fehlers, oder leer und »000000« wenn\n"
+" kein Fehler\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" wenn gesetzt beendet ein Fehler die Transaktion nicht (verwendet implizite\n"
+" Sicherungspunkte)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" Skriptausführung bei Fehler beenden\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" Serverport der aktuellen Verbindung\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" der normale psql-Prompt\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" der Prompt, wenn eine Anweisung von der vorherigen Zeile fortgesetzt wird\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" der Prompt während COPY ... FROM STDIN\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" stille Ausführung (wie Option -q)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" Anzahl der von der letzten Anfrage beeinträchtigten Zeilen, oder 0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" Serverversion (kurze Zeichenkette oder numerisches Format)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" kontrolliert die Anzeige von Kontextinformationen in Meldungen\n"
+" [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" wenn gesetzt beendet Zeilenende die SQL-Anweisung (wie Option -S)\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" Einzelschrittmodus (wie Option -s)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" SQLSTATE der letzten Anfrage, oder »00000« wenn kein Fehler\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" der aktuell verbundene Datenbankbenutzer\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" kontrolliert wieviele Details in Fehlermeldungen enthalten sind\n"
+" [default, verbose, terse, sqlstate]\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" Version von psql (lange Zeichenkette, kurze Zeichenkette oder numerisch)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Anzeigeeinstellungen:\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NAME[=WERT]\n"
+" oder \\pset NAME [WERT] innerhalb von psql\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" Rahmenstil (Zahl)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" Zielbreite für das Format »wrapped«\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (oder x)\n"
+" erweiterte Ausgabe [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" Feldtrennzeichen für unausgerichteten Ausgabemodus (Standard »%s«)\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" Feldtrennzeichen für unausgerichteten Ausgabemodus auf Null-Byte setzen\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" Tabellenfußzeile ein- oder auschalten [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" Ausgabeformat setzen [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" Rahmenlinienstil setzen [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" setzt die Zeichenkette, die anstelle eines NULL-Wertes ausgegeben wird\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" Verwendung eines Locale-spezifischen Zeichens zur Trennung von Zifferngruppen\n"
+" einschalten [on, off]\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" kontrolliert Verwendung eines externen Pager-Programms [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" Satztrennzeichen für unausgerichteten Ausgabemodus\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" Satztrennzeichen für unausgerichteten Ausgabemodus auf Null-Byte setzen\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (or T)\n"
+" Attribute für das »table«-Tag im Format »html« oder proportionale\n"
+" Spaltenbreite für links ausgerichtete Datentypen im Format »latex-longtable«\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" setzt den Titel darauffolgend ausgegebener Tabellen\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" wenn gesetzt werden nur die eigentlichen Tabellendaten gezeigt\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" setzt den Stil für Unicode-Linien [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Umgebungsvariablen:\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NAME=WERT [NAME=WERT] psql ...\n"
+" oder \\setenv NAME [WERT] innerhalb von psql\n"
+"\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NAME=WERT\n"
+" psql ...\n"
+" oder \\setenv NAME [WERT] innerhalb von psql\n"
+"\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" Anzahl Spalten im Format »wrapped«\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" wie Verbindungsparameter »application_name«\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" wie Verbindungsparameter »dbname«\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" wie Verbindungsparameter »host«\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" Verbindungspasswort (nicht empfohlen)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" Name der Passwortdatei\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" wie Verbindungsparameter »port«\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" wie Verbindungsparameter »user«\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" Editor für Befehle \\e, \\ef und \\ev\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" wie die Zeilennummer beim Aufruf des Editors angegeben wird\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" alternativer Pfad für History-Datei\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" Name des externen Pager-Programms\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" alternativer Pfad für .psqlrc-Datei des Benutzers\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" Shell für den Befehl \\!\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" Verzeichnis für temporäre Dateien\n"
+
+#: help.c:555
+msgid "Available help:\n"
+msgstr "Verfügbare Hilfe:\n"
+
+#: help.c:650
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"Anweisung: %s\n"
+"Beschreibung: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:673
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"Keine Hilfe verfügbar für »%s«.\n"
+"Versuchen Sie \\h ohne Argumente, um die verfügbare Hilfe zu sehen.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "konnte nicht aus Eingabedatei lesen: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "konnte Befehlsgeschichte nicht in Datei »%s« speichern: %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "Befehlsgeschichte wird von dieser Installation nicht unterstützt"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: nicht mit einer Datenbank verbunden"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: aktuelle Transaktion ist abgebrochen"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: unbekannter Transaktionsstatus"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "Large Objects"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: abgebrochen"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Verwenden Sie »\\q«, um %s zu verlassen.\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"Die Eingabe ist ein PostgreSQL-Dump im Custom-Format.\n"
+"Verwenden Sie den Kommandozeilen-Client pg_restore, um diesen Dump in die\n"
+"Datenbank zurückzuspielen.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Verwenden Sie \\? für Hilfe oder drücken Sie Strg-C um den Eingabepuffer zu löschen."
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "Verwenden Sie \\? für Hilfe."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Dies ist psql, die Kommandozeilenschnittstelle für PostgreSQL."
+
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Geben Sie ein: \\copyright für Urheberrechtsinformationen\n"
+" \\h für Hilfe über SQL-Anweisungen\n"
+" \\? für Hilfe über interne Anweisungen\n"
+" \\g oder Semikolon, um eine Anfrage auszuführen\n"
+" \\q um zu beenden\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "Verwenden Sie \\q zum beenden."
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "Verwenden Sie Strg-D zum beenden."
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "Verwenden Sie Strg-C zum beenden."
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "Anfrage ignoriert; verwenden Sie \\endif oder Strg-C um den aktuellen \\if-Block zu beenden"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "Dateiende erreicht, aber schließendes \\endif fehlt"
+
+#: psqlscanslash.l:640
+#, c-format
+msgid "unterminated quoted string"
+msgstr "Zeichenkette in Anführungszeichen nicht abgeschlossen"
+
+#: psqlscanslash.l:813
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: Speicher aufgebraucht"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:516 sql_help.c:521 sql_help.c:526
+#: sql_help.c:531 sql_help.c:536 sql_help.c:589 sql_help.c:591 sql_help.c:593
+#: sql_help.c:595 sql_help.c:597 sql_help.c:600 sql_help.c:602 sql_help.c:605
+#: sql_help.c:616 sql_help.c:618 sql_help.c:659 sql_help.c:661 sql_help.c:663
+#: sql_help.c:666 sql_help.c:668 sql_help.c:670 sql_help.c:703 sql_help.c:707
+#: sql_help.c:711 sql_help.c:730 sql_help.c:733 sql_help.c:736 sql_help.c:765
+#: sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791 sql_help.c:806
+#: sql_help.c:809 sql_help.c:838 sql_help.c:843 sql_help.c:848 sql_help.c:853
+#: sql_help.c:858 sql_help.c:880 sql_help.c:882 sql_help.c:884 sql_help.c:886
+#: sql_help.c:889 sql_help.c:891 sql_help.c:932 sql_help.c:977 sql_help.c:982
+#: sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1016 sql_help.c:1027
+#: sql_help.c:1029 sql_help.c:1048 sql_help.c:1058 sql_help.c:1060
+#: sql_help.c:1062 sql_help.c:1074 sql_help.c:1078 sql_help.c:1080
+#: sql_help.c:1092 sql_help.c:1094 sql_help.c:1096 sql_help.c:1098
+#: sql_help.c:1114 sql_help.c:1116 sql_help.c:1120 sql_help.c:1123
+#: sql_help.c:1124 sql_help.c:1125 sql_help.c:1128 sql_help.c:1130
+#: sql_help.c:1264 sql_help.c:1266 sql_help.c:1269 sql_help.c:1272
+#: sql_help.c:1274 sql_help.c:1276 sql_help.c:1279 sql_help.c:1282
+#: sql_help.c:1393 sql_help.c:1395 sql_help.c:1397 sql_help.c:1400
+#: sql_help.c:1421 sql_help.c:1424 sql_help.c:1427 sql_help.c:1430
+#: sql_help.c:1434 sql_help.c:1436 sql_help.c:1438 sql_help.c:1440
+#: sql_help.c:1454 sql_help.c:1457 sql_help.c:1459 sql_help.c:1461
+#: sql_help.c:1471 sql_help.c:1473 sql_help.c:1483 sql_help.c:1485
+#: sql_help.c:1495 sql_help.c:1498 sql_help.c:1521 sql_help.c:1523
+#: sql_help.c:1525 sql_help.c:1527 sql_help.c:1530 sql_help.c:1532
+#: sql_help.c:1535 sql_help.c:1538 sql_help.c:1588 sql_help.c:1631
+#: sql_help.c:1634 sql_help.c:1636 sql_help.c:1638 sql_help.c:1641
+#: sql_help.c:1643 sql_help.c:1645 sql_help.c:1648 sql_help.c:1698
+#: sql_help.c:1714 sql_help.c:1935 sql_help.c:2004 sql_help.c:2023
+#: sql_help.c:2036 sql_help.c:2093 sql_help.c:2100 sql_help.c:2110
+#: sql_help.c:2131 sql_help.c:2157 sql_help.c:2175 sql_help.c:2202
+#: sql_help.c:2298 sql_help.c:2343 sql_help.c:2367 sql_help.c:2390
+#: sql_help.c:2394 sql_help.c:2428 sql_help.c:2448 sql_help.c:2470
+#: sql_help.c:2484 sql_help.c:2504 sql_help.c:2527 sql_help.c:2557
+#: sql_help.c:2582 sql_help.c:2628 sql_help.c:2906 sql_help.c:2919
+#: sql_help.c:2936 sql_help.c:2952 sql_help.c:2992 sql_help.c:3044
+#: sql_help.c:3048 sql_help.c:3050 sql_help.c:3056 sql_help.c:3074
+#: sql_help.c:3101 sql_help.c:3136 sql_help.c:3148 sql_help.c:3157
+#: sql_help.c:3201 sql_help.c:3215 sql_help.c:3243 sql_help.c:3251
+#: sql_help.c:3263 sql_help.c:3273 sql_help.c:3281 sql_help.c:3289
+#: sql_help.c:3297 sql_help.c:3305 sql_help.c:3314 sql_help.c:3325
+#: sql_help.c:3333 sql_help.c:3341 sql_help.c:3349 sql_help.c:3357
+#: sql_help.c:3367 sql_help.c:3376 sql_help.c:3385 sql_help.c:3393
+#: sql_help.c:3403 sql_help.c:3414 sql_help.c:3422 sql_help.c:3431
+#: sql_help.c:3442 sql_help.c:3451 sql_help.c:3459 sql_help.c:3467
+#: sql_help.c:3475 sql_help.c:3483 sql_help.c:3491 sql_help.c:3499
+#: sql_help.c:3507 sql_help.c:3515 sql_help.c:3523 sql_help.c:3531
+#: sql_help.c:3548 sql_help.c:3557 sql_help.c:3565 sql_help.c:3582
+#: sql_help.c:3597 sql_help.c:3872 sql_help.c:3923 sql_help.c:3952
+#: sql_help.c:3965 sql_help.c:4410 sql_help.c:4458 sql_help.c:4599
+msgid "name"
+msgstr "Name"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1785
+#: sql_help.c:3216 sql_help.c:4196
+msgid "aggregate_signature"
+msgstr "Aggregatsignatur"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:525 sql_help.c:572
+#: sql_help.c:590 sql_help.c:617 sql_help.c:667 sql_help.c:732 sql_help.c:787
+#: sql_help.c:808 sql_help.c:847 sql_help.c:892 sql_help.c:933 sql_help.c:986
+#: sql_help.c:1018 sql_help.c:1028 sql_help.c:1061 sql_help.c:1081
+#: sql_help.c:1095 sql_help.c:1131 sql_help.c:1273 sql_help.c:1394
+#: sql_help.c:1437 sql_help.c:1458 sql_help.c:1472 sql_help.c:1484
+#: sql_help.c:1497 sql_help.c:1524 sql_help.c:1589 sql_help.c:1642
+msgid "new_name"
+msgstr "neuer_Name"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:530 sql_help.c:619
+#: sql_help.c:628 sql_help.c:686 sql_help.c:706 sql_help.c:735 sql_help.c:790
+#: sql_help.c:852 sql_help.c:890 sql_help.c:991 sql_help.c:1030 sql_help.c:1059
+#: sql_help.c:1079 sql_help.c:1093 sql_help.c:1129 sql_help.c:1334
+#: sql_help.c:1396 sql_help.c:1439 sql_help.c:1460 sql_help.c:1522
+#: sql_help.c:1637 sql_help.c:2892
+msgid "new_owner"
+msgstr "neuer_Eigentümer"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:535 sql_help.c:669 sql_help.c:710 sql_help.c:738
+#: sql_help.c:793 sql_help.c:857 sql_help.c:996 sql_help.c:1063 sql_help.c:1097
+#: sql_help.c:1275 sql_help.c:1441 sql_help.c:1462 sql_help.c:1474
+#: sql_help.c:1486 sql_help.c:1526 sql_help.c:1644
+msgid "new_schema"
+msgstr "neues_Schema"
+
+#: sql_help.c:44 sql_help.c:1849 sql_help.c:3217 sql_help.c:4225
+msgid "where aggregate_signature is:"
+msgstr "wobei Aggregatsignatur Folgendes ist:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+#: sql_help.c:2299 sql_help.c:2505 sql_help.c:3218 sql_help.c:3221
+#: sql_help.c:3224 sql_help.c:3315 sql_help.c:3404 sql_help.c:3432
+#: sql_help.c:3756 sql_help.c:4104 sql_help.c:4202 sql_help.c:4209
+#: sql_help.c:4215 sql_help.c:4226 sql_help.c:4229 sql_help.c:4232
+msgid "argmode"
+msgstr "Argmodus"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:979
+#: sql_help.c:984 sql_help.c:989 sql_help.c:994 sql_help.c:999 sql_help.c:1804
+#: sql_help.c:1821 sql_help.c:1827 sql_help.c:1851 sql_help.c:1854
+#: sql_help.c:1857 sql_help.c:2006 sql_help.c:2025 sql_help.c:2028
+#: sql_help.c:2300 sql_help.c:2506 sql_help.c:3219 sql_help.c:3222
+#: sql_help.c:3225 sql_help.c:3316 sql_help.c:3405 sql_help.c:3433
+#: sql_help.c:4203 sql_help.c:4210 sql_help.c:4216 sql_help.c:4227
+#: sql_help.c:4230 sql_help.c:4233
+msgid "argname"
+msgstr "Argname"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:519
+#: sql_help.c:524 sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:841
+#: sql_help.c:846 sql_help.c:851 sql_help.c:856 sql_help.c:861 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1000 sql_help.c:1805
+#: sql_help.c:1822 sql_help.c:1828 sql_help.c:1852 sql_help.c:1855
+#: sql_help.c:1858 sql_help.c:2301 sql_help.c:2507 sql_help.c:3220
+#: sql_help.c:3223 sql_help.c:3226 sql_help.c:3317 sql_help.c:3406
+#: sql_help.c:3434 sql_help.c:4204 sql_help.c:4211 sql_help.c:4217
+#: sql_help.c:4228 sql_help.c:4231 sql_help.c:4234
+msgid "argtype"
+msgstr "Argtyp"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:927
+#: sql_help.c:1076 sql_help.c:1455 sql_help.c:1583 sql_help.c:1615
+#: sql_help.c:1667 sql_help.c:1906 sql_help.c:1913 sql_help.c:2205
+#: sql_help.c:2247 sql_help.c:2254 sql_help.c:2263 sql_help.c:2344
+#: sql_help.c:2558 sql_help.c:2650 sql_help.c:2921 sql_help.c:3102
+#: sql_help.c:3124 sql_help.c:3264 sql_help.c:3619 sql_help.c:3791
+#: sql_help.c:3964 sql_help.c:4661
+msgid "option"
+msgstr "Option"
+
+#: sql_help.c:113 sql_help.c:928 sql_help.c:1584 sql_help.c:2345
+#: sql_help.c:2559 sql_help.c:3103 sql_help.c:3265
+msgid "where option can be:"
+msgstr "wobei Option Folgendes sein kann:"
+
+#: sql_help.c:114 sql_help.c:2139
+msgid "allowconn"
+msgstr "allowconn"
+
+#: sql_help.c:115 sql_help.c:929 sql_help.c:1585 sql_help.c:2140
+#: sql_help.c:2346 sql_help.c:2560 sql_help.c:3104
+msgid "connlimit"
+msgstr "Verbindungslimit"
+
+#: sql_help.c:116 sql_help.c:2141
+msgid "istemplate"
+msgstr "istemplate"
+
+#: sql_help.c:122 sql_help.c:607 sql_help.c:672 sql_help.c:1278 sql_help.c:1327
+msgid "new_tablespace"
+msgstr "neuer_Tablespace"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:545 sql_help.c:547
+#: sql_help.c:548 sql_help.c:864 sql_help.c:866 sql_help.c:867 sql_help.c:936
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1005 sql_help.c:1007
+#: sql_help.c:1008 sql_help.c:1142 sql_help.c:1145 sql_help.c:1592
+#: sql_help.c:1596 sql_help.c:1599 sql_help.c:2311 sql_help.c:2511
+#: sql_help.c:3983 sql_help.c:4399
+msgid "configuration_parameter"
+msgstr "Konfigurationsparameter"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:546 sql_help.c:599 sql_help.c:678 sql_help.c:684 sql_help.c:865
+#: sql_help.c:888 sql_help.c:937 sql_help.c:1006 sql_help.c:1077
+#: sql_help.c:1119 sql_help.c:1122 sql_help.c:1127 sql_help.c:1143
+#: sql_help.c:1144 sql_help.c:1309 sql_help.c:1329 sql_help.c:1377
+#: sql_help.c:1399 sql_help.c:1456 sql_help.c:1540 sql_help.c:1593
+#: sql_help.c:1616 sql_help.c:2206 sql_help.c:2248 sql_help.c:2255
+#: sql_help.c:2264 sql_help.c:2312 sql_help.c:2313 sql_help.c:2375
+#: sql_help.c:2378 sql_help.c:2412 sql_help.c:2512 sql_help.c:2513
+#: sql_help.c:2530 sql_help.c:2651 sql_help.c:2681 sql_help.c:2786
+#: sql_help.c:2799 sql_help.c:2813 sql_help.c:2854 sql_help.c:2878
+#: sql_help.c:2895 sql_help.c:2922 sql_help.c:3125 sql_help.c:3792
+#: sql_help.c:4400 sql_help.c:4401
+msgid "value"
+msgstr "Wert"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "Zielrolle"
+
+#: sql_help.c:198 sql_help.c:2190 sql_help.c:2606 sql_help.c:2611
+#: sql_help.c:3738 sql_help.c:3745 sql_help.c:3759 sql_help.c:3765
+#: sql_help.c:4086 sql_help.c:4093 sql_help.c:4107 sql_help.c:4113
+msgid "schema_name"
+msgstr "Schemaname"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "abgekürztes_Grant_oder_Revoke"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "wobei abgekürztes_Grant_oder_Revoke Folgendes sein kann:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:570 sql_help.c:606 sql_help.c:671 sql_help.c:811 sql_help.c:947
+#: sql_help.c:1277 sql_help.c:1603 sql_help.c:2349 sql_help.c:2350
+#: sql_help.c:2351 sql_help.c:2352 sql_help.c:2353 sql_help.c:2486
+#: sql_help.c:2563 sql_help.c:2564 sql_help.c:2565 sql_help.c:2566
+#: sql_help.c:2567 sql_help.c:3107 sql_help.c:3108 sql_help.c:3109
+#: sql_help.c:3110 sql_help.c:3111 sql_help.c:3771 sql_help.c:3775
+#: sql_help.c:4119 sql_help.c:4123 sql_help.c:4420
+msgid "role_name"
+msgstr "Rollenname"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1293 sql_help.c:1295
+#: sql_help.c:1344 sql_help.c:1356 sql_help.c:1381 sql_help.c:1633
+#: sql_help.c:2160 sql_help.c:2164 sql_help.c:2267 sql_help.c:2272
+#: sql_help.c:2371 sql_help.c:2781 sql_help.c:2794 sql_help.c:2808
+#: sql_help.c:2817 sql_help.c:2829 sql_help.c:2858 sql_help.c:3823
+#: sql_help.c:3838 sql_help.c:3840 sql_help.c:4285 sql_help.c:4286
+#: sql_help.c:4295 sql_help.c:4336 sql_help.c:4337 sql_help.c:4338
+#: sql_help.c:4339 sql_help.c:4340 sql_help.c:4341 sql_help.c:4374
+#: sql_help.c:4375 sql_help.c:4380 sql_help.c:4385 sql_help.c:4524
+#: sql_help.c:4525 sql_help.c:4534 sql_help.c:4575 sql_help.c:4576
+#: sql_help.c:4577 sql_help.c:4578 sql_help.c:4579 sql_help.c:4580
+#: sql_help.c:4627 sql_help.c:4629 sql_help.c:4688 sql_help.c:4744
+#: sql_help.c:4745 sql_help.c:4754 sql_help.c:4795 sql_help.c:4796
+#: sql_help.c:4797 sql_help.c:4798 sql_help.c:4799 sql_help.c:4800
+msgid "expression"
+msgstr "Ausdruck"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "Domänen-Constraint"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1270 sql_help.c:1315 sql_help.c:1316 sql_help.c:1317
+#: sql_help.c:1343 sql_help.c:1355 sql_help.c:1372 sql_help.c:1791
+#: sql_help.c:1793 sql_help.c:2163 sql_help.c:2266 sql_help.c:2271
+#: sql_help.c:2816 sql_help.c:2828 sql_help.c:3835
+msgid "constraint_name"
+msgstr "Constraint-Name"
+
+#: sql_help.c:244 sql_help.c:1271
+msgid "new_constraint_name"
+msgstr "neuer_Constraint-Name"
+
+#: sql_help.c:317 sql_help.c:1075
+msgid "new_version"
+msgstr "neue_Version"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "Elementobjekt"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "wobei Elementobjekt Folgendes ist:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1783 sql_help.c:1788 sql_help.c:1795
+#: sql_help.c:1796 sql_help.c:1797 sql_help.c:1798 sql_help.c:1799
+#: sql_help.c:1800 sql_help.c:1801 sql_help.c:1806 sql_help.c:1808
+#: sql_help.c:1812 sql_help.c:1814 sql_help.c:1818 sql_help.c:1823
+#: sql_help.c:1824 sql_help.c:1831 sql_help.c:1832 sql_help.c:1833
+#: sql_help.c:1834 sql_help.c:1835 sql_help.c:1836 sql_help.c:1837
+#: sql_help.c:1838 sql_help.c:1839 sql_help.c:1840 sql_help.c:1841
+#: sql_help.c:1846 sql_help.c:1847 sql_help.c:4192 sql_help.c:4197
+#: sql_help.c:4198 sql_help.c:4199 sql_help.c:4200 sql_help.c:4206
+#: sql_help.c:4207 sql_help.c:4212 sql_help.c:4213 sql_help.c:4218
+#: sql_help.c:4219 sql_help.c:4220 sql_help.c:4221 sql_help.c:4222
+#: sql_help.c:4223
+msgid "object_name"
+msgstr "Objektname"
+
+#: sql_help.c:326 sql_help.c:1784 sql_help.c:4195
+msgid "aggregate_name"
+msgstr "Aggregatname"
+
+#: sql_help.c:328 sql_help.c:1786 sql_help.c:2070 sql_help.c:2074
+#: sql_help.c:2076 sql_help.c:3234
+msgid "source_type"
+msgstr "Quelltyp"
+
+#: sql_help.c:329 sql_help.c:1787 sql_help.c:2071 sql_help.c:2075
+#: sql_help.c:2077 sql_help.c:3235
+msgid "target_type"
+msgstr "Zieltyp"
+
+#: sql_help.c:336 sql_help.c:775 sql_help.c:1802 sql_help.c:2072
+#: sql_help.c:2113 sql_help.c:2178 sql_help.c:2429 sql_help.c:2460
+#: sql_help.c:2998 sql_help.c:4103 sql_help.c:4201 sql_help.c:4314
+#: sql_help.c:4318 sql_help.c:4322 sql_help.c:4325 sql_help.c:4553
+#: sql_help.c:4557 sql_help.c:4561 sql_help.c:4564 sql_help.c:4773
+#: sql_help.c:4777 sql_help.c:4781 sql_help.c:4784
+msgid "function_name"
+msgstr "Funktionsname"
+
+#: sql_help.c:341 sql_help.c:768 sql_help.c:1809 sql_help.c:2453
+msgid "operator_name"
+msgstr "Operatorname"
+
+#: sql_help.c:342 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1810
+#: sql_help.c:2430 sql_help.c:3358
+msgid "left_type"
+msgstr "linker_Typ"
+
+#: sql_help.c:343 sql_help.c:705 sql_help.c:709 sql_help.c:713 sql_help.c:1811
+#: sql_help.c:2431 sql_help.c:3359
+msgid "right_type"
+msgstr "rechter_Typ"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:731 sql_help.c:734 sql_help.c:737
+#: sql_help.c:766 sql_help.c:778 sql_help.c:786 sql_help.c:789 sql_help.c:792
+#: sql_help.c:1361 sql_help.c:1813 sql_help.c:1815 sql_help.c:2450
+#: sql_help.c:2471 sql_help.c:2834 sql_help.c:3368 sql_help.c:3377
+msgid "index_method"
+msgstr "Indexmethode"
+
+#: sql_help.c:349 sql_help.c:1819 sql_help.c:4208
+msgid "procedure_name"
+msgstr "Prozedurname"
+
+#: sql_help.c:353 sql_help.c:1825 sql_help.c:3755 sql_help.c:4214
+msgid "routine_name"
+msgstr "Routinenname"
+
+#: sql_help.c:365 sql_help.c:1333 sql_help.c:1842 sql_help.c:2307
+#: sql_help.c:2510 sql_help.c:2789 sql_help.c:2965 sql_help.c:3539
+#: sql_help.c:3769 sql_help.c:4117
+msgid "type_name"
+msgstr "Typname"
+
+#: sql_help.c:366 sql_help.c:1843 sql_help.c:2306 sql_help.c:2509
+#: sql_help.c:2966 sql_help.c:3192 sql_help.c:3540 sql_help.c:3761
+#: sql_help.c:4109
+msgid "lang_name"
+msgstr "Sprachname"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "und Aggregatsignatur Folgendes ist:"
+
+#: sql_help.c:392 sql_help.c:1937 sql_help.c:2203
+msgid "handler_function"
+msgstr "Handler-Funktion"
+
+#: sql_help.c:393 sql_help.c:2204
+msgid "validator_function"
+msgstr "Validator-Funktion"
+
+#: sql_help.c:441 sql_help.c:520 sql_help.c:660 sql_help.c:842 sql_help.c:981
+#: sql_help.c:1265 sql_help.c:1531
+msgid "action"
+msgstr "Aktion"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:664 sql_help.c:674 sql_help.c:676
+#: sql_help.c:679 sql_help.c:681 sql_help.c:1057 sql_help.c:1267
+#: sql_help.c:1285 sql_help.c:1289 sql_help.c:1290 sql_help.c:1294
+#: sql_help.c:1296 sql_help.c:1297 sql_help.c:1298 sql_help.c:1299
+#: sql_help.c:1301 sql_help.c:1304 sql_help.c:1305 sql_help.c:1307
+#: sql_help.c:1310 sql_help.c:1312 sql_help.c:1357 sql_help.c:1359
+#: sql_help.c:1366 sql_help.c:1375 sql_help.c:1380 sql_help.c:1632
+#: sql_help.c:1635 sql_help.c:1639 sql_help.c:1675 sql_help.c:1790
+#: sql_help.c:1903 sql_help.c:1909 sql_help.c:1922 sql_help.c:1923
+#: sql_help.c:1924 sql_help.c:2245 sql_help.c:2258 sql_help.c:2304
+#: sql_help.c:2370 sql_help.c:2376 sql_help.c:2409 sql_help.c:2636
+#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2772 sql_help.c:2780
+#: sql_help.c:2790 sql_help.c:2793 sql_help.c:2803 sql_help.c:2807
+#: sql_help.c:2830 sql_help.c:2832 sql_help.c:2839 sql_help.c:2852
+#: sql_help.c:2857 sql_help.c:2875 sql_help.c:3001 sql_help.c:3137
+#: sql_help.c:3740 sql_help.c:3741 sql_help.c:3822 sql_help.c:3837
+#: sql_help.c:3839 sql_help.c:3841 sql_help.c:4088 sql_help.c:4089
+#: sql_help.c:4194 sql_help.c:4345 sql_help.c:4584 sql_help.c:4626
+#: sql_help.c:4628 sql_help.c:4630 sql_help.c:4676 sql_help.c:4804
+msgid "column_name"
+msgstr "Spaltenname"
+
+#: sql_help.c:444 sql_help.c:665 sql_help.c:1268 sql_help.c:1640
+msgid "new_column_name"
+msgstr "neuer_Spaltenname"
+
+#: sql_help.c:449 sql_help.c:541 sql_help.c:673 sql_help.c:863 sql_help.c:1002
+#: sql_help.c:1284 sql_help.c:1541
+msgid "where action is one of:"
+msgstr "wobei Aktion Folgendes sein kann:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1049 sql_help.c:1286
+#: sql_help.c:1291 sql_help.c:1543 sql_help.c:1547 sql_help.c:2158
+#: sql_help.c:2246 sql_help.c:2449 sql_help.c:2629 sql_help.c:2773
+#: sql_help.c:3046 sql_help.c:3924
+msgid "data_type"
+msgstr "Datentyp"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1287 sql_help.c:1292
+#: sql_help.c:1544 sql_help.c:1548 sql_help.c:2159 sql_help.c:2249
+#: sql_help.c:2372 sql_help.c:2774 sql_help.c:2782 sql_help.c:2795
+#: sql_help.c:2809 sql_help.c:3047 sql_help.c:3053 sql_help.c:3832
+msgid "collation"
+msgstr "Sortierfolge"
+
+#: sql_help.c:453 sql_help.c:1288 sql_help.c:2250 sql_help.c:2259
+#: sql_help.c:2775 sql_help.c:2791 sql_help.c:2804
+msgid "column_constraint"
+msgstr "Spalten-Constraint"
+
+#: sql_help.c:463 sql_help.c:604 sql_help.c:675 sql_help.c:1306 sql_help.c:4673
+msgid "integer"
+msgstr "ganze_Zahl"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:677 sql_help.c:680 sql_help.c:1308
+#: sql_help.c:1311
+msgid "attribute_option"
+msgstr "Attributoption"
+
+#: sql_help.c:473 sql_help.c:1313 sql_help.c:2251 sql_help.c:2260
+#: sql_help.c:2776 sql_help.c:2792 sql_help.c:2805
+msgid "table_constraint"
+msgstr "Tabellen-Constraint"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1318
+#: sql_help.c:1319 sql_help.c:1320 sql_help.c:1321 sql_help.c:1844
+msgid "trigger_name"
+msgstr "Triggername"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1331 sql_help.c:1332
+#: sql_help.c:2252 sql_help.c:2257 sql_help.c:2779 sql_help.c:2802
+msgid "parent_table"
+msgstr "Elterntabelle"
+
+#: sql_help.c:540 sql_help.c:596 sql_help.c:662 sql_help.c:862 sql_help.c:1001
+#: sql_help.c:1500 sql_help.c:2189
+msgid "extension_name"
+msgstr "Erweiterungsname"
+
+#: sql_help.c:542 sql_help.c:1003 sql_help.c:2308
+msgid "execution_cost"
+msgstr "Ausführungskosten"
+
+#: sql_help.c:543 sql_help.c:1004 sql_help.c:2309
+msgid "result_rows"
+msgstr "Ergebniszeilen"
+
+#: sql_help.c:544 sql_help.c:2310
+msgid "support_function"
+msgstr "Support-Funktion"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:926 sql_help.c:934 sql_help.c:938
+#: sql_help.c:941 sql_help.c:944 sql_help.c:1582 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:1600 sql_help.c:2607
+#: sql_help.c:2609 sql_help.c:2612 sql_help.c:2613 sql_help.c:3739
+#: sql_help.c:3743 sql_help.c:3746 sql_help.c:3748 sql_help.c:3750
+#: sql_help.c:3752 sql_help.c:3754 sql_help.c:3760 sql_help.c:3762
+#: sql_help.c:3764 sql_help.c:3766 sql_help.c:3768 sql_help.c:3770
+#: sql_help.c:3772 sql_help.c:3773 sql_help.c:4087 sql_help.c:4091
+#: sql_help.c:4094 sql_help.c:4096 sql_help.c:4098 sql_help.c:4100
+#: sql_help.c:4102 sql_help.c:4108 sql_help.c:4110 sql_help.c:4112
+#: sql_help.c:4114 sql_help.c:4116 sql_help.c:4118 sql_help.c:4120
+#: sql_help.c:4121
+msgid "role_specification"
+msgstr "Rollenangabe"
+
+#: sql_help.c:566 sql_help.c:568 sql_help.c:1613 sql_help.c:2132
+#: sql_help.c:2615 sql_help.c:3122 sql_help.c:3573 sql_help.c:4430
+msgid "user_name"
+msgstr "Benutzername"
+
+#: sql_help.c:569 sql_help.c:946 sql_help.c:1602 sql_help.c:2614
+#: sql_help.c:3774 sql_help.c:4122
+msgid "where role_specification can be:"
+msgstr "wobei Rollenangabe Folgendes sein kann:"
+
+#: sql_help.c:571
+msgid "group_name"
+msgstr "Gruppenname"
+
+#: sql_help.c:592 sql_help.c:1378 sql_help.c:2138 sql_help.c:2379
+#: sql_help.c:2413 sql_help.c:2787 sql_help.c:2800 sql_help.c:2814
+#: sql_help.c:2855 sql_help.c:2879 sql_help.c:2891 sql_help.c:3767
+#: sql_help.c:4115
+msgid "tablespace_name"
+msgstr "Tablespace-Name"
+
+#: sql_help.c:594 sql_help.c:682 sql_help.c:1326 sql_help.c:1335
+#: sql_help.c:1373 sql_help.c:1724
+msgid "index_name"
+msgstr "Indexname"
+
+#: sql_help.c:598 sql_help.c:601 sql_help.c:683 sql_help.c:685 sql_help.c:1328
+#: sql_help.c:1330 sql_help.c:1376 sql_help.c:2377 sql_help.c:2411
+#: sql_help.c:2785 sql_help.c:2798 sql_help.c:2812 sql_help.c:2853
+#: sql_help.c:2877
+msgid "storage_parameter"
+msgstr "Storage-Parameter"
+
+#: sql_help.c:603
+msgid "column_number"
+msgstr "Spaltennummer"
+
+#: sql_help.c:627 sql_help.c:1807 sql_help.c:4205
+msgid "large_object_oid"
+msgstr "Large-Object-OID"
+
+#: sql_help.c:714 sql_help.c:2434
+msgid "res_proc"
+msgstr "Res-Funktion"
+
+#: sql_help.c:715 sql_help.c:2435
+msgid "join_proc"
+msgstr "Join-Funktion"
+
+#: sql_help.c:767 sql_help.c:779 sql_help.c:2452
+msgid "strategy_number"
+msgstr "Strategienummer"
+
+#: sql_help.c:769 sql_help.c:770 sql_help.c:773 sql_help.c:774 sql_help.c:780
+#: sql_help.c:781 sql_help.c:783 sql_help.c:784 sql_help.c:2454 sql_help.c:2455
+#: sql_help.c:2458 sql_help.c:2459
+msgid "op_type"
+msgstr "Optyp"
+
+#: sql_help.c:771 sql_help.c:2456
+msgid "sort_family_name"
+msgstr "Sortierfamilienname"
+
+#: sql_help.c:772 sql_help.c:782 sql_help.c:2457
+msgid "support_number"
+msgstr "Unterst-Nummer"
+
+#: sql_help.c:776 sql_help.c:2073 sql_help.c:2461 sql_help.c:2968
+#: sql_help.c:2970
+msgid "argument_type"
+msgstr "Argumenttyp"
+
+#: sql_help.c:807 sql_help.c:810 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:1017 sql_help.c:1056 sql_help.c:1496 sql_help.c:1499
+#: sql_help.c:1674 sql_help.c:1723 sql_help.c:1792 sql_help.c:1817
+#: sql_help.c:1830 sql_help.c:1845 sql_help.c:1902 sql_help.c:1908
+#: sql_help.c:2244 sql_help.c:2256 sql_help.c:2368 sql_help.c:2408
+#: sql_help.c:2485 sql_help.c:2528 sql_help.c:2584 sql_help.c:2635
+#: sql_help.c:2666 sql_help.c:2771 sql_help.c:2788 sql_help.c:2801
+#: sql_help.c:2874 sql_help.c:2994 sql_help.c:3171 sql_help.c:3394
+#: sql_help.c:3443 sql_help.c:3549 sql_help.c:3737 sql_help.c:3742
+#: sql_help.c:3788 sql_help.c:3820 sql_help.c:4085 sql_help.c:4090
+#: sql_help.c:4193 sql_help.c:4300 sql_help.c:4302 sql_help.c:4351
+#: sql_help.c:4390 sql_help.c:4539 sql_help.c:4541 sql_help.c:4590
+#: sql_help.c:4624 sql_help.c:4675 sql_help.c:4759 sql_help.c:4761
+#: sql_help.c:4810
+msgid "table_name"
+msgstr "Tabellenname"
+
+#: sql_help.c:812 sql_help.c:2487
+msgid "using_expression"
+msgstr "Using-Ausdruck"
+
+#: sql_help.c:813 sql_help.c:2488
+msgid "check_expression"
+msgstr "Check-Ausdruck"
+
+#: sql_help.c:887 sql_help.c:2529
+msgid "publication_parameter"
+msgstr "Publikationsparameter"
+
+#: sql_help.c:930 sql_help.c:1586 sql_help.c:2347 sql_help.c:2561
+#: sql_help.c:3105
+msgid "password"
+msgstr "Passwort"
+
+#: sql_help.c:931 sql_help.c:1587 sql_help.c:2348 sql_help.c:2562
+#: sql_help.c:3106
+msgid "timestamp"
+msgstr "Zeit"
+
+#: sql_help.c:935 sql_help.c:939 sql_help.c:942 sql_help.c:945 sql_help.c:1591
+#: sql_help.c:1595 sql_help.c:1598 sql_help.c:1601 sql_help.c:3747
+#: sql_help.c:4095
+msgid "database_name"
+msgstr "Datenbankname"
+
+#: sql_help.c:1050 sql_help.c:2630
+msgid "increment"
+msgstr "Inkrement"
+
+#: sql_help.c:1051 sql_help.c:2631
+msgid "minvalue"
+msgstr "Minwert"
+
+#: sql_help.c:1052 sql_help.c:2632
+msgid "maxvalue"
+msgstr "Maxwert"
+
+#: sql_help.c:1053 sql_help.c:2633 sql_help.c:4298 sql_help.c:4388
+#: sql_help.c:4537 sql_help.c:4692 sql_help.c:4757
+msgid "start"
+msgstr "Start"
+
+#: sql_help.c:1054 sql_help.c:1303
+msgid "restart"
+msgstr "Restart"
+
+#: sql_help.c:1055 sql_help.c:2634
+msgid "cache"
+msgstr "Cache"
+
+#: sql_help.c:1099
+msgid "new_target"
+msgstr "neues_Ziel"
+
+#: sql_help.c:1115 sql_help.c:2678
+msgid "conninfo"
+msgstr "Verbindungsinfo"
+
+#: sql_help.c:1117 sql_help.c:2679
+msgid "publication_name"
+msgstr "Publikationsname"
+
+#: sql_help.c:1118
+msgid "set_publication_option"
+msgstr "SET-Publikationsoption"
+
+#: sql_help.c:1121
+msgid "refresh_option"
+msgstr "Refresh-Option"
+
+#: sql_help.c:1126 sql_help.c:2680
+msgid "subscription_parameter"
+msgstr "Subskriptionsparameter"
+
+#: sql_help.c:1280 sql_help.c:1283
+msgid "partition_name"
+msgstr "Partitionsname"
+
+#: sql_help.c:1281 sql_help.c:2261 sql_help.c:2806
+msgid "partition_bound_spec"
+msgstr "Partitionsbegrenzungsangabe"
+
+#: sql_help.c:1300 sql_help.c:1347 sql_help.c:2820
+msgid "sequence_options"
+msgstr "Sequenzoptionen"
+
+#: sql_help.c:1302
+msgid "sequence_option"
+msgstr "Sequenzoption"
+
+#: sql_help.c:1314
+msgid "table_constraint_using_index"
+msgstr "Tabellen-Constraint-für-Index"
+
+#: sql_help.c:1322 sql_help.c:1323 sql_help.c:1324 sql_help.c:1325
+msgid "rewrite_rule_name"
+msgstr "Regelname"
+
+#: sql_help.c:1336 sql_help.c:2845
+msgid "and partition_bound_spec is:"
+msgstr "und Partitionsbegrenzungsangabe Folgendes ist:"
+
+#: sql_help.c:1337 sql_help.c:1338 sql_help.c:1339 sql_help.c:2846
+#: sql_help.c:2847 sql_help.c:2848
+msgid "partition_bound_expr"
+msgstr "Partitionsbegrenzungsausdruck"
+
+#: sql_help.c:1340 sql_help.c:1341 sql_help.c:2849 sql_help.c:2850
+msgid "numeric_literal"
+msgstr "numerische_Konstante"
+
+#: sql_help.c:1342
+msgid "and column_constraint is:"
+msgstr "und Spalten-Constraint Folgendes ist:"
+
+#: sql_help.c:1345 sql_help.c:2268 sql_help.c:2302 sql_help.c:2508
+#: sql_help.c:2818
+msgid "default_expr"
+msgstr "Vorgabeausdruck"
+
+#: sql_help.c:1346 sql_help.c:2269 sql_help.c:2819
+msgid "generation_expr"
+msgstr "Generierungsausdruck"
+
+#: sql_help.c:1348 sql_help.c:1349 sql_help.c:1358 sql_help.c:1360
+#: sql_help.c:1364 sql_help.c:2821 sql_help.c:2822 sql_help.c:2831
+#: sql_help.c:2833 sql_help.c:2837
+msgid "index_parameters"
+msgstr "Indexparameter"
+
+#: sql_help.c:1350 sql_help.c:1367 sql_help.c:2823 sql_help.c:2840
+msgid "reftable"
+msgstr "Reftabelle"
+
+#: sql_help.c:1351 sql_help.c:1368 sql_help.c:2824 sql_help.c:2841
+msgid "refcolumn"
+msgstr "Refspalte"
+
+#: sql_help.c:1352 sql_help.c:1353 sql_help.c:1369 sql_help.c:1370
+#: sql_help.c:2825 sql_help.c:2826 sql_help.c:2842 sql_help.c:2843
+msgid "referential_action"
+msgstr "Fremdschlüsselaktion"
+
+#: sql_help.c:1354 sql_help.c:2270 sql_help.c:2827
+msgid "and table_constraint is:"
+msgstr "und Tabellen-Constraint Folgendes ist:"
+
+#: sql_help.c:1362 sql_help.c:2835
+msgid "exclude_element"
+msgstr "Exclude-Element"
+
+#: sql_help.c:1363 sql_help.c:2836 sql_help.c:4296 sql_help.c:4386
+#: sql_help.c:4535 sql_help.c:4690 sql_help.c:4755
+msgid "operator"
+msgstr "Operator"
+
+#: sql_help.c:1365 sql_help.c:2380 sql_help.c:2838
+msgid "predicate"
+msgstr "Prädikat"
+
+#: sql_help.c:1371
+msgid "and table_constraint_using_index is:"
+msgstr "und Tabellen-Constraint-für-Index Folgendes ist:"
+
+#: sql_help.c:1374 sql_help.c:2851
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "Indexparameter bei UNIQUE-, PRIMARY KEY- und EXCLUDE-Constraints sind:"
+
+#: sql_help.c:1379 sql_help.c:2856
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "Exclude-Element in einem EXCLUDE-Constraint ist:"
+
+#: sql_help.c:1382 sql_help.c:2373 sql_help.c:2783 sql_help.c:2796
+#: sql_help.c:2810 sql_help.c:2859 sql_help.c:3833
+msgid "opclass"
+msgstr "Opklasse"
+
+#: sql_help.c:1398 sql_help.c:1401 sql_help.c:2894
+msgid "tablespace_option"
+msgstr "Tablespace-Option"
+
+#: sql_help.c:1422 sql_help.c:1425 sql_help.c:1431 sql_help.c:1435
+msgid "token_type"
+msgstr "Tokentyp"
+
+#: sql_help.c:1423 sql_help.c:1426
+msgid "dictionary_name"
+msgstr "Wörterbuchname"
+
+#: sql_help.c:1428 sql_help.c:1432
+msgid "old_dictionary"
+msgstr "altes_Wörterbuch"
+
+#: sql_help.c:1429 sql_help.c:1433
+msgid "new_dictionary"
+msgstr "neues_Wörterbuch"
+
+#: sql_help.c:1528 sql_help.c:1542 sql_help.c:1545 sql_help.c:1546
+#: sql_help.c:3045
+msgid "attribute_name"
+msgstr "Attributname"
+
+#: sql_help.c:1529
+msgid "new_attribute_name"
+msgstr "neuer_Attributname"
+
+#: sql_help.c:1533 sql_help.c:1537
+msgid "new_enum_value"
+msgstr "neuer_Enum-Wert"
+
+#: sql_help.c:1534
+msgid "neighbor_enum_value"
+msgstr "Nachbar-Enum-Wert"
+
+#: sql_help.c:1536
+msgid "existing_enum_value"
+msgstr "existierender_Enum-Wert"
+
+#: sql_help.c:1539
+msgid "property"
+msgstr "Eigenschaft"
+
+#: sql_help.c:1614 sql_help.c:2253 sql_help.c:2262 sql_help.c:2646
+#: sql_help.c:3123 sql_help.c:3574 sql_help.c:3753 sql_help.c:3789
+#: sql_help.c:4101
+msgid "server_name"
+msgstr "Servername"
+
+#: sql_help.c:1646 sql_help.c:1649 sql_help.c:3138
+msgid "view_option_name"
+msgstr "Sichtoptionsname"
+
+#: sql_help.c:1647 sql_help.c:3139
+msgid "view_option_value"
+msgstr "Sichtoptionswert"
+
+#: sql_help.c:1668 sql_help.c:1669 sql_help.c:4662 sql_help.c:4663
+msgid "table_and_columns"
+msgstr "Tabelle-und-Spalten"
+
+#: sql_help.c:1670 sql_help.c:1914 sql_help.c:3622 sql_help.c:3966
+#: sql_help.c:4664
+msgid "where option can be one of:"
+msgstr "wobei Option eine der folgenden sein kann:"
+
+#: sql_help.c:1671 sql_help.c:1672 sql_help.c:1916 sql_help.c:1919
+#: sql_help.c:2098 sql_help.c:3623 sql_help.c:3624 sql_help.c:3625
+#: sql_help.c:3626 sql_help.c:3627 sql_help.c:3628 sql_help.c:3629
+#: sql_help.c:3630 sql_help.c:4665 sql_help.c:4666 sql_help.c:4667
+#: sql_help.c:4668 sql_help.c:4669 sql_help.c:4670 sql_help.c:4671
+#: sql_help.c:4672
+msgid "boolean"
+msgstr "boolean"
+
+#: sql_help.c:1673 sql_help.c:4674
+msgid "and table_and_columns is:"
+msgstr "und Tabelle-und-Spalten Folgendes ist:"
+
+#: sql_help.c:1689 sql_help.c:4446 sql_help.c:4448 sql_help.c:4472
+msgid "transaction_mode"
+msgstr "Transaktionsmodus"
+
+#: sql_help.c:1690 sql_help.c:4449 sql_help.c:4473
+msgid "where transaction_mode is one of:"
+msgstr "wobei Transaktionsmodus Folgendes sein kann:"
+
+#: sql_help.c:1699 sql_help.c:4306 sql_help.c:4315 sql_help.c:4319
+#: sql_help.c:4323 sql_help.c:4326 sql_help.c:4545 sql_help.c:4554
+#: sql_help.c:4558 sql_help.c:4562 sql_help.c:4565 sql_help.c:4765
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4782 sql_help.c:4785
+msgid "argument"
+msgstr "Argument"
+
+#: sql_help.c:1789
+msgid "relation_name"
+msgstr "Relationsname"
+
+#: sql_help.c:1794 sql_help.c:3749 sql_help.c:4097
+msgid "domain_name"
+msgstr "Domänenname"
+
+#: sql_help.c:1816
+msgid "policy_name"
+msgstr "Policy-Name"
+
+#: sql_help.c:1829
+msgid "rule_name"
+msgstr "Regelname"
+
+#: sql_help.c:1848
+msgid "text"
+msgstr "Text"
+
+#: sql_help.c:1873 sql_help.c:3933 sql_help.c:4138
+msgid "transaction_id"
+msgstr "Transaktions-ID"
+
+#: sql_help.c:1904 sql_help.c:1911 sql_help.c:3859
+msgid "filename"
+msgstr "Dateiname"
+
+#: sql_help.c:1905 sql_help.c:1912 sql_help.c:2586 sql_help.c:2587
+#: sql_help.c:2588
+msgid "command"
+msgstr "Befehl"
+
+#: sql_help.c:1907 sql_help.c:2585 sql_help.c:2997 sql_help.c:3174
+#: sql_help.c:3843 sql_help.c:4289 sql_help.c:4291 sql_help.c:4379
+#: sql_help.c:4381 sql_help.c:4528 sql_help.c:4530 sql_help.c:4633
+#: sql_help.c:4748 sql_help.c:4750
+msgid "condition"
+msgstr "Bedingung"
+
+#: sql_help.c:1910 sql_help.c:2414 sql_help.c:2880 sql_help.c:3140
+#: sql_help.c:3158 sql_help.c:3824
+msgid "query"
+msgstr "Anfrage"
+
+#: sql_help.c:1915
+msgid "format_name"
+msgstr "Formatname"
+
+#: sql_help.c:1917
+msgid "delimiter_character"
+msgstr "Trennzeichen"
+
+#: sql_help.c:1918
+msgid "null_string"
+msgstr "Null-Zeichenkette"
+
+#: sql_help.c:1920
+msgid "quote_character"
+msgstr "Quote-Zeichen"
+
+#: sql_help.c:1921
+msgid "escape_character"
+msgstr "Escape-Zeichen"
+
+#: sql_help.c:1925
+msgid "encoding_name"
+msgstr "Kodierungsname"
+
+#: sql_help.c:1936
+msgid "access_method_type"
+msgstr "Zugriffsmethodentyp"
+
+#: sql_help.c:2007 sql_help.c:2026 sql_help.c:2029
+msgid "arg_data_type"
+msgstr "Arg-Datentyp"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "sfunc"
+msgstr "Übergangsfunktion"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "state_data_type"
+msgstr "Zustandsdatentyp"
+
+#: sql_help.c:2010 sql_help.c:2032 sql_help.c:2040
+msgid "state_data_size"
+msgstr "Zustandsdatengröße"
+
+#: sql_help.c:2011 sql_help.c:2033 sql_help.c:2041
+msgid "ffunc"
+msgstr "Abschlussfunktion"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "combinefunc"
+msgstr "Combine-Funktion"
+
+#: sql_help.c:2013 sql_help.c:2043
+msgid "serialfunc"
+msgstr "Serialisierungsfunktion"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "deserialfunc"
+msgstr "Deserialisierungsfunktion"
+
+#: sql_help.c:2015 sql_help.c:2034 sql_help.c:2045
+msgid "initial_condition"
+msgstr "Anfangswert"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "msfunc"
+msgstr "Moving-Übergangsfunktion"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "minvfunc"
+msgstr "Moving-Inversfunktion"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mstate_data_type"
+msgstr "Moving-Zustandsdatentyp"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "mstate_data_size"
+msgstr "Moving-Zustandsdatengröße"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "mffunc"
+msgstr "Moving-Abschlussfunktion"
+
+#: sql_help.c:2021 sql_help.c:2051
+msgid "minitial_condition"
+msgstr "Moving-Anfangswert"
+
+#: sql_help.c:2022 sql_help.c:2052
+msgid "sort_operator"
+msgstr "Sortieroperator"
+
+#: sql_help.c:2035
+msgid "or the old syntax"
+msgstr "oder die alte Syntax"
+
+#: sql_help.c:2037
+msgid "base_type"
+msgstr "Basistyp"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "locale"
+msgstr "Locale"
+
+#: sql_help.c:2095 sql_help.c:2136
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2096 sql_help.c:2137
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2097 sql_help.c:4191
+msgid "provider"
+msgstr "Provider"
+
+#: sql_help.c:2099 sql_help.c:2191
+msgid "version"
+msgstr "Version"
+
+#: sql_help.c:2101
+msgid "existing_collation"
+msgstr "existierende_Sortierfolge"
+
+#: sql_help.c:2111
+msgid "source_encoding"
+msgstr "Quellkodierung"
+
+#: sql_help.c:2112
+msgid "dest_encoding"
+msgstr "Zielkodierung"
+
+#: sql_help.c:2133 sql_help.c:2920
+msgid "template"
+msgstr "Vorlage"
+
+#: sql_help.c:2134
+msgid "encoding"
+msgstr "Kodierung"
+
+#: sql_help.c:2161
+msgid "constraint"
+msgstr "Constraint"
+
+#: sql_help.c:2162
+msgid "where constraint is:"
+msgstr "wobei Constraint Folgendes ist:"
+
+#: sql_help.c:2176 sql_help.c:2583 sql_help.c:2993
+msgid "event"
+msgstr "Ereignis"
+
+#: sql_help.c:2177
+msgid "filter_variable"
+msgstr "Filtervariable"
+
+#: sql_help.c:2265 sql_help.c:2815
+msgid "where column_constraint is:"
+msgstr "wobei Spalten-Constraint Folgendes ist:"
+
+#: sql_help.c:2303
+msgid "rettype"
+msgstr "Rückgabetyp"
+
+#: sql_help.c:2305
+msgid "column_type"
+msgstr "Spaltentyp"
+
+#: sql_help.c:2314 sql_help.c:2514
+msgid "definition"
+msgstr "Definition"
+
+#: sql_help.c:2315 sql_help.c:2515
+msgid "obj_file"
+msgstr "Objektdatei"
+
+#: sql_help.c:2316 sql_help.c:2516
+msgid "link_symbol"
+msgstr "Linksymbol"
+
+#: sql_help.c:2354 sql_help.c:2568 sql_help.c:3112
+msgid "uid"
+msgstr "Uid"
+
+#: sql_help.c:2369 sql_help.c:2410 sql_help.c:2784 sql_help.c:2797
+#: sql_help.c:2811 sql_help.c:2876
+msgid "method"
+msgstr "Methode"
+
+#: sql_help.c:2374
+msgid "opclass_parameter"
+msgstr "Opklassen-Parameter"
+
+#: sql_help.c:2391
+msgid "call_handler"
+msgstr "Handler"
+
+#: sql_help.c:2392
+msgid "inline_handler"
+msgstr "Inline-Handler"
+
+#: sql_help.c:2393
+msgid "valfunction"
+msgstr "Valfunktion"
+
+#: sql_help.c:2432
+msgid "com_op"
+msgstr "Kommutator-Op"
+
+#: sql_help.c:2433
+msgid "neg_op"
+msgstr "Umkehrungs-Op"
+
+#: sql_help.c:2451
+msgid "family_name"
+msgstr "Familienname"
+
+#: sql_help.c:2462
+msgid "storage_type"
+msgstr "Storage-Typ"
+
+#: sql_help.c:2589 sql_help.c:3000
+msgid "where event can be one of:"
+msgstr "wobei Ereignis eins der folgenden sein kann:"
+
+#: sql_help.c:2608 sql_help.c:2610
+msgid "schema_element"
+msgstr "Schemaelement"
+
+#: sql_help.c:2647
+msgid "server_type"
+msgstr "Servertyp"
+
+#: sql_help.c:2648
+msgid "server_version"
+msgstr "Serverversion"
+
+#: sql_help.c:2649 sql_help.c:3751 sql_help.c:4099
+msgid "fdw_name"
+msgstr "FDW-Name"
+
+#: sql_help.c:2662
+msgid "statistics_name"
+msgstr "Statistikname"
+
+#: sql_help.c:2663
+msgid "statistics_kind"
+msgstr "Statistikart"
+
+#: sql_help.c:2677
+msgid "subscription_name"
+msgstr "Subskriptionsname"
+
+#: sql_help.c:2777
+msgid "source_table"
+msgstr "Quelltabelle"
+
+#: sql_help.c:2778
+msgid "like_option"
+msgstr "Like-Option"
+
+#: sql_help.c:2844
+msgid "and like_option is:"
+msgstr "und Like-Option Folgendes ist:"
+
+#: sql_help.c:2893
+msgid "directory"
+msgstr "Verzeichnis"
+
+#: sql_help.c:2907
+msgid "parser_name"
+msgstr "Parser-Name"
+
+#: sql_help.c:2908
+msgid "source_config"
+msgstr "Quellkonfig"
+
+#: sql_help.c:2937
+msgid "start_function"
+msgstr "Startfunktion"
+
+#: sql_help.c:2938
+msgid "gettoken_function"
+msgstr "Gettext-Funktion"
+
+#: sql_help.c:2939
+msgid "end_function"
+msgstr "Endfunktion"
+
+#: sql_help.c:2940
+msgid "lextypes_function"
+msgstr "Lextypenfunktion"
+
+#: sql_help.c:2941
+msgid "headline_function"
+msgstr "Headline-Funktion"
+
+#: sql_help.c:2953
+msgid "init_function"
+msgstr "Init-Funktion"
+
+#: sql_help.c:2954
+msgid "lexize_function"
+msgstr "Lexize-Funktion"
+
+#: sql_help.c:2967
+msgid "from_sql_function_name"
+msgstr "From-SQL-Funktionsname"
+
+#: sql_help.c:2969
+msgid "to_sql_function_name"
+msgstr "To-SQL-Funktionsname"
+
+#: sql_help.c:2995
+msgid "referenced_table_name"
+msgstr "verwiesener_Tabellenname"
+
+#: sql_help.c:2996
+msgid "transition_relation_name"
+msgstr "Übergangsrelationsname"
+
+#: sql_help.c:2999
+msgid "arguments"
+msgstr "Argumente"
+
+#: sql_help.c:3049 sql_help.c:4224
+msgid "label"
+msgstr "Label"
+
+#: sql_help.c:3051
+msgid "subtype"
+msgstr "Untertyp"
+
+#: sql_help.c:3052
+msgid "subtype_operator_class"
+msgstr "Untertyp-Operatorklasse"
+
+#: sql_help.c:3054
+msgid "canonical_function"
+msgstr "Canonical-Funktion"
+
+#: sql_help.c:3055
+msgid "subtype_diff_function"
+msgstr "Untertyp-Diff-Funktion"
+
+#: sql_help.c:3057
+msgid "input_function"
+msgstr "Eingabefunktion"
+
+#: sql_help.c:3058
+msgid "output_function"
+msgstr "Ausgabefunktion"
+
+#: sql_help.c:3059
+msgid "receive_function"
+msgstr "Empfangsfunktion"
+
+#: sql_help.c:3060
+msgid "send_function"
+msgstr "Sendefunktion"
+
+#: sql_help.c:3061
+msgid "type_modifier_input_function"
+msgstr "Typmod-Eingabefunktion"
+
+#: sql_help.c:3062
+msgid "type_modifier_output_function"
+msgstr "Typmod-Ausgabefunktion"
+
+#: sql_help.c:3063
+msgid "analyze_function"
+msgstr "Analyze-Funktion"
+
+#: sql_help.c:3064
+msgid "internallength"
+msgstr "interne_Länge"
+
+#: sql_help.c:3065
+msgid "alignment"
+msgstr "Ausrichtung"
+
+#: sql_help.c:3066
+msgid "storage"
+msgstr "Speicherung"
+
+#: sql_help.c:3067
+msgid "like_type"
+msgstr "wie_Typ"
+
+#: sql_help.c:3068
+msgid "category"
+msgstr "Kategorie"
+
+#: sql_help.c:3069
+msgid "preferred"
+msgstr "bevorzugt"
+
+#: sql_help.c:3070
+msgid "default"
+msgstr "Vorgabewert"
+
+#: sql_help.c:3071
+msgid "element"
+msgstr "Element"
+
+#: sql_help.c:3072
+msgid "delimiter"
+msgstr "Trennzeichen"
+
+#: sql_help.c:3073
+msgid "collatable"
+msgstr "sortierbar"
+
+#: sql_help.c:3170 sql_help.c:3819 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4623 sql_help.c:4743
+msgid "with_query"
+msgstr "With-Anfrage"
+
+#: sql_help.c:3172 sql_help.c:3821 sql_help.c:4303 sql_help.c:4309
+#: sql_help.c:4312 sql_help.c:4316 sql_help.c:4320 sql_help.c:4328
+#: sql_help.c:4542 sql_help.c:4548 sql_help.c:4551 sql_help.c:4555
+#: sql_help.c:4559 sql_help.c:4567 sql_help.c:4625 sql_help.c:4762
+#: sql_help.c:4768 sql_help.c:4771 sql_help.c:4775 sql_help.c:4779
+#: sql_help.c:4787
+msgid "alias"
+msgstr "Alias"
+
+#: sql_help.c:3173 sql_help.c:4288 sql_help.c:4330 sql_help.c:4332
+#: sql_help.c:4378 sql_help.c:4527 sql_help.c:4569 sql_help.c:4571
+#: sql_help.c:4632 sql_help.c:4747 sql_help.c:4789 sql_help.c:4791
+msgid "from_item"
+msgstr "From-Element"
+
+#: sql_help.c:3175 sql_help.c:3656 sql_help.c:3900 sql_help.c:4634
+msgid "cursor_name"
+msgstr "Cursor-Name"
+
+#: sql_help.c:3176 sql_help.c:3827 sql_help.c:4635
+msgid "output_expression"
+msgstr "Ausgabeausdruck"
+
+#: sql_help.c:3177 sql_help.c:3828 sql_help.c:4287 sql_help.c:4376
+#: sql_help.c:4526 sql_help.c:4636 sql_help.c:4746
+msgid "output_name"
+msgstr "Ausgabename"
+
+#: sql_help.c:3193
+msgid "code"
+msgstr "Code"
+
+#: sql_help.c:3598
+msgid "parameter"
+msgstr "Parameter"
+
+#: sql_help.c:3620 sql_help.c:3621 sql_help.c:3925
+msgid "statement"
+msgstr "Anweisung"
+
+#: sql_help.c:3655 sql_help.c:3899
+msgid "direction"
+msgstr "Richtung"
+
+#: sql_help.c:3657 sql_help.c:3901
+msgid "where direction can be empty or one of:"
+msgstr "wobei Richtung leer sein kann oder Folgendes:"
+
+#: sql_help.c:3658 sql_help.c:3659 sql_help.c:3660 sql_help.c:3661
+#: sql_help.c:3662 sql_help.c:3902 sql_help.c:3903 sql_help.c:3904
+#: sql_help.c:3905 sql_help.c:3906 sql_help.c:4297 sql_help.c:4299
+#: sql_help.c:4387 sql_help.c:4389 sql_help.c:4536 sql_help.c:4538
+#: sql_help.c:4691 sql_help.c:4693 sql_help.c:4756 sql_help.c:4758
+msgid "count"
+msgstr "Anzahl"
+
+#: sql_help.c:3744 sql_help.c:4092
+msgid "sequence_name"
+msgstr "Sequenzname"
+
+#: sql_help.c:3757 sql_help.c:4105
+msgid "arg_name"
+msgstr "Argname"
+
+#: sql_help.c:3758 sql_help.c:4106
+msgid "arg_type"
+msgstr "Argtyp"
+
+#: sql_help.c:3763 sql_help.c:4111
+msgid "loid"
+msgstr "Large-Object-OID"
+
+#: sql_help.c:3787
+msgid "remote_schema"
+msgstr "fernes_Schema"
+
+#: sql_help.c:3790
+msgid "local_schema"
+msgstr "lokales_Schema"
+
+#: sql_help.c:3825
+msgid "conflict_target"
+msgstr "Konfliktziel"
+
+#: sql_help.c:3826
+msgid "conflict_action"
+msgstr "Konfliktaktion"
+
+#: sql_help.c:3829
+msgid "where conflict_target can be one of:"
+msgstr "wobei Konfliktziel Folgendes sein kann:"
+
+#: sql_help.c:3830
+msgid "index_column_name"
+msgstr "Indexspaltenname"
+
+#: sql_help.c:3831
+msgid "index_expression"
+msgstr "Indexausdruck"
+
+#: sql_help.c:3834
+msgid "index_predicate"
+msgstr "Indexprädikat"
+
+#: sql_help.c:3836
+msgid "and conflict_action is one of:"
+msgstr "und Konfliktaktion Folgendes sein kann:"
+
+#: sql_help.c:3842 sql_help.c:4631
+msgid "sub-SELECT"
+msgstr "Sub-SELECT"
+
+#: sql_help.c:3851 sql_help.c:3914 sql_help.c:4607
+msgid "channel"
+msgstr "Kanal"
+
+#: sql_help.c:3873
+msgid "lockmode"
+msgstr "Sperrmodus"
+
+#: sql_help.c:3874
+msgid "where lockmode is one of:"
+msgstr "wobei Sperrmodus Folgendes sein kann:"
+
+#: sql_help.c:3915
+msgid "payload"
+msgstr "Payload"
+
+#: sql_help.c:3942
+msgid "old_role"
+msgstr "alte_Rolle"
+
+#: sql_help.c:3943
+msgid "new_role"
+msgstr "neue_Rolle"
+
+#: sql_help.c:3974 sql_help.c:4146 sql_help.c:4154
+msgid "savepoint_name"
+msgstr "Sicherungspunktsname"
+
+#: sql_help.c:4290 sql_help.c:4342 sql_help.c:4529 sql_help.c:4581
+#: sql_help.c:4749 sql_help.c:4801
+msgid "grouping_element"
+msgstr "Gruppierelement"
+
+#: sql_help.c:4292 sql_help.c:4382 sql_help.c:4531 sql_help.c:4751
+msgid "window_name"
+msgstr "Fenstername"
+
+#: sql_help.c:4293 sql_help.c:4383 sql_help.c:4532 sql_help.c:4752
+msgid "window_definition"
+msgstr "Fensterdefinition"
+
+#: sql_help.c:4294 sql_help.c:4308 sql_help.c:4346 sql_help.c:4384
+#: sql_help.c:4533 sql_help.c:4547 sql_help.c:4585 sql_help.c:4753
+#: sql_help.c:4767 sql_help.c:4805
+msgid "select"
+msgstr "Select"
+
+#: sql_help.c:4301 sql_help.c:4540 sql_help.c:4760
+msgid "where from_item can be one of:"
+msgstr "wobei From-Element Folgendes sein kann:"
+
+#: sql_help.c:4304 sql_help.c:4310 sql_help.c:4313 sql_help.c:4317
+#: sql_help.c:4329 sql_help.c:4543 sql_help.c:4549 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4568 sql_help.c:4763 sql_help.c:4769
+#: sql_help.c:4772 sql_help.c:4776 sql_help.c:4788
+msgid "column_alias"
+msgstr "Spaltenalias"
+
+#: sql_help.c:4305 sql_help.c:4544 sql_help.c:4764
+msgid "sampling_method"
+msgstr "Stichprobenmethode"
+
+#: sql_help.c:4307 sql_help.c:4546 sql_help.c:4766
+msgid "seed"
+msgstr "Startwert"
+
+#: sql_help.c:4311 sql_help.c:4344 sql_help.c:4550 sql_help.c:4583
+#: sql_help.c:4770 sql_help.c:4803
+msgid "with_query_name"
+msgstr "With-Anfragename"
+
+#: sql_help.c:4321 sql_help.c:4324 sql_help.c:4327 sql_help.c:4560
+#: sql_help.c:4563 sql_help.c:4566 sql_help.c:4780 sql_help.c:4783
+#: sql_help.c:4786
+msgid "column_definition"
+msgstr "Spaltendefinition"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_type"
+msgstr "Verbundtyp"
+
+#: sql_help.c:4333 sql_help.c:4572 sql_help.c:4792
+msgid "join_condition"
+msgstr "Verbundbedingung"
+
+#: sql_help.c:4334 sql_help.c:4573 sql_help.c:4793
+msgid "join_column"
+msgstr "Verbundspalte"
+
+#: sql_help.c:4335 sql_help.c:4574 sql_help.c:4794
+msgid "and grouping_element can be one of:"
+msgstr "und Gruppierelement eins der folgenden sein kann:"
+
+#: sql_help.c:4343 sql_help.c:4582 sql_help.c:4802
+msgid "and with_query is:"
+msgstr "und With-Anfrage ist:"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "values"
+msgstr "values"
+
+#: sql_help.c:4348 sql_help.c:4587 sql_help.c:4807
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4349 sql_help.c:4588 sql_help.c:4808
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4350 sql_help.c:4589 sql_help.c:4809
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4377
+msgid "new_table"
+msgstr "neue_Tabelle"
+
+#: sql_help.c:4402
+msgid "timezone"
+msgstr "Zeitzone"
+
+#: sql_help.c:4447
+msgid "snapshot_id"
+msgstr "Snapshot-ID"
+
+#: sql_help.c:4689
+msgid "sort_expression"
+msgstr "Sortierausdruck"
+
+#: sql_help.c:4816 sql_help.c:5794
+msgid "abort the current transaction"
+msgstr "bricht die aktuelle Transaktion ab"
+
+#: sql_help.c:4822
+msgid "change the definition of an aggregate function"
+msgstr "ändert die Definition einer Aggregatfunktion"
+
+#: sql_help.c:4828
+msgid "change the definition of a collation"
+msgstr "ändert die Definition einer Sortierfolge"
+
+#: sql_help.c:4834
+msgid "change the definition of a conversion"
+msgstr "ändert die Definition einer Zeichensatzkonversion"
+
+#: sql_help.c:4840
+msgid "change a database"
+msgstr "ändert eine Datenbank"
+
+#: sql_help.c:4846
+msgid "define default access privileges"
+msgstr "definiert vorgegebene Zugriffsprivilegien"
+
+#: sql_help.c:4852
+msgid "change the definition of a domain"
+msgstr "ändert die Definition einer Domäne"
+
+#: sql_help.c:4858
+msgid "change the definition of an event trigger"
+msgstr "ändert die Definition eines Ereignistriggers"
+
+#: sql_help.c:4864
+msgid "change the definition of an extension"
+msgstr "ändert die Definition einer Erweiterung"
+
+#: sql_help.c:4870
+msgid "change the definition of a foreign-data wrapper"
+msgstr "ändert die Definition eines Fremddaten-Wrappers"
+
+#: sql_help.c:4876
+msgid "change the definition of a foreign table"
+msgstr "ändert die Definition einer Fremdtabelle"
+
+#: sql_help.c:4882
+msgid "change the definition of a function"
+msgstr "ändert die Definition einer Funktion"
+
+#: sql_help.c:4888
+msgid "change role name or membership"
+msgstr "ändert Rollenname oder -mitglieder"
+
+#: sql_help.c:4894
+msgid "change the definition of an index"
+msgstr "ändert die Definition eines Index"
+
+#: sql_help.c:4900
+msgid "change the definition of a procedural language"
+msgstr "ändert die Definition einer prozeduralen Sprache"
+
+#: sql_help.c:4906
+msgid "change the definition of a large object"
+msgstr "ändert die Definition eines Large Object"
+
+#: sql_help.c:4912
+msgid "change the definition of a materialized view"
+msgstr "ändert die Definition einer materialisierten Sicht"
+
+#: sql_help.c:4918
+msgid "change the definition of an operator"
+msgstr "ändert die Definition eines Operators"
+
+#: sql_help.c:4924
+msgid "change the definition of an operator class"
+msgstr "ändert die Definition einer Operatorklasse"
+
+#: sql_help.c:4930
+msgid "change the definition of an operator family"
+msgstr "ändert die Definition einer Operatorfamilie"
+
+#: sql_help.c:4936
+msgid "change the definition of a row level security policy"
+msgstr "ändert die Definition einer Policy für Sicherheit auf Zeilenebene"
+
+#: sql_help.c:4942
+msgid "change the definition of a procedure"
+msgstr "ändert die Definition einer Prozedur"
+
+#: sql_help.c:4948
+msgid "change the definition of a publication"
+msgstr "ändert die Definition einer Publikation"
+
+#: sql_help.c:4954 sql_help.c:5056
+msgid "change a database role"
+msgstr "ändert eine Datenbankrolle"
+
+#: sql_help.c:4960
+msgid "change the definition of a routine"
+msgstr "ändert die Definition einer Routine"
+
+#: sql_help.c:4966
+msgid "change the definition of a rule"
+msgstr "ändert die Definition einer Regel"
+
+#: sql_help.c:4972
+msgid "change the definition of a schema"
+msgstr "ändert die Definition eines Schemas"
+
+#: sql_help.c:4978
+msgid "change the definition of a sequence generator"
+msgstr "ändert die Definition eines Sequenzgenerators"
+
+#: sql_help.c:4984
+msgid "change the definition of a foreign server"
+msgstr "ändert die Definition eines Fremdservers"
+
+#: sql_help.c:4990
+msgid "change the definition of an extended statistics object"
+msgstr "ändert die Definition eines erweiterten Statistikobjekts"
+
+#: sql_help.c:4996
+msgid "change the definition of a subscription"
+msgstr "ändert die Definition einer Subskription"
+
+#: sql_help.c:5002
+msgid "change a server configuration parameter"
+msgstr "ändert einen Server-Konfigurationsparameter"
+
+#: sql_help.c:5008
+msgid "change the definition of a table"
+msgstr "ändert die Definition einer Tabelle"
+
+#: sql_help.c:5014
+msgid "change the definition of a tablespace"
+msgstr "ändert die Definition eines Tablespace"
+
+#: sql_help.c:5020
+msgid "change the definition of a text search configuration"
+msgstr "ändert die Definition einer Textsuchekonfiguration"
+
+#: sql_help.c:5026
+msgid "change the definition of a text search dictionary"
+msgstr "ändert die Definition eines Textsuchewörterbuchs"
+
+#: sql_help.c:5032
+msgid "change the definition of a text search parser"
+msgstr "ändert die Definition eines Textsucheparsers"
+
+#: sql_help.c:5038
+msgid "change the definition of a text search template"
+msgstr "ändert die Definition einer Textsuchevorlage"
+
+#: sql_help.c:5044
+msgid "change the definition of a trigger"
+msgstr "ändert die Definition eines Triggers"
+
+#: sql_help.c:5050
+msgid "change the definition of a type"
+msgstr "ändert die Definition eines Typs"
+
+#: sql_help.c:5062
+msgid "change the definition of a user mapping"
+msgstr "ändert die Definition einer Benutzerabbildung"
+
+#: sql_help.c:5068
+msgid "change the definition of a view"
+msgstr "ändert die Definition einer Sicht"
+
+#: sql_help.c:5074
+msgid "collect statistics about a database"
+msgstr "sammelt Statistiken über eine Datenbank"
+
+#: sql_help.c:5080 sql_help.c:5872
+msgid "start a transaction block"
+msgstr "startet einen Transaktionsblock"
+
+#: sql_help.c:5086
+msgid "invoke a procedure"
+msgstr "ruft eine Prozedur auf"
+
+#: sql_help.c:5092
+msgid "force a write-ahead log checkpoint"
+msgstr "erzwingt einen Checkpoint im Write-Ahead-Log"
+
+#: sql_help.c:5098
+msgid "close a cursor"
+msgstr "schließt einen Cursor"
+
+#: sql_help.c:5104
+msgid "cluster a table according to an index"
+msgstr "clustert eine Tabelle nach einem Index"
+
+#: sql_help.c:5110
+msgid "define or change the comment of an object"
+msgstr "definiert oder ändert den Kommentar eines Objektes"
+
+#: sql_help.c:5116 sql_help.c:5674
+msgid "commit the current transaction"
+msgstr "schließt die aktuelle Transaktion ab"
+
+#: sql_help.c:5122
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "schließt eine Transaktion ab, die vorher für Two-Phase-Commit vorbereitet worden war"
+
+#: sql_help.c:5128
+msgid "copy data between a file and a table"
+msgstr "kopiert Daten zwischen einer Datei und einer Tabelle"
+
+#: sql_help.c:5134
+msgid "define a new access method"
+msgstr "definiert eine neue Zugriffsmethode"
+
+#: sql_help.c:5140
+msgid "define a new aggregate function"
+msgstr "definiert eine neue Aggregatfunktion"
+
+#: sql_help.c:5146
+msgid "define a new cast"
+msgstr "definiert eine neue Typumwandlung"
+
+#: sql_help.c:5152
+msgid "define a new collation"
+msgstr "definiert eine neue Sortierfolge"
+
+#: sql_help.c:5158
+msgid "define a new encoding conversion"
+msgstr "definiert eine neue Kodierungskonversion"
+
+#: sql_help.c:5164
+msgid "create a new database"
+msgstr "erzeugt eine neue Datenbank"
+
+#: sql_help.c:5170
+msgid "define a new domain"
+msgstr "definiert eine neue Domäne"
+
+#: sql_help.c:5176
+msgid "define a new event trigger"
+msgstr "definiert einen neuen Ereignistrigger"
+
+#: sql_help.c:5182
+msgid "install an extension"
+msgstr "installiert eine Erweiterung"
+
+#: sql_help.c:5188
+msgid "define a new foreign-data wrapper"
+msgstr "definiert einen neuen Fremddaten-Wrapper"
+
+#: sql_help.c:5194
+msgid "define a new foreign table"
+msgstr "definiert eine neue Fremdtabelle"
+
+#: sql_help.c:5200
+msgid "define a new function"
+msgstr "definiert eine neue Funktion"
+
+#: sql_help.c:5206 sql_help.c:5266 sql_help.c:5368
+msgid "define a new database role"
+msgstr "definiert eine neue Datenbankrolle"
+
+#: sql_help.c:5212
+msgid "define a new index"
+msgstr "definiert einen neuen Index"
+
+#: sql_help.c:5218
+msgid "define a new procedural language"
+msgstr "definiert eine neue prozedurale Sprache"
+
+#: sql_help.c:5224
+msgid "define a new materialized view"
+msgstr "definiert eine neue materialisierte Sicht"
+
+#: sql_help.c:5230
+msgid "define a new operator"
+msgstr "definiert einen neuen Operator"
+
+#: sql_help.c:5236
+msgid "define a new operator class"
+msgstr "definiert eine neue Operatorklasse"
+
+#: sql_help.c:5242
+msgid "define a new operator family"
+msgstr "definiert eine neue Operatorfamilie"
+
+#: sql_help.c:5248
+msgid "define a new row level security policy for a table"
+msgstr "definiert eine neue Policy für Sicherheit auf Zeilenebene für eine Tabelle"
+
+#: sql_help.c:5254
+msgid "define a new procedure"
+msgstr "definiert eine neue Prozedur"
+
+#: sql_help.c:5260
+msgid "define a new publication"
+msgstr "definiert eine neue Publikation"
+
+#: sql_help.c:5272
+msgid "define a new rewrite rule"
+msgstr "definiert eine neue Umschreiberegel"
+
+#: sql_help.c:5278
+msgid "define a new schema"
+msgstr "definiert ein neues Schema"
+
+#: sql_help.c:5284
+msgid "define a new sequence generator"
+msgstr "definiert einen neuen Sequenzgenerator"
+
+#: sql_help.c:5290
+msgid "define a new foreign server"
+msgstr "definiert einen neuen Fremdserver"
+
+#: sql_help.c:5296
+msgid "define extended statistics"
+msgstr "definiert erweiterte Statistiken"
+
+#: sql_help.c:5302
+msgid "define a new subscription"
+msgstr "definiert eine neue Subskription"
+
+#: sql_help.c:5308
+msgid "define a new table"
+msgstr "definiert eine neue Tabelle"
+
+#: sql_help.c:5314 sql_help.c:5830
+msgid "define a new table from the results of a query"
+msgstr "definiert eine neue Tabelle aus den Ergebnissen einer Anfrage"
+
+#: sql_help.c:5320
+msgid "define a new tablespace"
+msgstr "definiert einen neuen Tablespace"
+
+#: sql_help.c:5326
+msgid "define a new text search configuration"
+msgstr "definiert eine neue Textsuchekonfiguration"
+
+#: sql_help.c:5332
+msgid "define a new text search dictionary"
+msgstr "definiert ein neues Textsuchewörterbuch"
+
+#: sql_help.c:5338
+msgid "define a new text search parser"
+msgstr "definiert einen neuen Textsucheparser"
+
+#: sql_help.c:5344
+msgid "define a new text search template"
+msgstr "definiert eine neue Textsuchevorlage"
+
+#: sql_help.c:5350
+msgid "define a new transform"
+msgstr "definiert eine neue Transformation"
+
+#: sql_help.c:5356
+msgid "define a new trigger"
+msgstr "definiert einen neuen Trigger"
+
+#: sql_help.c:5362
+msgid "define a new data type"
+msgstr "definiert einen neuen Datentyp"
+
+#: sql_help.c:5374
+msgid "define a new mapping of a user to a foreign server"
+msgstr "definiert eine neue Abbildung eines Benutzers auf einen Fremdserver"
+
+#: sql_help.c:5380
+msgid "define a new view"
+msgstr "definiert eine neue Sicht"
+
+#: sql_help.c:5386
+msgid "deallocate a prepared statement"
+msgstr "gibt einen vorbereiteten Befehl frei"
+
+#: sql_help.c:5392
+msgid "define a cursor"
+msgstr "definiert einen Cursor"
+
+#: sql_help.c:5398
+msgid "delete rows of a table"
+msgstr "löscht Zeilen einer Tabelle"
+
+#: sql_help.c:5404
+msgid "discard session state"
+msgstr "verwirft den Sitzungszustand"
+
+#: sql_help.c:5410
+msgid "execute an anonymous code block"
+msgstr "führt einen anonymen Codeblock aus"
+
+#: sql_help.c:5416
+msgid "remove an access method"
+msgstr "entfernt eine Zugriffsmethode"
+
+#: sql_help.c:5422
+msgid "remove an aggregate function"
+msgstr "entfernt eine Aggregatfunktion"
+
+#: sql_help.c:5428
+msgid "remove a cast"
+msgstr "entfernt eine Typumwandlung"
+
+#: sql_help.c:5434
+msgid "remove a collation"
+msgstr "entfernt eine Sortierfolge"
+
+#: sql_help.c:5440
+msgid "remove a conversion"
+msgstr "entfernt eine Zeichensatzkonversion"
+
+#: sql_help.c:5446
+msgid "remove a database"
+msgstr "entfernt eine Datenbank"
+
+#: sql_help.c:5452
+msgid "remove a domain"
+msgstr "entfernt eine Domäne"
+
+#: sql_help.c:5458
+msgid "remove an event trigger"
+msgstr "entfernt einen Ereignistrigger"
+
+#: sql_help.c:5464
+msgid "remove an extension"
+msgstr "entfernt eine Erweiterung"
+
+#: sql_help.c:5470
+msgid "remove a foreign-data wrapper"
+msgstr "entfernt einen Fremddaten-Wrapper"
+
+#: sql_help.c:5476
+msgid "remove a foreign table"
+msgstr "entfernt eine Fremdtabelle"
+
+#: sql_help.c:5482
+msgid "remove a function"
+msgstr "entfernt eine Funktion"
+
+#: sql_help.c:5488 sql_help.c:5554 sql_help.c:5656
+msgid "remove a database role"
+msgstr "entfernt eine Datenbankrolle"
+
+#: sql_help.c:5494
+msgid "remove an index"
+msgstr "entfernt einen Index"
+
+#: sql_help.c:5500
+msgid "remove a procedural language"
+msgstr "entfernt eine prozedurale Sprache"
+
+#: sql_help.c:5506
+msgid "remove a materialized view"
+msgstr "entfernt eine materialisierte Sicht"
+
+#: sql_help.c:5512
+msgid "remove an operator"
+msgstr "entfernt einen Operator"
+
+#: sql_help.c:5518
+msgid "remove an operator class"
+msgstr "entfernt eine Operatorklasse"
+
+#: sql_help.c:5524
+msgid "remove an operator family"
+msgstr "entfernt eine Operatorfamilie"
+
+#: sql_help.c:5530
+msgid "remove database objects owned by a database role"
+msgstr "entfernt die einer Datenbankrolle gehörenden Datenbankobjekte"
+
+#: sql_help.c:5536
+msgid "remove a row level security policy from a table"
+msgstr "entfernt eine Policy für Sicherheit auf Zeilenebene von einer Tabelle"
+
+#: sql_help.c:5542
+msgid "remove a procedure"
+msgstr "entfernt eine Prozedur"
+
+#: sql_help.c:5548
+msgid "remove a publication"
+msgstr "entfernt eine Publikation"
+
+#: sql_help.c:5560
+msgid "remove a routine"
+msgstr "entfernt eine Routine"
+
+#: sql_help.c:5566
+msgid "remove a rewrite rule"
+msgstr "entfernt eine Umschreiberegel"
+
+#: sql_help.c:5572
+msgid "remove a schema"
+msgstr "entfernt ein Schema"
+
+#: sql_help.c:5578
+msgid "remove a sequence"
+msgstr "entfernt eine Sequenz"
+
+#: sql_help.c:5584
+msgid "remove a foreign server descriptor"
+msgstr "entfernt einen Fremdserverdeskriptor"
+
+#: sql_help.c:5590
+msgid "remove extended statistics"
+msgstr "entfernt erweiterte Statistiken"
+
+#: sql_help.c:5596
+msgid "remove a subscription"
+msgstr "entfernt eine Subskription"
+
+#: sql_help.c:5602
+msgid "remove a table"
+msgstr "entfernt eine Tabelle"
+
+#: sql_help.c:5608
+msgid "remove a tablespace"
+msgstr "entfernt einen Tablespace"
+
+#: sql_help.c:5614
+msgid "remove a text search configuration"
+msgstr "entfernt eine Textsuchekonfiguration"
+
+#: sql_help.c:5620
+msgid "remove a text search dictionary"
+msgstr "entfernt ein Textsuchewörterbuch"
+
+#: sql_help.c:5626
+msgid "remove a text search parser"
+msgstr "entfernt einen Textsucheparser"
+
+#: sql_help.c:5632
+msgid "remove a text search template"
+msgstr "entfernt eine Textsuchevorlage"
+
+#: sql_help.c:5638
+msgid "remove a transform"
+msgstr "entfernt eine Transformation"
+
+#: sql_help.c:5644
+msgid "remove a trigger"
+msgstr "entfernt einen Trigger"
+
+#: sql_help.c:5650
+msgid "remove a data type"
+msgstr "entfernt einen Datentyp"
+
+#: sql_help.c:5662
+msgid "remove a user mapping for a foreign server"
+msgstr "entfernt eine Benutzerabbildung für einen Fremdserver"
+
+#: sql_help.c:5668
+msgid "remove a view"
+msgstr "entfernt eine Sicht"
+
+#: sql_help.c:5680
+msgid "execute a prepared statement"
+msgstr "führt einen vorbereiteten Befehl aus"
+
+#: sql_help.c:5686
+msgid "show the execution plan of a statement"
+msgstr "zeigt den Ausführungsplan eines Befehls"
+
+#: sql_help.c:5692
+msgid "retrieve rows from a query using a cursor"
+msgstr "liest Zeilen aus einer Anfrage mit einem Cursor"
+
+#: sql_help.c:5698
+msgid "define access privileges"
+msgstr "definiert Zugriffsprivilegien"
+
+#: sql_help.c:5704
+msgid "import table definitions from a foreign server"
+msgstr "importiert Tabellendefinitionen von einem Fremdserver"
+
+#: sql_help.c:5710
+msgid "create new rows in a table"
+msgstr "erzeugt neue Zeilen in einer Tabelle"
+
+#: sql_help.c:5716
+msgid "listen for a notification"
+msgstr "hört auf eine Benachrichtigung"
+
+#: sql_help.c:5722
+msgid "load a shared library file"
+msgstr "lädt eine dynamische Bibliotheksdatei"
+
+#: sql_help.c:5728
+msgid "lock a table"
+msgstr "sperrt eine Tabelle"
+
+#: sql_help.c:5734
+msgid "position a cursor"
+msgstr "positioniert einen Cursor"
+
+#: sql_help.c:5740
+msgid "generate a notification"
+msgstr "erzeugt eine Benachrichtigung"
+
+#: sql_help.c:5746
+msgid "prepare a statement for execution"
+msgstr "bereitet einen Befehl zur Ausführung vor"
+
+#: sql_help.c:5752
+msgid "prepare the current transaction for two-phase commit"
+msgstr "bereitet die aktuelle Transaktion für Two-Phase-Commit vor"
+
+#: sql_help.c:5758
+msgid "change the ownership of database objects owned by a database role"
+msgstr "ändert den Eigentümer der der Rolle gehörenden Datenbankobjekte"
+
+#: sql_help.c:5764
+msgid "replace the contents of a materialized view"
+msgstr "ersetzt den Inhalt einer materialisierten Sicht"
+
+#: sql_help.c:5770
+msgid "rebuild indexes"
+msgstr "baut Indexe neu"
+
+#: sql_help.c:5776
+msgid "destroy a previously defined savepoint"
+msgstr "gibt einen zuvor definierten Sicherungspunkt frei"
+
+#: sql_help.c:5782
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "setzt einen Konfigurationsparameter auf die Voreinstellung zurück"
+
+#: sql_help.c:5788
+msgid "remove access privileges"
+msgstr "entfernt Zugriffsprivilegien"
+
+#: sql_help.c:5800
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "storniert eine Transaktion, die vorher für Two-Phase-Commit vorbereitet worden war"
+
+#: sql_help.c:5806
+msgid "roll back to a savepoint"
+msgstr "rollt eine Transaktion bis zu einem Sicherungspunkt zurück"
+
+#: sql_help.c:5812
+msgid "define a new savepoint within the current transaction"
+msgstr "definiert einen neuen Sicherungspunkt in der aktuellen Transaktion"
+
+#: sql_help.c:5818
+msgid "define or change a security label applied to an object"
+msgstr "definiert oder ändert ein Security-Label eines Objektes"
+
+#: sql_help.c:5824 sql_help.c:5878 sql_help.c:5914
+msgid "retrieve rows from a table or view"
+msgstr "liest Zeilen aus einer Tabelle oder Sicht"
+
+#: sql_help.c:5836
+msgid "change a run-time parameter"
+msgstr "ändert einen Konfigurationsparameter"
+
+#: sql_help.c:5842
+msgid "set constraint check timing for the current transaction"
+msgstr "setzt die Zeitsteuerung für Check-Constraints in der aktuellen Transaktion"
+
+#: sql_help.c:5848
+msgid "set the current user identifier of the current session"
+msgstr "setzt den aktuellen Benutzernamen der aktuellen Sitzung"
+
+#: sql_help.c:5854
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "setzt den Sitzungsbenutzernamen und den aktuellen Benutzernamen der aktuellen Sitzung"
+
+#: sql_help.c:5860
+msgid "set the characteristics of the current transaction"
+msgstr "setzt die Charakteristika der aktuellen Transaktion"
+
+#: sql_help.c:5866
+msgid "show the value of a run-time parameter"
+msgstr "zeigt den Wert eines Konfigurationsparameters"
+
+#: sql_help.c:5884
+msgid "empty a table or set of tables"
+msgstr "leert eine oder mehrere Tabellen"
+
+#: sql_help.c:5890
+msgid "stop listening for a notification"
+msgstr "beendet das Hören auf eine Benachrichtigung"
+
+#: sql_help.c:5896
+msgid "update rows of a table"
+msgstr "aktualisiert Zeilen einer Tabelle"
+
+#: sql_help.c:5902
+msgid "garbage-collect and optionally analyze a database"
+msgstr "säubert und analysiert eine Datenbank"
+
+#: sql_help.c:5908
+msgid "compute a set of rows"
+msgstr "berechnet eine Zeilenmenge"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 kann nur im nicht interaktiven Modus verwendet werden"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "konnte Logdatei »%s« nicht öffnen: %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Geben Sie »help« für Hilfe ein.\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "konnte Ausgabeparameter »%s« nicht setzen"
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "überflüssiges Kommandozeilenargument »%s« ignoriert"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "konnte eigene Programmdatei nicht finden"
+
+#: tab-complete.c:4642
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"Anfrage zur Tab-Vervollständigung fehlgeschlagen: %s\n"
+"Anfrage war:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "unbekannter Wert »%s« für »%s«: Boole'scher Wert erwartet"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "ungültiger Wert »%s« für »%s«: ganze Zahl erwartet"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "ungültiger Variablenname: »%s«"
+
+#: variables.c:419
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"unbekannter Wert »%s« für »%s«\n"
+"Verfügbare Werte sind: %s."
diff --git a/src/bin/psql/po/es.po b/src/bin/psql/po/es.po
new file mode 100644
index 0000000..bdf7535
--- /dev/null
+++ b/src/bin/psql/po/es.po
@@ -0,0 +1,6350 @@
+# spanish translation of psql.
+#
+# Copyright (c) 2003-2019, PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+#
+# Alvaro Herrera, <alvherre@alvh.no-ip.org>, 2003-2015
+# Diego A. Gil <diego@adminsa.com>, 2005
+# Martín Marqués <martin@2ndquadrant.com>, 2013
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psql (PostgreSQL) 12\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-05-13 13:58+0000\n"
+"PO-Revision-Date: 2020-09-14 13:02-0300\n"
+"Last-Translator: Álvaro Herrera <alvherre@alvh.no-ip.org>\n"
+"Language-Team: PgSQL-es-Ayuda <pgsql-es-ayuda@lists.postgresql.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 2.3\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "fatal: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "error: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "precaución: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "no se pudo identificar el directorio actual: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "el binario «%s» no es válido"
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "no se pudo leer el binario «%s»"
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "no se pudo encontrar un «%s» para ejecutar"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "no se pudo cambiar al directorio «%s»: %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "no se pudo leer el enlace simbólico «%s»: %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "pclose falló: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1256 command.c:3193 command.c:3242 command.c:3359 input.c:227
+#: mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "memoria agotada"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "memoria agotada\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "no se puede duplicar un puntero nulo (error interno)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "no se pudo buscar el ID de usuario efectivo %ld: %s"
+
+#: ../../common/username.c:45 command.c:560
+msgid "user does not exist"
+msgstr "el usuario no existe"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "fallo en la búsqueda de nombre de usuario: código de error %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "la orden no es ejecutable"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "orden no encontrada"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "el proceso hijo terminó con código de salida %d"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "el proceso hijo fue terminado por una excepción 0x%X"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "el proceso hijo fue terminado por una señal %d: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "el proceso hijo terminó con código no reconocido %d"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "Petición de cancelación enviada\n"
+
+#: ../../fe_utils/cancel.c:165 ../../fe_utils/cancel.c:210
+msgid "Could not send cancel request: "
+msgstr "No se pudo enviar la petición de cancelación: %s"
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu fila)"
+msgstr[1] "(%lu filas)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "Interrumpido\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "No se puede agregar un encabezado al contenido de la tabla: la cantidad de columnas de %d ha sido excedida.\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "No se puede agregar una celda al contenido de la tabla: la cantidad de celdas de %d ha sido excedida.\n"
+
+#: ../../fe_utils/print.c:3417
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "formato de salida no válido (error interno): %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "saltando expansión recursiva de la variable «%s»"
+
+#: command.c:225
+#, c-format
+msgid "invalid command \\%s"
+msgstr "orden \\%s no válida"
+
+#: command.c:227
+#, c-format
+msgid "Try \\? for help."
+msgstr "Digite \\? para obtener ayuda."
+
+#: command.c:245
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: argumento extra «%s» ignorado"
+
+#: command.c:297
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "orden \\%s ignorada: use \\endif o Ctrl-C para salir del bloque \\if actual"
+
+#: command.c:558
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "no se pudo obtener directorio home para el usuario de ID %ld: %s"
+
+#: command.c:576
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: no se pudo cambiar directorio a «%s»: %m"
+
+#: command.c:601
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "No está conectado a una base de datos.\n"
+
+#: command.c:614
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Está conectado a la base de datos «%s» como el usuario «%s» en la dirección «%s» port «%s».\n"
+
+#: command.c:617
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Está conectado a la base de datos «%s» como el usuario «%s» a través del socket en «%s» port «%s».\n"
+
+#: command.c:623
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Está conectado a la base de datos «%s» como el usuario «%s» en el servidor «%s» (dirección «%s») port «%s».\n"
+
+#: command.c:626
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Está conectado a la base de datos «%s» como el usuario «%s» en el servidor «%s» port «%s».\n"
+
+#: command.c:966 command.c:1062 command.c:2551
+#, c-format
+msgid "no query buffer"
+msgstr "no hay búfer de consulta"
+
+#: command.c:999 command.c:5211
+#, c-format
+msgid "invalid line number: %s"
+msgstr "número de línea no válido: %s"
+
+#: command.c:1053
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "El servidor (versión %s) no soporta la edición del código fuente de funciones."
+
+#: command.c:1056
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "El servidor (versión %s) no soporta la edición de vistas."
+
+#: command.c:1138
+msgid "No changes"
+msgstr "Sin cambios"
+
+#: command.c:1217
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: nombre de codificación no válido o procedimiento de conversión no encontrado"
+
+#: command.c:1252 command.c:1993 command.c:3189 command.c:3381 command.c:5313
+#: common.c:174 common.c:223 common.c:388 common.c:1244 common.c:1272
+#: common.c:1381 common.c:1488 common.c:1526 copy.c:488 copy.c:707 help.c:62
+#: large_obj.c:157 large_obj.c:192 large_obj.c:254 startup.c:299
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1259
+msgid "There is no previous error."
+msgstr "No hay error anterior."
+
+#: command.c:1372
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: falta el paréntesis derecho"
+
+#: command.c:1549 command.c:1854 command.c:1868 command.c:1885 command.c:2045
+#: command.c:2282 command.c:2518 command.c:2558
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: falta argumento requerido"
+
+#: command.c:1680
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: no puede ocurrir después de \\else"
+
+#: command.c:1685
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: no hay un \\if coincidente"
+
+#: command.c:1749
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: no puede ocurrir después de \\else"
+
+#: command.c:1754
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: no hay un \\if coincidente"
+
+#: command.c:1794
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: no hay un \\if coincidente"
+
+#: command.c:1949
+msgid "Query buffer is empty."
+msgstr "El búfer de consulta está vacío."
+
+#: command.c:1971
+msgid "Enter new password: "
+msgstr "Ingrese la nueva contraseña: "
+
+#: command.c:1972
+msgid "Enter it again: "
+msgstr "Ingrésela nuevamente: "
+
+#: command.c:1976
+#, c-format
+msgid "Passwords didn't match."
+msgstr "Las constraseñas no coinciden."
+
+#: command.c:2075
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "%s: no se pudo leer el valor para la variable"
+
+#: command.c:2178
+msgid "Query buffer reset (cleared)."
+msgstr "El búfer de consulta ha sido reiniciado (limpiado)."
+
+#: command.c:2200
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Se escribió la historia en el archivo «%s».\n"
+
+#: command.c:2287
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: el nombre de variable de ambiente no debe contener «=»"
+
+#: command.c:2348
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "El servidor (versión %s) no soporta el despliegue del código fuente de funciones."
+
+#: command.c:2351
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "El servidor (versión %s) no soporta el despliegue de definiciones de vistas."
+
+#: command.c:2358
+#, c-format
+msgid "function name is required"
+msgstr "el nombre de la función es requerido"
+
+#: command.c:2360
+#, c-format
+msgid "view name is required"
+msgstr "el nombre de la vista es requerido"
+
+#: command.c:2490
+msgid "Timing is on."
+msgstr "El despliegue de duración está activado."
+
+#: command.c:2492
+msgid "Timing is off."
+msgstr "El despliegue de duración está desactivado."
+
+#: command.c:2577 command.c:2605 command.c:3790 command.c:3793 command.c:3796
+#: command.c:3802 command.c:3804 command.c:3830 command.c:3840 command.c:3852
+#: command.c:3866 command.c:3883 command.c:3941 common.c:70 copy.c:331
+#: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2989 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "Contraseña: "
+
+#: command.c:2994 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "Contraseña para usuario %s: "
+
+#: command.c:3048
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "Debe proveer todos los parámetros de conexión porque no existe conexión a una base de datos"
+
+#: command.c:3387
+#, c-format
+msgid "Previous connection kept"
+msgstr "Se ha mantenido la conexión anterior"
+
+#: command.c:3393
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3440
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Ahora está conectado a la base de datos «%s» como el usuario «%s» en la dirección «%s» port «%s».\n"
+
+#: command.c:3443
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Ahora está conectado a la base de datos «%s» como el usuario «%s» a través del socket en «%s» port «%s».\n"
+
+#: command.c:3449
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Ahora está conectado a la base de datos «%s» como el usuario «%s» en el servidor «%s» (dirección «%s») port «%s».\n"
+
+#: command.c:3452
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Ahora está conectado a la base de datos «%s» como el usuario «%s» en el servidor «%s» port «%s».\n"
+
+#: command.c:3457
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Ahora está conectado a la base de datos «%s» con el usuario «%s».\n"
+
+#: command.c:3490
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, servidor %s)\n"
+
+#: command.c:3498
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"ADVERTENCIA: %s versión mayor %s, servidor versión mayor %s.\n"
+" Algunas características de psql podrían no funcionar.\n"
+
+#: command.c:3537
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "Conexión SSL (protocolo: %s, cifrado: %s, bits: %s, compresión: %s)\n"
+
+#: command.c:3538 command.c:3539 command.c:3540
+msgid "unknown"
+msgstr "desconocido"
+
+#: command.c:3541 help.c:45
+msgid "off"
+msgstr "desactivado"
+
+#: command.c:3541 help.c:45
+msgid "on"
+msgstr "activado"
+
+#: command.c:3555
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "Conexión Cifrada GSSAPI\n"
+
+#: command.c:3575
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"ADVERTENCIA: El código de página de la consola (%u) difiere del código\n"
+" de página de Windows (%u).\n"
+" Los caracteres de 8 bits pueden funcionar incorrectamente.\n"
+" Vea la página de referencia de psql «Notes for Windows users»\n"
+" para obtener más detalles.\n"
+
+#: command.c:3679
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "la variable de ambiente PSQL_EDITOR_LINENUMBER_SWITCH debe estar definida para poder especificar un número de línea"
+
+#: command.c:3708
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "no se pudo iniciar el editor «%s»"
+
+#: command.c:3710
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "no se pudo iniciar /bin/sh"
+
+#: command.c:3747
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "no se pudo ubicar el directorio temporal: %s"
+
+#: command.c:3774
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "no se pudo abrir archivo temporal «%s»: %m"
+
+#: command.c:4100
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: abreviación ambigua «%s» coincide tanto con «%s» como con «%s»"
+
+#: command.c:4120
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: formatos permitidos son aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:4139
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: estilos de línea permitidos son ascii, old-ascii, unicode"
+
+#: command.c:4154
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: estilos de línea Unicode de borde permitidos son single, double"
+
+#: command.c:4169
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: estilos de línea Unicode de columna permitidos son single, double"
+
+#: command.c:4184
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: estilos de línea Unicode de encabezado permitidos son single, double"
+
+#: command.c:4227
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep debe ser un carácter de un solo byte"
+
+#: command.c:4232
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldset ni puede ser una comilla doble, un salto de línea, o un retorno de carro"
+
+#: command.c:4369 command.c:4557
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: opción desconocida: %s"
+
+#: command.c:4389
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "El estilo de borde es %d.\n"
+
+#: command.c:4395
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "El ancho no está definido.\n"
+
+#: command.c:4397
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "El ancho es %d.\n"
+
+#: command.c:4404
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Se ha activado el despliegue expandido.\n"
+
+#: command.c:4406
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "El despliegue expandido se usa automáticamente.\n"
+
+#: command.c:4408
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Se ha desactivado el despliegue expandido.\n"
+
+#: command.c:4414
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "El separador de campos para CSV es «%s».\n"
+
+#: command.c:4422 command.c:4430
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "El separador de campos es el byte cero.\n"
+
+#: command.c:4424
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "El separador de campos es «%s».\n"
+
+#: command.c:4437
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "El pie por omisión está activo.\n"
+
+#: command.c:4439
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "El pie de página por omisión está desactivado.\n"
+
+#: command.c:4445
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "El formato de salida es %s.\n"
+
+#: command.c:4451
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "El estilo de línea es %s.\n"
+
+#: command.c:4458
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Despliegue de nulos es «%s».\n"
+
+#: command.c:4466
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "La salida numérica ajustada localmente está habilitada.\n"
+
+#: command.c:4468
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "La salida numérica ajustada localmente está deshabilitada.\n"
+
+#: command.c:4475
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "El paginador se usará para salida larga.\n"
+
+#: command.c:4477
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "El paginador se usará siempre.\n"
+
+#: command.c:4479
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "El paginador no se usará.\n"
+
+#: command.c:4485
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "El paginador no se usará para menos de %d línea.\n"
+msgstr[1] "El paginador no se usará para menos de %d líneas.\n"
+
+#: command.c:4495 command.c:4505
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "El separador de filas es el byte cero.\n"
+
+#: command.c:4497
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "El separador de filas es <salto de línea>.\n"
+
+#: command.c:4499
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "El separador de filas es «%s».\n"
+
+#: command.c:4512
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Los atributos de tabla son «%s».\n"
+
+#: command.c:4515
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Los atributos de tabla han sido indefinidos.\n"
+
+#: command.c:4522
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "El título es «%s».\n"
+
+#: command.c:4524
+#, c-format
+msgid "Title is unset.\n"
+msgstr "El título ha sido indefinido.\n"
+
+#: command.c:4531
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "Mostrar sólo filas está activado.\n"
+
+#: command.c:4533
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "Mostrar sólo filas está desactivado.\n"
+
+#: command.c:4539
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "El estilo Unicode de borde es «%s».\n"
+
+#: command.c:4545
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "El estilo de línea Unicode de columna es «%s».\n"
+
+#: command.c:4551
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "El estilo de línea Unicode de encabezado es «%s».\n"
+
+#: command.c:4784
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: falló"
+
+#: command.c:4809 common.c:648
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch no puede ser usado con una consulta vacía"
+
+#: command.c:4850
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (cada %gs)\n"
+
+#: command.c:4853
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (cada %gs)\n"
+
+#: command.c:4907 command.c:4914 common.c:548 common.c:555 common.c:1227
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:5106
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "«%s.%s» no es una vista"
+
+#: command.c:5122
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "no se pudo interpretar el array reloptions"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "no se puede escapar sin una conexión activa"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "el argumento de la orden de shell contiene un salto de línea o retorno de carro: «%s»"
+
+#: common.c:304
+#, c-format
+msgid "connection to server was lost"
+msgstr "se ha perdido la conexión al servidor"
+
+#: common.c:308
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "La conexión al servidor se ha perdido. Intentando reiniciar: "
+
+#: common.c:313
+#, c-format
+msgid "Failed.\n"
+msgstr "Falló.\n"
+
+#: common.c:326
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Con éxito.\n"
+
+#: common.c:378 common.c:945 common.c:1162
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "PQresultStatus no esperado: %d"
+
+#: common.c:487
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Duración: %.3f ms\n"
+
+#: common.c:502
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Duración: %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:511
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Duración: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:518
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Duración: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:542 common.c:600 common.c:1198
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "No está conectado a una base de datos."
+
+#: common.c:655
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "no se puede usar \\watch con COPY"
+
+#: common.c:660
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "estado de resultado inesperado de \\watch"
+
+#: common.c:690
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "Notificación asíncrona «%s» con carga «%s» recibida del proceso de servidor con PID %d.\n"
+
+#: common.c:693
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "Notificación asíncrona «%s» recibida del proceso de servidor con PID %d.\n"
+
+#: common.c:726 common.c:743
+#, c-format
+msgid "could not print result table: %m"
+msgstr "no se pudo mostrar la tabla de resultados: %m"
+
+#: common.c:764
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "\\gset no retornó renglón alguno"
+
+#: common.c:769
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "\\gset retornó más de un renglón"
+
+#: common.c:787
+#, fuzzy, c-format
+#| msgid ""
+#| "List of specially treated variables\n"
+#| "\n"
+msgid "attempt to \\gset into specially treated variable \"%s\" ignored"
+msgstr ""
+"Lista de variables con tratamiento especial\n"
+"\n"
+
+#: common.c:1207
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(Modo paso a paso: verifique la orden)****************************************\n"
+"%s\n"
+"***(presione enter para continuar, o x y enter para cancelar)*******************\n"
+
+#: common.c:1262
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "El servidor (versión %s) no soporta savepoints para ON_ERROR_ROLLBACK."
+
+#: common.c:1325
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "SENTENCIA: %s"
+
+#: common.c:1369
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "estado de transacción inesperado (%d)"
+
+#: common.c:1510 describe.c:2001
+msgid "Column"
+msgstr "Columna"
+
+#: common.c:1511 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3733 describe.c:3943
+#: describe.c:4176 describe.c:5382
+msgid "Type"
+msgstr "Tipo"
+
+#: common.c:1560
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "La orden no tiene resultado, o el resultado no tiene columnas.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy: argumentos requeridos"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: error de procesamiento en «%s»"
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: error de procesamiento al final de la línea"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "no se pudo ejecutar la orden «%s»: %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "no se pudo hacer stat al archivo «%s»: %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: no se puede copiar desde/hacia un directorio"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "no se pudo cerrar la tubería a la orden externa: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "no se pudo escribir datos COPY: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "falló la transferencia de datos COPY: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "cancelada por el usuario"
+
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Ingrese los datos a ser copiados seguidos de un fin de línea.\n"
+"Termine con un backslash y un punto, o una señal EOF."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "se abortó por un error de lectura"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "tratando de salir del modo copy"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: la sentencia no produjo un conjunto de resultados"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: la consulta debe retornar al menos tres columnas"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: los encabezados verticales y horizontales deben ser columnas distintas"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: la columna de datos debe ser especificada cuando la consulta retorna más de tres columnas"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: se superó el número máximo de columnas (%d)"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: el resultado de la consulta contiene múltiples valores para la fila «%s», columna «%s»"
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: el número de columna %d está fuera del rango 1..%d"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: nombre de columna «%s» ambiguo"
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: nombre de columna «%s» no encontrado"
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3722 describe.c:3930
+#: describe.c:4174 describe.c:4265 describe.c:4532 describe.c:4692
+#: describe.c:4933 describe.c:5008 describe.c:5019 describe.c:5081
+#: describe.c:5506 describe.c:5589
+msgid "Schema"
+msgstr "Esquema"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3723 describe.c:3931 describe.c:4097 describe.c:4175
+#: describe.c:4266 describe.c:4345 describe.c:4533 describe.c:4617
+#: describe.c:4693 describe.c:4934 describe.c:5009 describe.c:5020
+#: describe.c:5082 describe.c:5279 describe.c:5363 describe.c:5587
+#: describe.c:5759 describe.c:5999
+msgid "Name"
+msgstr "Nombre"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "Tipo de dato de salida"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "Tipos de datos de argumentos"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3510 describe.c:3783 describe.c:3977 describe.c:4128
+#: describe.c:4202 describe.c:4275 describe.c:4358 describe.c:4441
+#: describe.c:4560 describe.c:4626 describe.c:4694 describe.c:4835
+#: describe.c:4877 describe.c:4950 describe.c:5012 describe.c:5021
+#: describe.c:5083 describe.c:5305 describe.c:5385 describe.c:5520
+#: describe.c:5590 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Descripción"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Listado de funciones de agregación"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "El servidor (versión %s) no soporta métodos de acceso."
+
+#: describe.c:175
+msgid "Index"
+msgstr "Indice"
+
+#: describe.c:176 describe.c:3741 describe.c:3956 describe.c:5507
+msgid "Table"
+msgstr "Tabla"
+
+#: describe.c:184 describe.c:5284
+msgid "Handler"
+msgstr "Manejador"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "Lista de métodos de acceso"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "El servidor (versión %s) no soporta tablespaces."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3734 describe.c:3932 describe.c:4101
+#: describe.c:4347 describe.c:4618 describe.c:5280 describe.c:5364
+#: describe.c:5760 describe.c:5897 describe.c:6000 describe.c:6115
+#: describe.c:6194 large_obj.c:289
+msgid "Owner"
+msgstr "Dueño"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "Ubicación"
+
+#: describe.c:263 describe.c:3327
+msgid "Options"
+msgstr "Opciones"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3775 describe.c:3779
+msgid "Size"
+msgstr "Tamaño"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "Listado de tablespaces"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df sólo acepta las opciones [antpwS+]"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df no acepta la opción «%c» en un servidor versión %s"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "agg"
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "ventana"
+
+#: describe.c:391
+msgid "proc"
+msgstr "proc"
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "func"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "disparador"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "inmutable"
+
+#: describe.c:484
+msgid "stable"
+msgstr "estable"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "volátil"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "Volatilidad"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "restringida"
+
+#: describe.c:495
+msgid "safe"
+msgstr "segura"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "insegura"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "Paralelismo"
+
+#: describe.c:502
+msgid "definer"
+msgstr "definidor"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "invocador"
+
+#: describe.c:504
+msgid "Security"
+msgstr "Seguridad"
+
+#: describe.c:511
+msgid "Language"
+msgstr "Lenguaje"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "Código fuente"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "Listado de funciones"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "Nombre interno"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "Elementos"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "Listado de tipos de dato"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "Tipo arg izq"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "Tipo arg der"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "Tipo resultado"
+
+#: describe.c:819 describe.c:4353 describe.c:4418 describe.c:4424
+#: describe.c:4834 describe.c:6366 describe.c:6370
+msgid "Function"
+msgstr "Función"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "Listado de operadores"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "Codificación"
+
+#: describe.c:879 describe.c:4534
+msgid "Collate"
+msgstr "Collate"
+
+#: describe.c:880 describe.c:4535
+msgid "Ctype"
+msgstr "Ctype"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "Tablespace"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "Listado de base de datos"
+
+#: describe.c:956 describe.c:1117 describe.c:3724
+msgid "table"
+msgstr "tabla"
+
+#: describe.c:957 describe.c:3725
+msgid "view"
+msgstr "vista"
+
+#: describe.c:958 describe.c:3726
+msgid "materialized view"
+msgstr "vistas materializadas"
+
+#: describe.c:959 describe.c:1119 describe.c:3728
+msgid "sequence"
+msgstr "secuencia"
+
+#: describe.c:960 describe.c:3730
+msgid "foreign table"
+msgstr "tabla foránea"
+
+#: describe.c:961 describe.c:3731 describe.c:3941
+msgid "partitioned table"
+msgstr "tabla particionada"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "Privilegios de acceso a columnas"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "Políticas"
+
+#: describe.c:1070 describe.c:6056 describe.c:6060
+msgid "Access privileges"
+msgstr "Privilegios"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "El servidor (versión %s) no soporta la alteración de privilegios por omisión."
+
+#: describe.c:1121
+msgid "function"
+msgstr "función"
+
+#: describe.c:1123
+msgid "type"
+msgstr "tipo"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "esquema"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "Privilegios de acceso por omisión"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "Objeto"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "restricción de tabla"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "restricción de dominio"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "clase de operadores"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "familia de operadores"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "regla"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "Descripciones de objetos"
+
+#: describe.c:1402 describe.c:3847
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "No se encontró relación llamada «%s»."
+
+#: describe.c:1405 describe.c:3850
+#, c-format
+msgid "Did not find any relations."
+msgstr "No se encontró ninguna relación."
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "No se encontró relación con OID %s."
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "Inicio"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "Mínimo"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "Máximo"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "Incremento"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4269
+#: describe.c:4435 describe.c:4549 describe.c:4554 describe.c:6103
+msgid "yes"
+msgstr "sí"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4269
+#: describe.c:4432 describe.c:4549 describe.c:6104
+msgid "no"
+msgstr "no"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "¿Cicla?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "Cache"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "Asociada a: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Secuencia para columna identidad: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Secuencia «%s.%s»"
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Tabla unlogged «%s.%s»"
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Tabla «%s.%s»"
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Vista «%s.%s»"
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Vista materializada unlogged «%s.%s»"
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Vista materializada \"%s.%s\""
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Índice unlogged «%s.%s»"
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Índice «%s.%s»"
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Índice particionado unlogged «%s.%s»"
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "Índice particionado «%s.%s»"
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Relación especial «%s.%s»"
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "Tabla TOAST «%s.%s»"
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Tipo compuesto «%s.%s»"
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Tabla foránea «%s.%s»"
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Tabla unlogged particionada «%s.%s»"
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "Tabla particionada «%s.%s»"
+
+#: describe.c:2005 describe.c:4182
+msgid "Collation"
+msgstr "Ordenamiento"
+
+#: describe.c:2006 describe.c:4189
+msgid "Nullable"
+msgstr "Nulable"
+
+#: describe.c:2007 describe.c:4190
+msgid "Default"
+msgstr "Por omisión"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "¿Llave?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "Definición"
+
+#: describe.c:2014 describe.c:5300 describe.c:5384 describe.c:5455
+#: describe.c:5519
+msgid "FDW options"
+msgstr "Opciones de FDW"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "Almacenamiento"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "Estadísticas"
+
+#: describe.c:2135
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Partición de: %s %s"
+
+#: describe.c:2147
+msgid "No partition constraint"
+msgstr "Sin restricción de partición"
+
+#: describe.c:2149
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Restricción de partición: %s"
+
+#: describe.c:2173
+#, c-format
+msgid "Partition key: %s"
+msgstr "Llave de partición: %s"
+
+#: describe.c:2199
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "Tabla dueña: «%s.%s»"
+
+#: describe.c:2270
+msgid "primary key, "
+msgstr "llave primaria, "
+
+#: describe.c:2272
+msgid "unique, "
+msgstr "único, "
+
+#: describe.c:2278
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "de tabla «%s.%s»"
+
+#: describe.c:2282
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", predicado (%s)"
+
+#: describe.c:2285
+msgid ", clustered"
+msgstr ", clustered"
+
+#: describe.c:2288
+msgid ", invalid"
+msgstr ", no válido"
+
+#: describe.c:2291
+msgid ", deferrable"
+msgstr ", postergable"
+
+#: describe.c:2294
+msgid ", initially deferred"
+msgstr ", inicialmente postergada"
+
+#: describe.c:2297
+msgid ", replica identity"
+msgstr ", identidad de replicación"
+
+#: describe.c:2364
+msgid "Indexes:"
+msgstr "Índices:"
+
+#: describe.c:2448
+msgid "Check constraints:"
+msgstr "Restricciones CHECK:"
+
+#: describe.c:2516
+msgid "Foreign-key constraints:"
+msgstr "Restricciones de llave foránea:"
+
+#: describe.c:2579
+msgid "Referenced by:"
+msgstr "Referenciada por:"
+
+#: describe.c:2629
+msgid "Policies:"
+msgstr "Políticas:"
+
+#: describe.c:2632
+msgid "Policies (forced row security enabled):"
+msgstr "Políticas (seguridad de registros forzada):"
+
+#: describe.c:2635
+msgid "Policies (row security enabled): (none)"
+msgstr "Políticas (seguridad de filas activa): (ninguna)"
+
+#: describe.c:2638
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Políticas (seguridad de filas forzada): (ninguna)"
+
+#: describe.c:2641
+msgid "Policies (row security disabled):"
+msgstr "Políticas (seguridad de filas inactiva):"
+
+#: describe.c:2709
+msgid "Statistics objects:"
+msgstr "Objetos de estadísticas:"
+
+#: describe.c:2823 describe.c:2927
+msgid "Rules:"
+msgstr "Reglas:"
+
+#: describe.c:2826
+msgid "Disabled rules:"
+msgstr "Reglas deshabilitadas:"
+
+#: describe.c:2829
+msgid "Rules firing always:"
+msgstr "Reglas que se activan siempre:"
+
+#: describe.c:2832
+msgid "Rules firing on replica only:"
+msgstr "Reglas que se activan sólo en las réplicas:"
+
+#: describe.c:2872
+msgid "Publications:"
+msgstr "Publicaciones:"
+
+#: describe.c:2910
+msgid "View definition:"
+msgstr "Definición de vista:"
+
+#: describe.c:3057
+msgid "Triggers:"
+msgstr "Triggers:"
+
+#: describe.c:3061
+msgid "Disabled user triggers:"
+msgstr "Disparadores de usuario deshabilitados:"
+
+#: describe.c:3063
+msgid "Disabled triggers:"
+msgstr "Disparadores deshabilitados:"
+
+#: describe.c:3066
+msgid "Disabled internal triggers:"
+msgstr "Disparadores internos deshabilitados:"
+
+#: describe.c:3069
+msgid "Triggers firing always:"
+msgstr "Disparadores que siempre se ejecutan:"
+
+#: describe.c:3072
+msgid "Triggers firing on replica only:"
+msgstr "Disparadores que se ejecutan sólo en las réplicas:"
+
+#: describe.c:3144
+#, c-format
+msgid "Server: %s"
+msgstr "Servidor: %s"
+
+#: describe.c:3152
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "Opciones de FDW: (%s)"
+
+#: describe.c:3173
+msgid "Inherits"
+msgstr "Hereda"
+
+#: describe.c:3233
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Número de particiones: %d"
+
+#: describe.c:3242
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Número de particiones: %d (Use \\d+ para listarlas.)"
+
+#: describe.c:3244
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Número de tablas hijas: %d (Use \\d+ para listarlas.)"
+
+#: describe.c:3251
+msgid "Child tables"
+msgstr "Tablas hijas"
+
+#: describe.c:3251
+msgid "Partitions"
+msgstr "Particiones"
+
+#: describe.c:3280
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Tabla tipada de tipo: %s"
+
+#: describe.c:3296
+msgid "Replica Identity"
+msgstr "Identidad de replicación"
+
+#: describe.c:3309
+msgid "Has OIDs: yes"
+msgstr "Tiene OIDs: sí"
+
+#: describe.c:3318
+#, c-format
+msgid "Access method: %s"
+msgstr "Método de acceso: %s"
+
+#: describe.c:3398
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Tablespace: «%s»"
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3410
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", tablespace «%s»"
+
+#: describe.c:3503
+msgid "List of roles"
+msgstr "Lista de roles"
+
+#: describe.c:3505
+msgid "Role name"
+msgstr "Nombre de rol"
+
+#: describe.c:3506
+msgid "Attributes"
+msgstr "Atributos"
+
+#: describe.c:3507
+msgid "Member of"
+msgstr "Miembro de"
+
+#: describe.c:3518
+msgid "Superuser"
+msgstr "Superusuario"
+
+#: describe.c:3521
+msgid "No inheritance"
+msgstr "Sin herencia"
+
+#: describe.c:3524
+msgid "Create role"
+msgstr "Crear rol"
+
+#: describe.c:3527
+msgid "Create DB"
+msgstr "Crear BD"
+
+#: describe.c:3530
+msgid "Cannot login"
+msgstr "No puede conectarse"
+
+#: describe.c:3534
+msgid "Replication"
+msgstr "Replicación"
+
+#: describe.c:3538
+msgid "Bypass RLS"
+msgstr "Ignora RLS"
+
+#: describe.c:3547
+msgid "No connections"
+msgstr "Ninguna conexión"
+
+#: describe.c:3549
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d conexión"
+msgstr[1] "%d conexiones"
+
+#: describe.c:3559
+msgid "Password valid until "
+msgstr "Constraseña válida hasta "
+
+#: describe.c:3609
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "El servidor (versión %s) no soporta parámetros por base de datos y rol."
+
+#: describe.c:3622
+msgid "Role"
+msgstr "Nombre de rol"
+
+#: describe.c:3623
+msgid "Database"
+msgstr "Base de Datos"
+
+#: describe.c:3624
+msgid "Settings"
+msgstr "Parámetros"
+
+#: describe.c:3645
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "No se encontró ningún parámetro para el rol «%s» y la base de datos «%s»."
+
+#: describe.c:3648
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "No se encontró ningún parámetro para el rol «%s»."
+
+#: describe.c:3651
+#, c-format
+msgid "Did not find any settings."
+msgstr "No se encontró ningún parámetro."
+
+#: describe.c:3656
+msgid "List of settings"
+msgstr "Listado de parámetros"
+
+#: describe.c:3727
+msgid "index"
+msgstr "índice"
+
+#: describe.c:3729
+msgid "special"
+msgstr "especial"
+
+#: describe.c:3732 describe.c:3942
+msgid "partitioned index"
+msgstr "índice particionado"
+
+#: describe.c:3756
+msgid "permanent"
+msgstr "permanente"
+
+#: describe.c:3757
+msgid "temporary"
+msgstr "temporal"
+
+#: describe.c:3758
+msgid "unlogged"
+msgstr "unlogged"
+
+#: describe.c:3759
+msgid "Persistence"
+msgstr "Persistencia"
+
+#: describe.c:3855
+msgid "List of relations"
+msgstr "Listado de relaciones"
+
+#: describe.c:3903
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "El servidor (versión %s) no soporta particionamiento declarativo de tablas."
+
+#: describe.c:3914
+msgid "List of partitioned indexes"
+msgstr "Listado de índices particionados"
+
+#: describe.c:3916
+msgid "List of partitioned tables"
+msgstr "Listado de tablas particionadas"
+
+#: describe.c:3920
+msgid "List of partitioned relations"
+msgstr "Listado de relaciones particionadas"
+
+#: describe.c:3951
+msgid "Parent name"
+msgstr "Nombre del padre"
+
+#: describe.c:3964
+msgid "Leaf partition size"
+msgstr "Tamaño de particiones hoja"
+
+#: describe.c:3967 describe.c:3973
+msgid "Total size"
+msgstr "Tamaño total"
+
+#: describe.c:4105
+msgid "Trusted"
+msgstr "Confiable"
+
+#: describe.c:4113
+msgid "Internal language"
+msgstr "Lenguaje interno"
+
+#: describe.c:4114
+msgid "Call handler"
+msgstr "Manejador de llamada"
+
+#: describe.c:4115 describe.c:5287
+msgid "Validator"
+msgstr "Validador"
+
+#: describe.c:4118
+msgid "Inline handler"
+msgstr "Manejador en línea"
+
+#: describe.c:4146
+msgid "List of languages"
+msgstr "Lista de lenguajes"
+
+#: describe.c:4191
+msgid "Check"
+msgstr "Check"
+
+#: describe.c:4233
+msgid "List of domains"
+msgstr "Listado de dominios"
+
+#: describe.c:4267
+msgid "Source"
+msgstr "Fuente"
+
+#: describe.c:4268
+msgid "Destination"
+msgstr "Destino"
+
+#: describe.c:4270 describe.c:6105
+msgid "Default?"
+msgstr "Por omisión?"
+
+#: describe.c:4307
+msgid "List of conversions"
+msgstr "Listado de conversiones"
+
+#: describe.c:4346
+msgid "Event"
+msgstr "Evento"
+
+#: describe.c:4348
+msgid "enabled"
+msgstr "activo"
+
+#: describe.c:4349
+msgid "replica"
+msgstr "réplica"
+
+#: describe.c:4350
+msgid "always"
+msgstr "siempre"
+
+#: describe.c:4351
+msgid "disabled"
+msgstr "inactivo"
+
+#: describe.c:4352 describe.c:6001
+msgid "Enabled"
+msgstr "Activo"
+
+#: describe.c:4354
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: describe.c:4373
+msgid "List of event triggers"
+msgstr "Listado de disparadores por eventos"
+
+#: describe.c:4402
+msgid "Source type"
+msgstr "Tipo fuente"
+
+#: describe.c:4403
+msgid "Target type"
+msgstr "Tipo destino"
+
+#: describe.c:4434
+msgid "in assignment"
+msgstr "en asignación"
+
+#: describe.c:4436
+msgid "Implicit?"
+msgstr "Implícito?"
+
+#: describe.c:4491
+msgid "List of casts"
+msgstr "Listado de conversiones de tipo (casts)"
+
+#: describe.c:4519
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "El servidor (versión %s) no soporta «collations»."
+
+#: describe.c:4540 describe.c:4544
+msgid "Provider"
+msgstr "Proveedor"
+
+#: describe.c:4550 describe.c:4555
+msgid "Deterministic?"
+msgstr "¿Determinístico?"
+
+#: describe.c:4590
+msgid "List of collations"
+msgstr "Listado de ordenamientos"
+
+#: describe.c:4649
+msgid "List of schemas"
+msgstr "Listado de esquemas"
+
+#: describe.c:4674 describe.c:4921 describe.c:4992 describe.c:5063
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "El servidor (versión %s) no soporta búsqueda en texto."
+
+#: describe.c:4709
+msgid "List of text search parsers"
+msgstr "Listado de analizadores de búsqueda en texto"
+
+#: describe.c:4754
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "No se encontró ningún analizador de búsqueda en texto llamado «%s»."
+
+#: describe.c:4757
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "No se encontró ningún analizador de búsqueda en texto."
+
+#: describe.c:4832
+msgid "Start parse"
+msgstr "Inicio de parse"
+
+#: describe.c:4833
+msgid "Method"
+msgstr "Método"
+
+#: describe.c:4837
+msgid "Get next token"
+msgstr "Obtener siguiente elemento"
+
+#: describe.c:4839
+msgid "End parse"
+msgstr "Fin de parse"
+
+#: describe.c:4841
+msgid "Get headline"
+msgstr "Obtener encabezado"
+
+#: describe.c:4843
+msgid "Get token types"
+msgstr "Obtener tipos de elemento"
+
+#: describe.c:4854
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Analizador de búsqueda en texto «%s.%s»"
+
+#: describe.c:4857
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Analizador de búsqueda en texto «%s»"
+
+#: describe.c:4876
+msgid "Token name"
+msgstr "Nombre de elemento"
+
+#: describe.c:4887
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Tipos de elemento para el analizador «%s.%s»"
+
+#: describe.c:4890
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Tipos de elemento para el analizador «%s»"
+
+#: describe.c:4944
+msgid "Template"
+msgstr "Plantilla"
+
+#: describe.c:4945
+msgid "Init options"
+msgstr "Opciones de inicialización"
+
+#: describe.c:4967
+msgid "List of text search dictionaries"
+msgstr "Listado de diccionarios de búsqueda en texto"
+
+#: describe.c:5010
+msgid "Init"
+msgstr "Inicializador"
+
+#: describe.c:5011
+msgid "Lexize"
+msgstr "Fn. análisis léx."
+
+#: describe.c:5038
+msgid "List of text search templates"
+msgstr "Listado de plantillas de búsqueda en texto"
+
+#: describe.c:5098
+msgid "List of text search configurations"
+msgstr "Listado de configuraciones de búsqueda en texto"
+
+#: describe.c:5144
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "No se encontró una configuración de búsqueda en texto llamada «%s»."
+
+#: describe.c:5147
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "No se encontró una configuración de búsqueda en texto."
+
+#: describe.c:5213
+msgid "Token"
+msgstr "Elemento"
+
+#: describe.c:5214
+msgid "Dictionaries"
+msgstr "Diccionarios"
+
+#: describe.c:5225
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Configuración de búsqueda en texto «%s.%s»"
+
+#: describe.c:5228
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Configuración de búsqueda en texto «%s»"
+
+#: describe.c:5232
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Analizador: «%s.%s»"
+
+#: describe.c:5235
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Analizador: «%s»"
+
+#: describe.c:5269
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "El servidor (versión %s) no soporta conectores de datos externos."
+
+#: describe.c:5327
+msgid "List of foreign-data wrappers"
+msgstr "Listado de conectores de datos externos"
+
+#: describe.c:5352
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "El servidor (versión %s) no soporta servidores foráneos."
+
+#: describe.c:5365
+msgid "Foreign-data wrapper"
+msgstr "Conectores de datos externos"
+
+#: describe.c:5383 describe.c:5588
+msgid "Version"
+msgstr "Versión"
+
+#: describe.c:5409
+msgid "List of foreign servers"
+msgstr "Listado de servidores foráneos"
+
+#: describe.c:5434
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "El servidor (versión %s) no soporta mapeos de usuario."
+
+#: describe.c:5444 describe.c:5508
+msgid "Server"
+msgstr "Servidor"
+
+#: describe.c:5445
+msgid "User name"
+msgstr "Nombre de usuario"
+
+#: describe.c:5470
+msgid "List of user mappings"
+msgstr "Listado de mapeos de usuario"
+
+#: describe.c:5495
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "El servidor (versión %s) no soporta tablas foráneas."
+
+#: describe.c:5548
+msgid "List of foreign tables"
+msgstr "Listado de tablas foráneas"
+
+#: describe.c:5573 describe.c:5630
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "El servidor (versión %s) no soporta extensiones."
+
+#: describe.c:5605
+msgid "List of installed extensions"
+msgstr "Listado de extensiones instaladas"
+
+#: describe.c:5658
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "No se encontró extensión llamada «%s»."
+
+#: describe.c:5661
+#, c-format
+msgid "Did not find any extensions."
+msgstr "No se encontró ninguna extensión."
+
+#: describe.c:5705
+msgid "Object description"
+msgstr "Descripción de objeto"
+
+#: describe.c:5715
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Objetos en extensión «%s»"
+
+#: describe.c:5744 describe.c:5820
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "El servidor (versión %s) no soporta publicaciones."
+
+#: describe.c:5761 describe.c:5898
+msgid "All tables"
+msgstr "Todas las tablas"
+
+#: describe.c:5762 describe.c:5899
+msgid "Inserts"
+msgstr "Inserts"
+
+#: describe.c:5763 describe.c:5900
+msgid "Updates"
+msgstr "Updates"
+
+#: describe.c:5764 describe.c:5901
+msgid "Deletes"
+msgstr "Deletes"
+
+#: describe.c:5768 describe.c:5903
+msgid "Truncates"
+msgstr "Truncates"
+
+#: describe.c:5772 describe.c:5905
+msgid "Via root"
+msgstr "Via root"
+
+#: describe.c:5789
+msgid "List of publications"
+msgstr "Listado de publicaciones"
+
+#: describe.c:5862
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "No se encontró publicación llamada «%s»."
+
+#: describe.c:5865
+#, c-format
+msgid "Did not find any publications."
+msgstr "No se encontró ninguna publicación."
+
+#: describe.c:5894
+#, c-format
+msgid "Publication %s"
+msgstr "Publicación %s"
+
+#: describe.c:5942
+msgid "Tables:"
+msgstr "Tablas:"
+
+#: describe.c:5986
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "El servidor (versión %s) no soporta suscripciones."
+
+#: describe.c:6002
+msgid "Publication"
+msgstr "Publicación"
+
+#: describe.c:6009
+msgid "Synchronous commit"
+msgstr "Commit síncrono"
+
+#: describe.c:6010
+msgid "Conninfo"
+msgstr "Conninfo"
+
+#: describe.c:6032
+msgid "List of subscriptions"
+msgstr "Listado de suscripciones"
+
+#: describe.c:6099 describe.c:6188 describe.c:6274 describe.c:6357
+msgid "AM"
+msgstr "AM"
+
+#: describe.c:6100
+msgid "Input type"
+msgstr "Tipo de entrada"
+
+#: describe.c:6101
+msgid "Storage type"
+msgstr "Tipo de almacenamiento"
+
+#: describe.c:6102
+msgid "Operator class"
+msgstr "Clase de operador"
+
+#: describe.c:6114 describe.c:6189 describe.c:6275 describe.c:6358
+msgid "Operator family"
+msgstr "Familia de operadores"
+
+#: describe.c:6147
+msgid "List of operator classes"
+msgstr "Listado de clases de operador"
+
+#: describe.c:6190
+msgid "Applicable types"
+msgstr "Tipos aplicables"
+
+#: describe.c:6229
+msgid "List of operator families"
+msgstr "Listado de familias de operadores"
+
+#: describe.c:6276
+msgid "Operator"
+msgstr "Operador"
+
+#: describe.c:6277
+msgid "Strategy"
+msgstr "Estrategia"
+
+#: describe.c:6278
+msgid "ordering"
+msgstr "ordenamiento"
+
+#: describe.c:6279
+msgid "search"
+msgstr "búsqueda"
+
+#: describe.c:6280
+msgid "Purpose"
+msgstr "Propósito"
+
+#: describe.c:6285
+msgid "Sort opfamily"
+msgstr "familia de ops de ordenamiento"
+
+#: describe.c:6316
+msgid "List of operators of operator families"
+msgstr "Lista de operadores de familias de operadores"
+
+#: describe.c:6359
+msgid "Registered left type"
+msgstr "Tipo de dato izquierdo registrado"
+
+#: describe.c:6360
+msgid "Registered right type"
+msgstr "Tipo de dato derecho registrado"
+
+#: describe.c:6361
+msgid "Number"
+msgstr "Número"
+
+#: describe.c:6397
+msgid "List of support functions of operator families"
+msgstr "Listado de funciones de la familia de operadores %s"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql es el terminal interactivo de PostgreSQL.\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "Empleo:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [OPCIONES]... [BASE-DE-DATOS [USUARIO]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Opciones generales:\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=ORDEN ejecutar sólo una orden (SQL o interna) y salir\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr ""
+" -d, --dbname=NOMBRE nombre de base de datos a conectarse\n"
+" (por omisión: «%s»)\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=ARCHIVO ejecutar órdenes desde archivo, luego salir\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list listar bases de datos, luego salir\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=NOMBRE=VALOR\n"
+" definir variable de psql NOMBRE a VALOR\n"
+" (p.ej. -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version mostrar información de versión, luego salir\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc no leer archivo de configuración (~/.psqlrc)\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 («uno»), --single-transaction\n"
+" ejecuta órdenes en una única transacción\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=opcs] mostrar esta ayuda, luego salir\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands listar órdenes backslash, luego salir\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables listar variables especiales, luego salir\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Opciones de entrada y salida:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all mostrar las órdenes del script\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors mostrar órdenes fallidas\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries mostrar órdenes enviadas al servidor\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden mostrar consultas generadas por órdenes internas\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=ARCH envía el registro de la sesión a un archivo\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline deshabilitar edición de línea de órdenes (readline)\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=ARCHIVO enviar resultados de consultas a archivo (u |orden)\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet modo silencioso (sin mensajes, sólo resultados)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step modo paso a paso (confirmar cada consulta)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line modo de líneas (fin de línea termina la orden SQL)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Opciones de formato de salida:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align modo de salida desalineado\n"
+
+#: help.c:111
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv modo de salida de tabla CSV (valores separados por comas)\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=CADENA separador de campos para salida desalineada\n"
+" (por omisión: «%s»)\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html modo de salida en tablas HTML\n"
+
+#: help.c:116
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr " -P, --pset=VAR[=ARG] definir opción de impresión VAR en ARG (ver orden \\pset)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=CADENA separador de registros para salida desalineada\n"
+" (por omisión: salto de línea)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only sólo muestra registros\n"
+
+#: help.c:120
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr ""
+" -T, --table-attr=TEXTO\n"
+" definir atributos de marcas de tabla HTML (ancho, borde)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded activar modo expandido de salida de tablas\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" definir separador de campos para salida desalineada al byte cero\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" definir separador de filas para salida desalineada al byte cero\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Opciones de conexión:\n"
+
+#: help.c:130
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr ""
+" -h, --host=NOMBRE nombre del anfitrión o directorio de socket\n"
+" (por omisión: «%s»)\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "socket local"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PUERTO puerto del servidor (por omisión: «%s»)\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr ""
+" -U, --username=NOMBRE\n"
+" nombre de usuario (por omisión: «%s»)\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password nunca pedir contraseña\n"
+
+#: help.c:142
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr ""
+" -W, --password forzar petición de contraseña\n"
+" (debería ser automático)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"Para obtener más ayuda, digite «\\?» (para órdenes internas) o «\\help»\n"
+"(para órdenes SQL) dentro de psql, o consulte la sección de psql\n"
+"en la documentación de PostgreSQL.\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Reporte de errores a <%s>.\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Sitio web de %s: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "General\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright mostrar términos de uso y distribución de PostgreSQL\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [COLUMNAS] ejecutar la consulta y desplegar en «crosstab»\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose mostrar error más reciente en máxima verbosidad\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(OPTIONS)] [FILE] ejecuta la consulta (y envía el resultado a un fichero o |pipe);\n"
+" \\g sin argumentos es equivalente a un punto y coma\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc describir resultado de la consulta, sin ejecutarla\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec ejecutar la consulta, luego ejecuta cada valor del resultado\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr ""
+" \\gset [PREFIJO] ejecutar la consulta y almacenar los resultados en variables\n"
+" de psql\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\ gx [(OPTIONS)] [FILE] como \\g, pero fuerza el modo de salida expandido\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q salir de psql\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEGS] ejecutar consulta cada SEGS segundos\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "Ayuda\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] desplegar ayuda sobre las órdenes backslash\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options desplegar ayuda sobre opciones de línea de órdenes\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables desplegar ayuda sobre variables especiales\n"
+
+#: help.c:193
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr ""
+" \\h [NOMBRE] mostrar ayuda de sintaxis de órdenes SQL;\n"
+" use «*» para todas las órdenes\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Búfer de consulta\n"
+
+#: help.c:197
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr ""
+" \\e [ARCHIVO] [LÍNEA]\n"
+" editar el búfer de consulta (o archivo) con editor externo\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr ""
+" \\ef [NOMBRE-FUNCIÓN [LÍNEA]]\n"
+" editar una función con editor externo\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr ""
+" \\ev [NOMBRE-VISTA [LÍNEA]]\n"
+" editar definición de una vista con editor externo\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p mostrar el contenido del búfer de consulta\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r reiniciar (limpiar) el búfer de consulta\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [ARCHIVO] mostrar historial de órdenes o guardarlo en archivo\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w ARCHIVO escribir búfer de consulta a archivo\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "Entrada/Salida\n"
+
+#: help.c:209
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... ejecutar orden SQL COPY con flujo de datos al cliente\n"
+
+#: help.c:210
+#, c-format
+msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"
+msgstr " \\echo [-n] [STRING] escribe la cadena en la salida estándar (-n no genera el salto de línea final)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i ARCHIVO ejecutar órdenes desde archivo\n"
+
+#: help.c:212
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr " \\ir ARCHIVO como \\i, pero relativo a la ubicación del script actual\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [ARCHIVO] enviar resultados de consultas a archivo u |orden\n"
+
+#: help.c:214
+#, c-format
+msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"
+msgstr " \\qecho [-n] [STRING] escribe la cadena hacia flujo de salida \\o (-n no genera el salto de línea final)\n"
+
+#: help.c:215
+#, c-format
+msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"
+msgstr " \\warn [-n] [STRING] escribe la cadena a la salida de error estándar (-n no genera el salto de línea final)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "Condicional\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPRESIÓN inicia bloque condicional\n"
+
+#: help.c:220
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR alternativa dentro del bloque condicional actual\n"
+
+#: help.c:221
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else alternativa final dentro del bloque condicional actual\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif termina el bloque condicional\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "Informativo\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (opciones: S = desplegar objectos de sistema, + = agregar más detalle)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] listar tablas, vistas y secuencias\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] NOMBRE describir tabla, índice, secuencia o vista\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [PATRÓN] listar funciones de agregación\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [PATRÓN] listar métodos de acceso\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\do[S] [PATRÓN] listar las clases de operadores\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\do[S] [PATRÓN] listar las familias de operadores\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\do[S] [PATRÓN] listar los operadores de la familia de operadores\n"
+
+#: help.c:234
+#, c-format
+msgid " \\dAp [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr " \\dAp [AMPTRN [OPFPTRN]] enumera las funciones de la familia de operadores\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [PATRÓN] listar tablespaces\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [PATRÓN] listar conversiones\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [PATRÓN] listar conversiones de tipo (casts)\n"
+
+#: help.c:238
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [PATRÓN] listar comentarios de objetos que no aparecen en otra parte\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [PATRÓN] listar dominios\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [PATRÓN] listar privilegios por omisión\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [PATRÓN] listar tablas foráneas\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [PATRÓN] listar tablas foráneas\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [PATRÓN] listar servidores foráneos\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [PATRÓN] listar mapeos de usuario\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [PATRÓN] listar conectores de datos externos\n"
+
+#: help.c:246
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[anptw][S+] [PATRÓN] listar funciones [sólo ag./normal/proc./trigger/ventana]\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [PATRÓN] listar configuraciones de búsqueda en texto\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [PATRÓN] listar diccionarios de búsqueda en texto\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [PATRÓN] listar analizadores (parsers) de búsq. en texto\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [PATRÓN] listar plantillas de búsqueda en texto\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [PATRÓN] listar roles\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [PATRÓN] listar índices\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl listar objetos grandes, lo mismo que \\lo_list\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [PATRÓN] listar lenguajes procedurales\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [PATRÓN] listar vistas materializadas\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [PATRÓN] listar esquemas\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [PATRÓN] listar operadores\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S] [PATRÓN] listar ordenamientos (collations)\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [PATRÓN] listar privilegios de acceso a tablas, vistas y secuencias\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"
+msgstr " \\dP[tin+] [PATRÓN] listar relaciones particionadas (sólo tablas/índices) [n=anidadas]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [PAT1 [PAT2]] listar parámetros de rol por base de datos\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [PATRÓN] listar publicaciones de replicación\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [PATRÓN] listar suscripciones de replicación\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [PATRÓN] listar secuencias\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [PATRÓN] listar tablas\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [PATRÓN] listar tipos de dato\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [PATRÓN] listar roles\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [PATRÓN] listar vistas\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [PATRÓN] listar extensiones\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [PATRÓN] listar disparadores por eventos\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [PATRÓN] listar bases de datos\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNCIÓN mostrar la definición de una función\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] VISTA mostrar la definición de una vista\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [PATRÓN] lo mismo que \\dp\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "Formato\n"
+
+#: help.c:278
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a cambiar entre modo de salida alineado y sin alinear\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [CADENA] definir título de tabla, o indefinir si es vacío\n"
+
+#: help.c:280
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr ""
+" \\f [CADENA] mostrar o definir separador de campos para\n"
+" modo de salida sin alinear\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H cambiar modo de salida HTML (actualmente %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [NOMBRE [VALOR]] define opción de tabla de salida\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|fieldsep_zero|\n"
+" footer|format|linestyle|null|numericlocale|pager|\n"
+" pager_min_lines|recordsep|recordsep_zero|tableattr|title|\n"
+" tuples_only|unicode_border_linestyle|unicode_column_linestyle\n"
+" |unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] mostrar sólo filas (actualmente %s)\n"
+
+#: help.c:292
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [CADENA] definir atributos HTML de <table>, o indefinir si es vacío\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] cambiar modo expandido (actualmente %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "Conexiones\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] [BASE-DE-DATOS|- USUARIO|- ANFITRIÓN|- PUERTO|- | conninfo]\n"
+" conectar a una nueva base de datos (actual: «%s»)\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] [BASE-DE-DATOS|- USUARIO|- ANFITRIÓN|- PUERTO|- | conninfo]\n"
+" conectar a una nueva base de datos (no hay conexión actual)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo despliega la información sobre la conexión actual\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr ""
+" \\encoding [CODIFICACIÓN]\n"
+" mostrar o definir codificación del cliente\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr ""
+" \\password [USUARIO]\n"
+" cambiar la contraseña para un usuario en forma segura\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "Sistema Operativo\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [DIR] cambiar el directorio de trabajo actual\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr ""
+" \\setenv NOMBRE [VALOR]\n"
+" definir o indefinir variable de ambiente\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr ""
+" \\timing [on|off] mostrar tiempo de ejecución de órdenes\n"
+" (actualmente %s)\n"
+
+#: help.c:315
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr ""
+" \\! [ORDEN] ejecutar orden en intérprete de órdenes (shell),\n"
+" o iniciar intérprete interactivo\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "Variables\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [TEXTO] NOMBRE preguntar al usuario el valor de la variable\n"
+
+#: help.c:320
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr ""
+" \\set [NOMBRE [VALOR]] definir variables internas,\n"
+" listar todas si no se dan parámetros\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset NOMBRE indefinir (eliminar) variable interna\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "Objetos Grandes\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID ARCHIVO\n"
+" \\lo_import ARCHIVO [COMENTARIO]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID operaciones con objetos grandes\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"Lista de variables con tratamiento especial\n"
+"\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "variables psql:\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NOMBRE=VALOR\n"
+" o \\set NOMBRE VALOR dentro de psql\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT si está definida, órdenes SQL exitosas se comprometen\n"
+" automáticamente\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE determina si usar mayúsculas al completar palabras SQL\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr " DBNAME la base de datos actualmente conectada\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO controla qué entrada se escribe a la salida estándar\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN muestra consultas internas usadas por órdenes backslash\n"
+" con «noexec» sólo las muestra sin ejecutarlas\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr " ENCODING codificación actual del cliente\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr " ERROR verdadero si la última consulta falló; si no, falso\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT número de filas del resultado que extraer y mostrar cada vez\n"
+" (por omisión: 0=sin límite)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" ocultar métodos de acceso de tabla\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL controla la lista de historia de órdenes\n"
+" [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr " HISTFILE nombre de archivo para almacenar historia de órdenes\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr " HISTSIZE número de órdenes a guardar en la historia de órdenes\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr " HOST el servidor actualmente conectado\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF si no está definida, enviar un EOF a sesión interactiva\n"
+" termina la aplicación\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr " LASTOID el valor del último OID afectado\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" mensaje y SQLSTATE del último error, o cadena vacía y\n"
+" «00000» si no hubo\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK si está definido, un error no aborta la transacción\n"
+" (usa «savepoints» implícitos)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr " ON_ERROR_STOP detiene ejecución por lotes al ocurrir un error\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr " PORT puerto del servidor de la conexión actual\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr " PROMPT1 especifica el prompt estándar de psql\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2 especifica el prompt usado cuando una sentencia continúa\n"
+" de una línea anterior\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr " PROMPT3 especifica el prompt usado durante COPY ... FROM STDIN\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr " QUIET ejecuta silenciosamente (igual que -q)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT número de tuplas retornadas o afectadas por última\n"
+" consulta, o 0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" versión del servidor (cadena corta o numérica)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT controla el despliegue de campos de contexto de mensaje\n"
+" [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr " SINGLELINE fin de línea termina modo de órdenes SQL (igual que -S)\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr " SINGLESTEP modo paso a paso (igual que -s)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr " SQLSTATE SQLSTATE de la última consulta, o «00000» si no hubo error\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr " USER el usuario actualmente conectado\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY controla la verbosidad de errores [default, verbose,\n"
+" terse, sqlstate]\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" versión de psql (cadena verbosa, corta o numérica)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Parámetros de despliegue:\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NOMBRE[=VALOR]\n"
+" o \\pset NOMBRE [VALOR] dentro de psql\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr " border estilo de borde (número)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr " columns define el ancho para formato «wrapped»\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr " expanded (o x) salida expandida [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep separador de campos para formato «unaligned»\n"
+" (por omisión: «%s»)\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr " fieldsep_zero separador de campos en «unaligned» es byte cero\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr " footer activa o desactiva el pie de tabla [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr " format define el formato de salida [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr " linestyle define el estilo de dibujo de líneas [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr " null define la cadena a imprimirse para valores null\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale activa despliegue de carácter específico del lenguaje para\n"
+" separar grupos de dígitos\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr " pager controla cuándo se usará un paginador externo [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr " recordsep separador de registros (líneas) para formato «unaligned»\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr " recordsep_zero separador de registros en «unaligned» es byte cero\n"
+
+# XXX WTF does this mean?
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (o T) especifica atributos para el tag «table» en formato «html»,\n"
+" o ancho proporcional de columnas alineadas a la izquierda\n"
+" en formato «latex-longtable»\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr " title define el título de tablas\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr " tuples_only si está definido, sólo los datos de la tabla se muestran\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" define el estilo de líneas Unicode [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Variables de ambiente:\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NOMBRE=VALOR [NOMBRE=VALOR] psql ...\n"
+" o \\setenv NOMBRE [VALOR] dentro de psql\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NOMBRE=VALOR\n"
+" psql ...\n"
+" o \\setenv NOMBRE [VALOR] dentro de psql\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr " COLUMNS número de columnas para formato «wrapped»\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr " PGAPPNAME igual que el parámetro de conexión application_name\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr " PGDATABASE igual que el parámetro de conexión dbname\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr " PGHOST igual que el parámetro de conexión host\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr " PGPASSWORD contraseña de la conexión (no recomendado)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr " PGPASSFILE nombre de archivo de contraseñas\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr " PGPORT igual que el parámetro de conexión port\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr " PGUSER igual que el parámetro de conexión user\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor usado por órdenes \\e, \\ef, y \\ev\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARGS\n"
+" cómo especificar número de línea al invocar al editor\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr " PSQL_HISTORY ubicación alternativa del archivo de historia de órdenes\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr " PSQL_PAGER, PAGER nombre de programa paginador externo\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr " PSQLRC ubicación alternativa para el archivo .psqlrc del usuario\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr " SHELL intérprete usado por la orden \\!\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr " TMPDIR directorio para archivos temporales\n"
+
+#: help.c:555
+msgid "Available help:\n"
+msgstr "Ayuda disponible:\n"
+
+#: help.c:650
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"Orden: %s\n"
+"Descripción: %s\n"
+"Sintaxis:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:673
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"No hay ayuda disponible para «%s».\n"
+"Pruebe \\h sin argumentos para mostrar los elementos de ayuda disponibles.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "no se pudo leer el archivo de entrada: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "no se pudo guardar historial a archivo «%s»: %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "el historial de órdenes no está soportado en esta instalación"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: no está conectado a una base de datos"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: transacción en curso está abortada"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: estado de transacción desconocido"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "Objetos grandes"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: escapado"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Use «\\q» para salir de %s.\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"La entrada es un dump de PostgreSQL en formato custom.\n"
+"Use el programa pg_restore para restaurar este dump a una base de datos.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Use \\? para ayuda o presione control-C para limpiar el búfer de entrada."
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "Digite \\? para obtener ayuda."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Está usando psql, la interfaz de línea de órdenes de PostgreSQL."
+
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Digite: \\copyright para ver los términos de distribución\n"
+" \\h para ayuda de órdenes SQL\n"
+" \\? para ayuda de órdenes psql\n"
+" \\g o punto y coma («;») para ejecutar la consulta\n"
+" \\q para salir\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "Use \\q para salir."
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "Use control-D para salir."
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "Use control-C para salir."
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "consulta ignorada; use \\endif o Ctrl-C para salir del bloque \\if actual"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "se alcanzó EOF sin encontrar el/los \\endif de cierre"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "una cadena de caracteres entre comillas está inconclusa"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: memoria agotada"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "nombre"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "signatura_func_agregación"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "nuevo_nombre"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "nuevo_dueño"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "nuevo_esquema"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "donde signatura_func_agregación es:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "modo_arg"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "nombre_arg"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "tipo_arg"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "opción"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "donde opción puede ser:"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "allowconn"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "límite_conexiones"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "esplantilla"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "nuevo_tablespace"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "parámetro_de_configuración"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "valor"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "rol_destino"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "nombre_de_esquema"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "grant_o_revoke_abreviado"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "donde grant_o_revoke_abreviado es uno de:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "nombre_de_rol"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "expresión"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "restricción_de_dominio"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "nombre_restricción"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "nuevo_nombre_restricción"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "nueva_versión"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "objeto_miembro"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "dondo objeto_miembro es:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "nombre_de_objeto"
+
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "nombre_función_agregación"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "tipo_fuente"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "tipo_destino"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "nombre_de_función"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "nombre_operador"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "tipo_izq"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "tipo_der"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "método_de_índice"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "nombre_de_procedimiento"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "nombre_de_rutina"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "nombre_de_tipo"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "nombre_lenguaje"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "y signatura_func_agregación es:"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "función_manejadora"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "función_validadora"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "acción"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "nombre_de_columna"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "nuevo_nombre_de_columna"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "donde acción es una de:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "tipo_de_dato"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "ordenamiento"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "restricción_de_columna"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "entero"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "opción_de_atributo"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "restricción_de_tabla"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "nombre_disparador"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "tabla_padre"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "nombre_de_extensión"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "costo_de_ejecución"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "núm_de_filas"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "función_de_soporte"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "especificación_de_rol"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "nombre_de_usuario"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "donde especificación_de_rol puede ser:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "nombre_de_grupo"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "nombre_de_tablespace"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "nombre_índice"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "parámetro_de_almacenamiento"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "número_de_columna"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "oid_de_objeto_grande"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr "proc_res"
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr "proc_join"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "número_de_estrategia"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "tipo_op"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr "nombre_familia_ordenamiento"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr "número_de_soporte"
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "tipo_argumento"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "nombre_de_tabla"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr "expresión_using"
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "expresión_check"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "parámetro_de_publicación"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "contraseña"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr "fecha_hora"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "nombre_de_base_de_datos"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr "incremento"
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "valormin"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "valormax"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "inicio"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "reinicio"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "cache"
+
+#: sql_help.c:1097
+msgid "new_target"
+msgstr "nuevo_valor"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "conninfo"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "nombre_de_publicación"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "opción_de_conjunto_de_publicación"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "opción_refresh"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "parámetro_de_suscripción"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "nombre_de_partición"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "borde_de_partición"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "opciones_de_secuencia"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "opción_de_secuencia"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr "restricción_de_tabla_con_índice"
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr "nombre_regla_de_reescritura"
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr "y borde_de_partición es:"
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "expresión_de_borde_de_partición"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr "literal_numérico"
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "donde restricción_de_columna es:"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "expr_por_omisión"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr "expr_de_generación"
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "parámetros_de_índice"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "tabla_ref"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "columna_ref"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "acción_referencial"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "y restricción_de_tabla es:"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr "elemento_de_exclusión"
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "operador"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "predicado"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr "y restricción_de_tabla_con_índice es:"
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "parámetros_de_índice en UNIQUE, PRIMARY KEY y EXCLUDE son:"
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "elemento_de_exclusión en una restricción EXCLUDE es:"
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "clase_de_ops"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "opción_de_tablespace"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "tipo_de_token"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "nombre_diccionario"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "diccionario_antiguo"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "diccionario_nuevo"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "nombre_atributo"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "nuevo_nombre_atributo"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr "nuevo_valor_enum"
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr "valor_enum_vecino"
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr "valor_enum_existente"
+
+#: sql_help.c:1537
+msgid "property"
+msgstr "propiedad"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "nombre_de_servidor"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "nombre_opción_de_vista"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr "valor_opción_de_vista"
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "tabla_y_columnas"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "donde opción puede ser una de:"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr "booleano"
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "y tabla_y_columnas es:"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "modo_de_transacción"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "donde modo_de_transacción es uno de:"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "argumento"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "nombre_relación"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "nombre_de_dominio"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "nombre_de_política"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "nombre_regla"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr "texto"
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "id_de_transacción"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "nombre_de_archivo"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "orden"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "condición"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "consulta"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "nombre_de_formato"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "carácter_delimitador"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "cadena_null"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "carácter_de_comilla"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "carácter_de_escape"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "nombre_codificación"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr "tipo_de_método_de_acceso"
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "tipo_de_dato_arg"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr "func_transición"
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr "tipo_de_dato_de_estado"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr "tamaño_de_dato_de_estado"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr "func_final"
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr "func_combinación"
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr "func_serial"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr "func_deserial"
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr "condición_inicial"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr "func_transición_m"
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr "func_inv_m"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr "tipo_de_dato_de_estado_m"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr "tamaño_de_dato_de_estado_m"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr "func_final_m"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr "condición_inicial_m"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "operador_de_ordenamiento"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "o la sintaxis antigua"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "tipo_base"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "configuración regional"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "proveedor"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "versión"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr "ordenamiento_existente"
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "codificación_origen"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "codificación_destino"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "plantilla"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "codificación"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "restricción"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "donde restricción es:"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "evento"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr "variable_de_filtrado"
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "donde restricción_de_columna es:"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr "tipo_ret"
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr "tipo_columna"
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "definición"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "archivo_obj"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "símbolo_enlace"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "método"
+
+#: sql_help.c:2371
+msgid "opclass_parameter"
+msgstr "parámetro_opclass"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr "manejador_de_llamada"
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr "manejador_en_línea"
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "función_val"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr "op_conm"
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr "op_neg"
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr "nombre_familia"
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "tipo_almacenamiento"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "donde evento puede ser una de:"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr "elemento_de_esquema"
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "tipo_de_servidor"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "versión_de_servidor"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "nombre_fdw"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "nombre_de_estadística"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "tipo_de_estadística"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "nombre_de_suscripción"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "tabla_origen"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "opción_de_like"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr "y opción_de_like es:"
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "directorio"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "nombre_de_parser"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "config_origen"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "función_inicio"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "función_gettoken"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "función_fin"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "función_lextypes"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "función_headline"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "función_init"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "función_lexize"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr "nombre_de_función_from"
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr "nombre_de_función_to"
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr "nombre_tabla_referenciada"
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "nombre_de_relación_de_transición"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "argumentos"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr "etiqueta"
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr "subtipo"
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr "clase_de_operador_del_subtipo"
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr "función_canónica"
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr "función_diff_del_subtipo"
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "función_entrada"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "función_salida"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "función_receive"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "función_send"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr "función_entrada_del_modificador_de_tipo"
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr "función_salida_del_modificador_de_tipo"
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "función_analyze"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr "largo_interno"
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "alineamiento"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "almacenamiento"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr "como_tipo"
+
+#: sql_help.c:3065
+msgid "category"
+msgstr "categoría"
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr "preferido"
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "valor_por_omisión"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "elemento"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "delimitador"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr "ordenable"
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr "consulta_with"
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "alias"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr "item_de_from"
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "nombre_de_cursor"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "expresión_de_salida"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr "nombre_de_salida"
+
+#: sql_help.c:3190
+msgid "code"
+msgstr "código"
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "parámetro"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "sentencia"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "dirección"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "donde dirección puede ser vacío o uno de:"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "cantidad"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "nombre_secuencia"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "nombre_arg"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "tipo_arg"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr "loid"
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "schema_remoto"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "schema_local"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr "destino_de_conflict"
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr "acción_de_conflict"
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "donde destino_de_conflict puede ser uno de:"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "nombre_de_columna_de_índice"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "expresión_de_índice"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr "predicado_de_índice"
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "donde acción_de_conflict es una de:"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr "sub-SELECT"
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr "canal"
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr "modo_bloqueo"
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "donde modo_bloqueo es uno de:"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr "carga"
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "rol_antiguo"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "rol_nuevo"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "nombre_de_savepoint"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr "elemento_agrupante"
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "nombre_de_ventana"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "definición_de_ventana"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr "select"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr "donde item_de_from puede ser uno de:"
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "alias_de_columna"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "método_de_sampleo"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr "semilla"
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr "nombre_consulta_with"
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "definición_de_columna"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr "tipo_de_join"
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr "condición_de_join"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr "columna_de_join"
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr "donde elemento_agrupante puede ser una de:"
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr "y consulta_with es:"
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "valores"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "nueva_tabla"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr "huso_horario"
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr "id_de_snapshot"
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr "expresión_orden"
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "aborta la transacción en curso"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "cambia la definición de una función de agregación"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "cambia la definición de un ordenamiento"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "cambia la definición de una conversión"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "cambia una base de datos"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "define privilegios de acceso por omisión"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "cambia la definición de un dominio"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "cambia la definición de un disparador por evento"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "cambia la definición de una extensión"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "cambia la definición de un conector de datos externos"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "cambia la definición de una tabla foránea"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "cambia la definición de una función"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "cambiar nombre del rol o membresía"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "cambia la definición de un índice"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "cambia la definición de un lenguaje procedural"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "cambia la definición de un objeto grande"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "cambia la definición de una vista materializada"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "cambia la definición de un operador"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "cambia la definición de una clase de operadores"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "cambia la definición de una familia de operadores"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "cambia la definición de una política de seguridad de registros"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "cambia la definición de un procedimiento"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "cambia la definición de una publicación"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "cambia un rol de la base de datos"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "cambia la definición de una rutina"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "cambia la definición de una regla"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "cambia la definición de un esquema"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "cambia la definición de un generador secuencial"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "cambia la definición de un servidor foráneo"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "cambia la definición de un objeto de estadísticas extendidas"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "cambia la definición de una suscripción"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "cambia un parámetro de configuración del servidor"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "cambia la definición de una tabla"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "cambia la definición de un tablespace"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "cambia la definición de una configuración de búsqueda en texto"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "cambia la definición de un diccionario de búsqueda en texto"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "cambia la definición de un analizador de búsqueda en texto"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "cambia la definición de una plantilla de búsqueda en texto"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "cambia la definición de un disparador"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "cambia la definición de un tipo"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "cambia la definición de un mapeo de usuario"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "cambia la definición de una vista"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "recolecta estadísticas sobre una base de datos"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "inicia un bloque de transacción"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "invocar un procedimiento"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "fuerza un checkpoint de wal"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "cierra un cursor"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "reordena una tabla siguiendo un índice"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "define o cambia un comentario sobre un objeto"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "compromete la transacción en curso"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "confirma una transacción que fue preparada para two-phase commit"
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "copia datos entre un archivo y una tabla"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "define un nuevo método de acceso"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "define una nueva función de agregación"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "define una nueva conversión de tipo"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "define un nuevo ordenamiento"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "define una nueva conversión de codificación"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "crea una nueva base de datos"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "define un nuevo dominio"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "define un nuevo disparador por evento"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "instala una extensión"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "define un nuevo conector de datos externos"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "define una nueva tabla foránea"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "define una nueva función"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "define un nuevo rol de la base de datos"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "define un nuevo índice"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "define un nuevo lenguaje procedural"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "define una nueva vista materializada"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "define un nuevo operador"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "define una nueva clase de operadores"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "define una nueva familia de operadores"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "define una nueva política de seguridad de registros para una tabla"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "define un nuevo procedimiento"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "define una nueva publicación"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "define una nueva regla de reescritura"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "define un nuevo schema"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "define un nuevo generador secuencial"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "define un nuevo servidor foráneo"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "define estadísticas extendidas"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "define una nueva suscripción"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "define una nueva tabla"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "crea una nueva tabla usando los resultados de una consulta"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "define un nuevo tablespace"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "define una nueva configuración de búsqueda en texto"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "define un nuevo diccionario de búsqueda en texto"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "define un nuevo analizador de búsqueda en texto"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "define una nueva plantilla de búsqueda en texto"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "define una nueva transformación"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "define un nuevo disparador"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "define un nuevo tipo de datos"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "define un nuevo mapa de usuario a servidor foráneo"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "define una nueva vista"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "elimina una sentencia preparada"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "define un nuevo cursor"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "elimina filas de una tabla"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "descartar datos de la sesión"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "ejecutar un bloque anónimo de código"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "elimina un método de acceso"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "elimina una función de agregación"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "elimina una conversión de tipo"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "elimina un ordenamiento"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "elimina una conversión de codificación"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "elimina una base de datos"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "elimina un dominio"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "elimina un disparador por evento"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "elimina una extensión"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "elimina un conector de datos externos"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "elimina una tabla foránea"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "elimina una función"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "elimina un rol de base de datos"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "elimina un índice"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "elimina un lenguaje procedural"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "elimina una vista materializada"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "elimina un operador"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "elimina una clase de operadores"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "elimina una familia de operadores"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "elimina objetos de propiedad de un rol de la base de datos"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "elimina una política de seguridad de registros de una tabla"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "elimina un procedimiento"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "elimina una publicación"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "elimina una rutina"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "elimina una regla de reescritura"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "elimina un schema"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "elimina un generador secuencial"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "elimina un descriptor de servidor foráneo"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "elimina estadísticas extendidas"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "elimina una suscripción"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "elimina una tabla"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "elimina un tablespace"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "elimina una configuración de búsqueda en texto"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "elimina un diccionario de búsqueda en texto"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "elimina un analizador de búsqueda en texto"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "elimina una plantilla de búsqueda en texto"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "elimina una transformación"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "elimina un disparador"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "elimina un tipo de datos"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "elimina un mapeo de usuario para un servidor remoto"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "elimina una vista"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "ejecuta una sentencia preparada"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "muestra el plan de ejecución de una sentencia"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "recupera filas de una consulta usando un cursor"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "define privilegios de acceso"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "importa definiciones de tablas desde un servidor foráneo"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "crea nuevas filas en una tabla"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "escucha notificaciones"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "carga un archivo de biblioteca compartida"
+
+#: sql_help.c:5725
+msgid "lock a table"
+msgstr "bloquea una tabla"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "reposiciona un cursor"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "genera una notificación"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "prepara una sentencia para ejecución"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "prepara la transacción actual para two-phase commit"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "cambia de dueño a los objetos de propiedad de un rol de la base de datos"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "reemplaza los contenidos de una vista materializada"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "reconstruye índices"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "destruye un savepoint previamente definido"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "restaura el valor de un parámetro de configuración al valor inicial"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "revoca privilegios de acceso"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "cancela una transacción que fue previamente preparada para two-phase commit"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "descartar hacia un savepoint"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "define un nuevo savepoint en la transacción en curso"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "define o cambia una etiqueta de seguridad sobre un objeto"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "recupera filas desde una tabla o vista"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "cambia un parámetro de configuración"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "define el modo de verificación de las restricciones de la transacción en curso"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "define el identificador de usuario actual de la sesión actual"
+
+#: sql_help.c:5851
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr ""
+"define el identificador del usuario de sesión y el identificador\n"
+"del usuario actual de la sesión en curso"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "define las características de la transacción en curso"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "muestra el valor de un parámetro de configuración"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "vacía una tabla o conjunto de tablas"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "deja de escuchar una notificación"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "actualiza filas de una tabla"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "recolecta basura y opcionalmente estadísticas sobre una base de datos"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "calcula un conjunto de registros"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 sólo puede ser usado en modo no interactivo"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "no se pudo abrir el archivo de registro «%s»: %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Digite «help» para obtener ayuda.\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "no se pudo definir parámetro de impresión «%s»"
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Use «%s --help» para obtener más información.\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "se ignoró argumento extra «%s» en línea de órdenes"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "no se pudo encontrar el ejecutable propio"
+
+#: tab-complete.c:4640
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"la consulta para completación por tabulador falló: %s\n"
+"La consulta era:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "valor «%s» no reconocido para «%s»: se esperaba booleano"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "valor «%s» no válido para «%s»: se esperaba número entero"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "nombre de variable no válido: «%s»"
+
+#: variables.c:419
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"valor «%s» no reconocido para «%s»\n"
+"Los valores disponibles son: %s."
+
+#~ msgid "could not connect to server: %s"
+#~ msgstr "no se pudo conectar al servidor: %s"
+
+#~ msgid "Could not send cancel request: %s"
+#~ msgstr "No se pudo enviar el paquete de cancelación: %s"
diff --git a/src/bin/psql/po/fr.po b/src/bin/psql/po/fr.po
new file mode 100644
index 0000000..3c4d806
--- /dev/null
+++ b/src/bin/psql/po/fr.po
@@ -0,0 +1,6860 @@
+# translation of psql.po to fr_fr
+# french message translation file for psql
+#
+# Use these quotes: « %s »
+# Peter Eisentraut <peter_e@gmx.net>, 2001.
+# Guillaume Lelarge <guillaume@lelarge.info>, 2003-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 12\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-06-13 18:57+0000\n"
+"PO-Revision-Date: 2021-06-14 16:09+0200\n"
+"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
+"Language-Team: French <guillaume@lelarge.info>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 2.4.3\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "fatal : "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "erreur : "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "attention : "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "n'a pas pu identifier le répertoire courant : %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "binaire « %s » invalide"
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "n'a pas pu lire le binaire « %s »"
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "n'a pas pu trouver un « %s » à exécuter"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "n'a pas pu modifier le répertoire par « %s » : %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "n'a pas pu lire le lien symbolique « %s » : %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "échec de pclose : %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1256 command.c:3193 command.c:3242 command.c:3359 input.c:227
+#: mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "mémoire épuisée"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "mémoire épuisée\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s"
+
+#: ../../common/username.c:45 command.c:560
+msgid "user does not exist"
+msgstr "l'utilisateur n'existe pas"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "commande non exécutable"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "commande introuvable"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "le processus fils a quitté avec le code de sortie %d"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "le processus fils a été terminé par l'exception 0x%X"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "le processus fils a été terminé par le signal %d : %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "le processus fils a quitté avec un statut %d non reconnu"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "Requête d'annulation envoyée\n"
+
+#: ../../fe_utils/cancel.c:165 ../../fe_utils/cancel.c:210
+msgid "Could not send cancel request: "
+msgstr "N'a pas pu envoyer la requête d'annulation : "
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu ligne)"
+msgstr[1] "(%lu lignes)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "Interrompu\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr ""
+"Ne peut pas ajouter l'en-tête au contenu de la table : le nombre de colonnes\n"
+"%d est dépassé.\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr ""
+"Ne peut pas ajouter une cellule au contenu de la table : le nombre total des\n"
+"cellules %d est dépassé.\n"
+
+#: ../../fe_utils/print.c:3417
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "format de sortie invalide (erreur interne) : %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "ignore l'expansion récursive de la variable « %s »"
+
+#: command.c:225
+#, c-format
+msgid "invalid command \\%s"
+msgstr "commande \\%s invalide"
+
+#: command.c:227
+#, c-format
+msgid "Try \\? for help."
+msgstr "Essayez \\? pour l'aide."
+
+#: command.c:245
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s : argument « %s » supplémentaire ignoré"
+
+#: command.c:297
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "commande \\%s ignorée ; utilisez \\endif ou Ctrl-C pour quitter le bloc \\if courant"
+
+#: command.c:558
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "n'a pas pu obtenir le répertoire principal pour l'identifiant d'utilisateur %ld : %s"
+
+#: command.c:576
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s : n'a pas pu accéder au répertoire « %s » : %m"
+
+#: command.c:601
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "Vous n'êtes pas connecté à une base de données.\n"
+
+#: command.c:614
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Vous êtes connecté à la base de données « %s » en tant qu'utilisateur « %s » à l'adresse « %s » via le port « %s ».\n"
+
+#: command.c:617
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Vous êtes connecté à la base de données « %s » en tant qu'utilisateur « %s » via le socket dans « %s » via le port « %s ».\n"
+
+#: command.c:623
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Vous êtes connecté à la base de données « %s » en tant qu'utilisateur « %s » sur l'hôte « %s » (adresse « %s ») via le port « %s ».\n"
+
+#: command.c:626
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Vous êtes connecté à la base de données « %s » en tant qu'utilisateur « %s » sur l'hôte « %s » via le port « %s ».\n"
+
+#: command.c:966 command.c:1062 command.c:2551
+#, c-format
+msgid "no query buffer"
+msgstr "aucun tampon de requête"
+
+#: command.c:999 command.c:5211
+#, c-format
+msgid "invalid line number: %s"
+msgstr "numéro de ligne invalide : %s"
+
+#: command.c:1053
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "Le serveur (version %s) ne supporte pas l'édition du code de la fonction."
+
+#: command.c:1056
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "Le serveur (version %s) ne supporte pas l'édition des définitions de vue."
+
+#: command.c:1138
+msgid "No changes"
+msgstr "Aucun changement"
+
+#: command.c:1217
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s : nom d'encodage invalide ou procédure de conversion introuvable"
+
+#: command.c:1252 command.c:1993 command.c:3189 command.c:3381 command.c:5313
+#: common.c:176 common.c:225 common.c:390 common.c:1246 common.c:1274
+#: common.c:1383 common.c:1490 common.c:1528 copy.c:488 copy.c:707 help.c:62
+#: large_obj.c:157 large_obj.c:192 large_obj.c:254 startup.c:299
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1259
+msgid "There is no previous error."
+msgstr "Il n'y a pas d'erreur précédente."
+
+#: command.c:1372
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: parenthèse droite manquante"
+
+#: command.c:1549 command.c:1854 command.c:1868 command.c:1885 command.c:2045
+#: command.c:2282 command.c:2518 command.c:2558
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s : argument requis manquant"
+
+#: command.c:1680
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif : ne peut pas survenir après \\else"
+
+#: command.c:1685
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif : pas de \\if correspondant"
+
+#: command.c:1749
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else : ne peut pas survenir après \\else"
+
+#: command.c:1754
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else : pas de \\if correspondant"
+
+#: command.c:1794
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif : pas de \\if correspondant"
+
+#: command.c:1949
+msgid "Query buffer is empty."
+msgstr "Le tampon de requête est vide."
+
+#: command.c:1971
+msgid "Enter new password: "
+msgstr "Saisissez le nouveau mot de passe : "
+
+#: command.c:1972
+msgid "Enter it again: "
+msgstr "Saisissez-le à nouveau : "
+
+#: command.c:1976
+#, c-format
+msgid "Passwords didn't match."
+msgstr "Les mots de passe ne sont pas identiques."
+
+#: command.c:2075
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s : n'a pas pu lire la valeur pour la variable"
+
+#: command.c:2178
+msgid "Query buffer reset (cleared)."
+msgstr "Le tampon de requête a été effacé."
+
+#: command.c:2200
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Historique sauvegardé dans le fichier « %s ».\n"
+
+#: command.c:2287
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s : le nom de la variable d'environnement ne doit pas contenir « = »"
+
+#: command.c:2348
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "Le serveur (version %s) ne supporte pas l'affichage du code de la fonction."
+
+#: command.c:2351
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "Le serveur (version %s) ne supporte pas l'affichage des définitions de vues."
+
+#: command.c:2358
+#, c-format
+msgid "function name is required"
+msgstr "le nom de la fonction est requis"
+
+#: command.c:2360
+#, c-format
+msgid "view name is required"
+msgstr "le nom de la vue est requis"
+
+#: command.c:2490
+msgid "Timing is on."
+msgstr "Chronométrage activé."
+
+#: command.c:2492
+msgid "Timing is off."
+msgstr "Chronométrage désactivé."
+
+#: command.c:2577 command.c:2605 command.c:3790 command.c:3793 command.c:3796
+#: command.c:3802 command.c:3804 command.c:3830 command.c:3840 command.c:3852
+#: command.c:3866 command.c:3883 command.c:3941 common.c:72 copy.c:331
+#: copy.c:403 psqlscanslash.l:786 psqlscanslash.l:797 psqlscanslash.l:807
+#, c-format
+msgid "%s: %m"
+msgstr "%s : %m"
+
+#: command.c:2989 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "Mot de passe : "
+
+#: command.c:2994 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "Mot de passe pour l'utilisateur %s : "
+
+#: command.c:3048
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "Tous les paramètres de connexion doivent être fournis car il n'existe pas de connexion à une base de données"
+
+#: command.c:3387
+#, c-format
+msgid "Previous connection kept"
+msgstr "Connexion précédente conservée"
+
+#: command.c:3393
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect : %s"
+
+#: command.c:3440
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s » à l'adresse « %s » via le port « %s ».\n"
+
+#: command.c:3443
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s » via le socket dans « %s » via le port « %s ».\n"
+
+#: command.c:3449
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s » sur l'hôte « %s » (adresse « %s » ) via le port « %s ».\n"
+
+#: command.c:3452
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s » sur l'hôte « %s » via le port « %s ».\n"
+
+#: command.c:3457
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s ».\n"
+
+#: command.c:3490
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, serveur %s)\n"
+
+#: command.c:3498
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"ATTENTION : %s version majeure %s, version majeure du serveur %s.\n"
+" Certaines fonctionnalités de psql pourraient ne pas fonctionner.\n"
+
+#: command.c:3537
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "Connexion SSL (protocole : %s, chiffrement : %s, bits : %s, compression : %s)\n"
+
+#: command.c:3538 command.c:3539 command.c:3540
+msgid "unknown"
+msgstr "inconnu"
+
+#: command.c:3541 help.c:45
+msgid "off"
+msgstr "désactivé"
+
+#: command.c:3541 help.c:45
+msgid "on"
+msgstr "activé"
+
+#: command.c:3555
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "connexion chiffrée avec GSSAPI\n"
+
+#: command.c:3575
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"Attention : l'encodage console (%u) diffère de l'encodage Windows (%u).\n"
+" Les caractères 8 bits peuvent ne pas fonctionner correctement.\n"
+" Voir la section « Notes aux utilisateurs de Windows » de la page\n"
+" référence de psql pour les détails.\n"
+
+#: command.c:3679
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "la variable d'environnement PSQL_EDITOR_LINENUMBER_ARG doit être définie avec un numéro de ligne"
+
+#: command.c:3708
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "n'a pas pu exécuter l'éditeur « %s »"
+
+#: command.c:3710
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "n'a pas pu exécuter /bin/sh"
+
+#: command.c:3747
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "n'a pas pu localiser le répertoire temporaire : %s"
+
+#: command.c:3774
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "n'a pas pu ouvrir le fichier temporaire « %s » : %m"
+
+#: command.c:4100
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: abréviation ambigüe : « %s » correspond à « %s » comme à « %s »"
+
+#: command.c:4120
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset : les formats autorisés sont aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:4139
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: les styles de lignes autorisés sont ascii, old-ascii, unicode"
+
+#: command.c:4154
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset : les styles autorisés de ligne de bordure Unicode sont single, double"
+
+#: command.c:4169
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset : les styles autorisés pour la ligne de colonne Unicode sont single, double"
+
+#: command.c:4184
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset : les styles autorisés pour la ligne d'en-tête Unicode sont single, double"
+
+#: command.c:4227
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep doit être un unique caractère d'un octet"
+
+#: command.c:4232
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldsep ne peut pas être un guillemet, un retour à la ligne ou un retour chariot"
+
+#: command.c:4369 command.c:4557
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset : option inconnue : %s"
+
+#: command.c:4389
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Le style de bordure est %d.\n"
+
+#: command.c:4395
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "La largeur cible n'est pas configuré.\n"
+
+#: command.c:4397
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "La largeur cible est %d.\n"
+
+#: command.c:4404
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Affichage étendu activé.\n"
+
+#: command.c:4406
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "L'affichage étendu est utilisé automatiquement.\n"
+
+#: command.c:4408
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Affichage étendu désactivé.\n"
+
+#: command.c:4414
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "Le séparateur de champs pour un CSV est « %s ».\n"
+
+#: command.c:4422 command.c:4430
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Le séparateur de champs est l'octet zéro.\n"
+
+#: command.c:4424
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Le séparateur de champs est « %s ».\n"
+
+#: command.c:4437
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Le bas de page pas défaut est activé.\n"
+
+#: command.c:4439
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Le bas de page par défaut est désactivé.\n"
+
+#: command.c:4445
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Le format de sortie est %s.\n"
+
+#: command.c:4451
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Le style de ligne est %s.\n"
+
+#: command.c:4458
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "L'affichage de null est « %s ».\n"
+
+#: command.c:4466
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "L'affichage de la sortie numérique adaptée à la locale est activé.\n"
+
+#: command.c:4468
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "L'affichage de la sortie numérique adaptée à la locale est désactivé.\n"
+
+#: command.c:4475
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Le paginateur est utilisé pour les affichages longs.\n"
+
+#: command.c:4477
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Le paginateur est toujours utilisé.\n"
+
+#: command.c:4479
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "L'utilisation du paginateur est désactivé.\n"
+
+#: command.c:4485
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "Le paginateur ne sera pas utilisé pour moins que %d ligne.\n"
+msgstr[1] "Le paginateur ne sera pas utilisé pour moins que %d lignes.\n"
+
+#: command.c:4495 command.c:4505
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Le séparateur d'enregistrements est l'octet zéro.\n"
+
+#: command.c:4497
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Le séparateur d'enregistrement est <saut de ligne>.\n"
+
+#: command.c:4499
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Le séparateur d'enregistrements est « %s ».\n"
+
+#: command.c:4512
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Les attributs de la table sont « %s ».\n"
+
+#: command.c:4515
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Les attributs de la table ne sont pas définis.\n"
+
+#: command.c:4522
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Le titre est « %s ».\n"
+
+#: command.c:4524
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Le titre n'est pas défini.\n"
+
+#: command.c:4531
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "L'affichage des tuples seuls est activé.\n"
+
+#: command.c:4533
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "L'affichage des tuples seuls est désactivé.\n"
+
+#: command.c:4539
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Le style de bordure Unicode est « %s ».\n"
+
+#: command.c:4545
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Le style de ligne Unicode est « %s ».\n"
+
+#: command.c:4551
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Le style d'en-tête Unicode est « %s ».\n"
+
+#: command.c:4784
+#, c-format
+msgid "\\!: failed"
+msgstr "\\! : échec"
+
+#: command.c:4809 common.c:650
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch ne peut pas être utilisé avec une requête vide"
+
+#: command.c:4850
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (chaque %gs)\n"
+
+#: command.c:4853
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (chaque %gs)\n"
+
+#: command.c:4907 command.c:4914 common.c:550 common.c:557 common.c:1229
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"******** REQUÊTE *********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:5106
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "« %s.%s » n'est pas une vue"
+
+#: command.c:5122
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "n'a pas pu analyser le tableau reloptions"
+
+#: common.c:161
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "ne peut mettre entre guillemets sans connexion active"
+
+#: common.c:202
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "l'argument de la commande shell contient un retour à la ligne ou un retour chariot : « %s »"
+
+#: common.c:306
+#, c-format
+msgid "connection to server was lost"
+msgstr "la connexion au serveur a été perdue"
+
+#: common.c:310
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "La connexion au serveur a été perdue. Tentative de réinitialisation : "
+
+#: common.c:315
+#, c-format
+msgid "Failed.\n"
+msgstr "Échec.\n"
+
+#: common.c:328
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Succès.\n"
+
+#: common.c:380 common.c:947 common.c:1164
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "PQresultStatus inattendu : %d"
+
+#: common.c:489
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Temps : %.3f ms\n"
+
+#: common.c:504
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Durée : %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:513
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Durée : %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:520
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Durée : %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:544 common.c:602 common.c:1200
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "Vous n'êtes pas connecté à une base de données."
+
+#: common.c:657
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch ne peut pas être utilisé avec COPY"
+
+#: common.c:662
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "statut résultat inattendu pour \\watch"
+
+#: common.c:692
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr ""
+"Notification asynchrone « %s » reçue avec le contenu « %s » en provenance du\n"
+"processus serveur de PID %d.\n"
+
+#: common.c:695
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr ""
+"Notification asynchrone « %s » reçue en provenance du processus serveur de\n"
+"PID %d.\n"
+
+#: common.c:728 common.c:745
+#, c-format
+msgid "could not print result table: %m"
+msgstr "n'a pas pu imprimer la table résultante : %m"
+
+#: common.c:766
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "aucune ligne retournée pour \\gset"
+
+#: common.c:771
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "plus d'une ligne retournée pour \\gset"
+
+#: common.c:789
+#, c-format
+msgid "attempt to \\gset into specially treated variable \"%s\" ignored"
+msgstr "tentative ignorée d'utilisation de \\gset dans une variable traitée spécialement « %s »"
+
+#: common.c:1209
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(Mode étape par étape: vérifiez la commande)*********************************\n"
+"%s\n"
+"***(appuyez sur entrée pour l'exécuter ou tapez x puis entrée pour annuler)***\n"
+
+#: common.c:1264
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "Le serveur (version %s) ne supporte pas les points de sauvegarde pour ON_ERROR_ROLLBACK."
+
+#: common.c:1327
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "INSTRUCTION : %s"
+
+#: common.c:1371
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "état de la transaction inattendu (%d)"
+
+#: common.c:1512 describe.c:2001
+msgid "Column"
+msgstr "Colonne"
+
+#: common.c:1513 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3733 describe.c:3943
+#: describe.c:4176 describe.c:5382
+msgid "Type"
+msgstr "Type"
+
+#: common.c:1562
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "La commande n'a pas de résultats ou le résultat n'a pas de colonnes.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy : arguments requis"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy : erreur d'analyse sur « %s »"
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy : erreur d'analyse à la fin de la ligne"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "n'a pas pu exécuter la commande « %s » : %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "n'a pas pu tester le fichier « %s » : %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s : ne peut pas copier depuis/vers un répertoire"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "n'a pas pu fermer le fichier pipe vers la commande externe : %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s : %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "n'a pas pu écrire les données du COPY : %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "Échec du transfert de données COPY : %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "annulé par l'utilisateur"
+
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Saisissez les données à copier suivies d'un saut de ligne.\n"
+"Terminez avec un antislash et un point seuls sur une ligne ou un signal EOF."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "annulé du fait d'une erreur de lecture"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "tente de sortir du mode copy"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview : la commande n'a pas retourné d'ensemble de résultats"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview : la requête doit renvoyer au moins trois colonnes"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview : les en-têtes horizontales et verticales doivent être des colonnes différentes"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview : la colonne de données doit être spécifiée quand la requête retourne plus de trois colonnes"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview : nombre maximum de colonnes (%d) dépassé"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview : le résultat de la requête contient plusieurs valeurs de données pour la ligne « %s », colonne « %s »"
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview : le numéro de colonne %d est en dehors des limites 1..%d"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview : nom de colonne ambigu : « %s »"
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview : nom de colonne non trouvé : « %s »"
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3722 describe.c:3930
+#: describe.c:4174 describe.c:4265 describe.c:4532 describe.c:4692
+#: describe.c:4933 describe.c:5008 describe.c:5019 describe.c:5081
+#: describe.c:5506 describe.c:5589
+msgid "Schema"
+msgstr "Schéma"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3723 describe.c:3931 describe.c:4097 describe.c:4175
+#: describe.c:4266 describe.c:4345 describe.c:4533 describe.c:4617
+#: describe.c:4693 describe.c:4934 describe.c:5009 describe.c:5020
+#: describe.c:5082 describe.c:5279 describe.c:5363 describe.c:5587
+#: describe.c:5759 describe.c:5999
+msgid "Name"
+msgstr "Nom"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "Type de données du résultat"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "Type de données des paramètres"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3510 describe.c:3783 describe.c:3977 describe.c:4128
+#: describe.c:4202 describe.c:4275 describe.c:4358 describe.c:4441
+#: describe.c:4560 describe.c:4626 describe.c:4694 describe.c:4835
+#: describe.c:4877 describe.c:4950 describe.c:5012 describe.c:5021
+#: describe.c:5083 describe.c:5305 describe.c:5385 describe.c:5520
+#: describe.c:5590 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Description"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Liste des fonctions d'agrégation"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "Le serveur (version %s) ne supporte pas les méthodes d'accès."
+
+#: describe.c:175
+msgid "Index"
+msgstr "Index"
+
+#: describe.c:176 describe.c:3741 describe.c:3956 describe.c:5507
+msgid "Table"
+msgstr "Table"
+
+#: describe.c:184 describe.c:5284
+msgid "Handler"
+msgstr "Gestionnaire"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "Liste des méthodes d'accès"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "Le serveur (version %s) ne supporte pas les tablespaces."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3734 describe.c:3932 describe.c:4101
+#: describe.c:4347 describe.c:4618 describe.c:5280 describe.c:5364
+#: describe.c:5760 describe.c:5897 describe.c:6000 describe.c:6115
+#: describe.c:6194 large_obj.c:289
+msgid "Owner"
+msgstr "Propriétaire"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "Emplacement"
+
+#: describe.c:263 describe.c:3327
+msgid "Options"
+msgstr "Options"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3775 describe.c:3779
+msgid "Size"
+msgstr "Taille"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "Liste des tablespaces"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df ne prend que [anptwS+] comme options"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df ne prend pas d'option « %c » pour un serveur en version %s"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "agg"
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "window"
+
+#: describe.c:391
+msgid "proc"
+msgstr "proc"
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "func"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "trigger"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "immutable"
+
+#: describe.c:484
+msgid "stable"
+msgstr "stable"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "volatile"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "Volatibilité"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "restricted"
+
+#: describe.c:495
+msgid "safe"
+msgstr "safe"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "unsafe"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "Parallèle"
+
+#: describe.c:502
+msgid "definer"
+msgstr "definer"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "invoker"
+
+#: describe.c:504
+msgid "Security"
+msgstr "Sécurité"
+
+#: describe.c:511
+msgid "Language"
+msgstr "Langage"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "Code source"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "Liste des fonctions"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "Nom interne"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "Éléments"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "Liste des types de données"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "Type de l'arg. gauche"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "Type de l'arg. droit"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "Type du résultat"
+
+#: describe.c:819 describe.c:4353 describe.c:4418 describe.c:4424
+#: describe.c:4834 describe.c:6366 describe.c:6370
+msgid "Function"
+msgstr "Fonction"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "Liste des opérateurs"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "Encodage"
+
+#: describe.c:879 describe.c:4534
+msgid "Collate"
+msgstr "Collationnement"
+
+#: describe.c:880 describe.c:4535
+msgid "Ctype"
+msgstr "Type caract."
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "Tablespace"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "Liste des bases de données"
+
+#: describe.c:956 describe.c:1117 describe.c:3724
+msgid "table"
+msgstr "table"
+
+#: describe.c:957 describe.c:3725
+msgid "view"
+msgstr "vue"
+
+#: describe.c:958 describe.c:3726
+msgid "materialized view"
+msgstr "vue matérialisée"
+
+#: describe.c:959 describe.c:1119 describe.c:3728
+msgid "sequence"
+msgstr "séquence"
+
+#: describe.c:960 describe.c:3730
+msgid "foreign table"
+msgstr "table distante"
+
+#: describe.c:961 describe.c:3731 describe.c:3941
+msgid "partitioned table"
+msgstr "table partitionnée"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "Droits d'accès à la colonne"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "Politiques"
+
+#: describe.c:1070 describe.c:6056 describe.c:6060
+msgid "Access privileges"
+msgstr "Droits d'accès"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "Le serveur (version %s) ne supporte pas la modification des droits par défaut."
+
+#: describe.c:1121
+msgid "function"
+msgstr "fonction"
+
+#: describe.c:1123
+msgid "type"
+msgstr "type"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "schéma"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "Droits d'accès par défaut"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "Objet"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "contrainte de table"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "contrainte de domaine"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "classe d'opérateur"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "famille d'opérateur"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "règle"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "Descriptions des objets"
+
+#: describe.c:1402 describe.c:3847
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "Aucune relation nommée « %s » n'a été trouvée."
+
+#: describe.c:1405 describe.c:3850
+#, c-format
+msgid "Did not find any relations."
+msgstr "Aucune relation n'a été trouvée."
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "Aucune relation avec l'OID « %s » n'a été trouvée."
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "Début"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "Minimum"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "Maximum"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "Incrément"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4269
+#: describe.c:4435 describe.c:4549 describe.c:4554 describe.c:6103
+msgid "yes"
+msgstr "oui"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4269
+#: describe.c:4432 describe.c:4549 describe.c:6104
+msgid "no"
+msgstr "non"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "Cycles ?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "Cache"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "Propriétaire : %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Séquence pour la colonne d'identité : %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Séquence « %s.%s »"
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Table non tracée « %s.%s »"
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Table « %s.%s »"
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Vue « %s.%s »"
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Vue matérialisée non journalisée « %s.%s »"
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Vue matérialisée « %s.%s »"
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Index non tracé « %s.%s »"
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Index « %s.%s »"
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Index partitionné non journalisé « %s.%s »"
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "Index partitionné « %s.%s »"
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Relation spéciale « %s.%s »"
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "Table TOAST « %s.%s »"
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Type composé « %s.%s »"
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Table distante « %s.%s »"
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Table non journalisée « %s.%s »"
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "Table partitionnée « %s.%s »"
+
+#: describe.c:2005 describe.c:4182
+msgid "Collation"
+msgstr "Collationnement"
+
+#: describe.c:2006 describe.c:4189
+msgid "Nullable"
+msgstr "NULL-able"
+
+#: describe.c:2007 describe.c:4190
+msgid "Default"
+msgstr "Par défaut"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "Clé ?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "Définition"
+
+#: describe.c:2014 describe.c:5300 describe.c:5384 describe.c:5455
+#: describe.c:5519
+msgid "FDW options"
+msgstr "Options FDW"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "Stockage"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "Cible de statistiques"
+
+#: describe.c:2135
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Partition de : %s %s"
+
+#: describe.c:2147
+msgid "No partition constraint"
+msgstr "Aucune contrainte de partition"
+
+#: describe.c:2149
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Contrainte de partition : %s"
+
+#: describe.c:2173
+#, c-format
+msgid "Partition key: %s"
+msgstr "Clé de partition : %s"
+
+#: describe.c:2199
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "Table propriétaire : « %s.%s »"
+
+#: describe.c:2270
+msgid "primary key, "
+msgstr "clé primaire, "
+
+#: describe.c:2272
+msgid "unique, "
+msgstr "unique, "
+
+#: describe.c:2278
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "pour la table « %s.%s »"
+
+#: describe.c:2282
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", prédicat (%s)"
+
+#: describe.c:2285
+msgid ", clustered"
+msgstr ", en cluster"
+
+#: describe.c:2288
+msgid ", invalid"
+msgstr ", invalide"
+
+#: describe.c:2291
+msgid ", deferrable"
+msgstr ", déferrable"
+
+#: describe.c:2294
+msgid ", initially deferred"
+msgstr ", initialement déferré"
+
+#: describe.c:2297
+msgid ", replica identity"
+msgstr ", identité réplica"
+
+#: describe.c:2364
+msgid "Indexes:"
+msgstr "Index :"
+
+#: describe.c:2448
+msgid "Check constraints:"
+msgstr "Contraintes de vérification :"
+
+#: describe.c:2516
+msgid "Foreign-key constraints:"
+msgstr "Contraintes de clés étrangères :"
+
+#: describe.c:2579
+msgid "Referenced by:"
+msgstr "Référencé par :"
+
+#: describe.c:2629
+msgid "Policies:"
+msgstr "Politiques :"
+
+#: describe.c:2632
+msgid "Policies (forced row security enabled):"
+msgstr "Politiques (mode sécurité de ligne activé en forcé) :"
+
+#: describe.c:2635
+msgid "Policies (row security enabled): (none)"
+msgstr "Politiques (mode sécurité de ligne activé) : (aucune)"
+
+#: describe.c:2638
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Politiques (mode sécurité de ligne activé en forcé) : (aucune)"
+
+#: describe.c:2641
+msgid "Policies (row security disabled):"
+msgstr "Politiques (mode sécurité de ligne désactivé) :"
+
+#: describe.c:2709
+msgid "Statistics objects:"
+msgstr "Objets statistiques :"
+
+#: describe.c:2823 describe.c:2927
+msgid "Rules:"
+msgstr "Règles :"
+
+#: describe.c:2826
+msgid "Disabled rules:"
+msgstr "Règles désactivées :"
+
+#: describe.c:2829
+msgid "Rules firing always:"
+msgstr "Règles toujous activées :"
+
+#: describe.c:2832
+msgid "Rules firing on replica only:"
+msgstr "Règles activées uniquement sur le réplica :"
+
+#: describe.c:2872
+msgid "Publications:"
+msgstr "Publications :"
+
+#: describe.c:2910
+msgid "View definition:"
+msgstr "Définition de la vue :"
+
+#: describe.c:3057
+msgid "Triggers:"
+msgstr "Triggers :"
+
+#: describe.c:3061
+msgid "Disabled user triggers:"
+msgstr "Triggers utilisateurs désactivés :"
+
+#: describe.c:3063
+msgid "Disabled triggers:"
+msgstr "Triggers désactivés :"
+
+#: describe.c:3066
+msgid "Disabled internal triggers:"
+msgstr "Triggers internes désactivés :"
+
+#: describe.c:3069
+msgid "Triggers firing always:"
+msgstr "Triggers toujours activés :"
+
+#: describe.c:3072
+msgid "Triggers firing on replica only:"
+msgstr "Triggers activés uniquement sur le réplica :"
+
+#: describe.c:3144
+#, c-format
+msgid "Server: %s"
+msgstr "Serveur : %s"
+
+#: describe.c:3152
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "Options FDW : (%s)"
+
+#: describe.c:3173
+msgid "Inherits"
+msgstr "Hérite de"
+
+#: describe.c:3233
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Nombre de partitions : %d"
+
+#: describe.c:3242
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Nombre de partitions : %d (utilisez \\d+ pour les lister)"
+
+#: describe.c:3244
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Nombre de tables enfants : %d (utilisez \\d+ pour les lister)"
+
+#: describe.c:3251
+msgid "Child tables"
+msgstr "Tables enfant"
+
+#: describe.c:3251
+msgid "Partitions"
+msgstr "Partitions"
+
+#: describe.c:3280
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Table de type : %s"
+
+#: describe.c:3296
+msgid "Replica Identity"
+msgstr "Identité de réplicat"
+
+#: describe.c:3309
+msgid "Has OIDs: yes"
+msgstr "Contient des OID : oui"
+
+#: describe.c:3318
+#, c-format
+msgid "Access method: %s"
+msgstr "Méthode d'accès : %s"
+
+#: describe.c:3398
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Tablespace : « %s »"
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3410
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", tablespace « %s »"
+
+#: describe.c:3503
+msgid "List of roles"
+msgstr "Liste des rôles"
+
+#: describe.c:3505
+msgid "Role name"
+msgstr "Nom du rôle"
+
+#: describe.c:3506
+msgid "Attributes"
+msgstr "Attributs"
+
+#: describe.c:3507
+msgid "Member of"
+msgstr "Membre de"
+
+#: describe.c:3518
+msgid "Superuser"
+msgstr "Superutilisateur"
+
+#: describe.c:3521
+msgid "No inheritance"
+msgstr "Pas d'héritage"
+
+#: describe.c:3524
+msgid "Create role"
+msgstr "Créer un rôle"
+
+#: describe.c:3527
+msgid "Create DB"
+msgstr "Créer une base"
+
+#: describe.c:3530
+msgid "Cannot login"
+msgstr "Ne peut pas se connecter"
+
+#: describe.c:3534
+msgid "Replication"
+msgstr "Réplication"
+
+#: describe.c:3538
+msgid "Bypass RLS"
+msgstr "Contournement RLS"
+
+#: describe.c:3547
+msgid "No connections"
+msgstr "Sans connexions"
+
+#: describe.c:3549
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d connexion"
+msgstr[1] "%d connexions"
+
+#: describe.c:3559
+msgid "Password valid until "
+msgstr "Mot de passe valide jusqu'à "
+
+#: describe.c:3609
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "Le serveur (version %s) ne supporte pas les paramètres de rôles par bases de données."
+
+#: describe.c:3622
+msgid "Role"
+msgstr "Rôle"
+
+#: describe.c:3623
+msgid "Database"
+msgstr "Base de données"
+
+#: describe.c:3624
+msgid "Settings"
+msgstr "Réglages"
+
+#: describe.c:3645
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "Aucune configuration pour le rôle « %s » et la base de données « %s » n'a été trouvée."
+
+#: describe.c:3648
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "Aucune configuration pour le rôle « %s » n'a été trouvée."
+
+#: describe.c:3651
+#, c-format
+msgid "Did not find any settings."
+msgstr "Aucune configuration n'a été trouvée."
+
+#: describe.c:3656
+msgid "List of settings"
+msgstr "Liste des paramètres"
+
+#: describe.c:3727
+msgid "index"
+msgstr "index"
+
+#: describe.c:3729
+msgid "special"
+msgstr "spécial"
+
+#: describe.c:3732 describe.c:3942
+msgid "partitioned index"
+msgstr "index partitionné"
+
+#: describe.c:3756
+msgid "permanent"
+msgstr "permanent"
+
+#: describe.c:3757
+msgid "temporary"
+msgstr "temporaire"
+
+#: describe.c:3758
+msgid "unlogged"
+msgstr "non journalisé"
+
+#: describe.c:3759
+msgid "Persistence"
+msgstr "Persistence"
+
+#: describe.c:3855
+msgid "List of relations"
+msgstr "Liste des relations"
+
+#: describe.c:3903
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "Le serveur (version %s) ne supporte pas le partitionnement déclaratif des tables."
+
+#: describe.c:3914
+msgid "List of partitioned indexes"
+msgstr "Liste des index partitionnés"
+
+#: describe.c:3916
+msgid "List of partitioned tables"
+msgstr "Liste des tables partitionnées"
+
+#: describe.c:3920
+msgid "List of partitioned relations"
+msgstr "Liste des relations partitionnées"
+
+#: describe.c:3951
+msgid "Parent name"
+msgstr "Nom du parent"
+
+#: describe.c:3964
+msgid "Leaf partition size"
+msgstr "Taille de la partition de dernier niveau"
+
+#: describe.c:3967 describe.c:3973
+msgid "Total size"
+msgstr "Taille totale"
+
+#: describe.c:4105
+msgid "Trusted"
+msgstr "De confiance"
+
+#: describe.c:4113
+msgid "Internal language"
+msgstr "Langage interne"
+
+#: describe.c:4114
+msgid "Call handler"
+msgstr "Gestionnaire d'appel"
+
+#: describe.c:4115 describe.c:5287
+msgid "Validator"
+msgstr "Validateur"
+
+#: describe.c:4118
+msgid "Inline handler"
+msgstr "Gestionnaire en ligne"
+
+#: describe.c:4146
+msgid "List of languages"
+msgstr "Liste des langages"
+
+#: describe.c:4191
+msgid "Check"
+msgstr "Vérification"
+
+#: describe.c:4233
+msgid "List of domains"
+msgstr "Liste des domaines"
+
+#: describe.c:4267
+msgid "Source"
+msgstr "Source"
+
+#: describe.c:4268
+msgid "Destination"
+msgstr "Destination"
+
+#: describe.c:4270 describe.c:6105
+msgid "Default?"
+msgstr "Par défaut ?"
+
+#: describe.c:4307
+msgid "List of conversions"
+msgstr "Liste des conversions"
+
+#: describe.c:4346
+msgid "Event"
+msgstr "Événement"
+
+#: describe.c:4348
+msgid "enabled"
+msgstr "activé"
+
+#: describe.c:4349
+msgid "replica"
+msgstr "réplicat"
+
+#: describe.c:4350
+msgid "always"
+msgstr "toujours"
+
+#: describe.c:4351
+msgid "disabled"
+msgstr "désactivé"
+
+#: describe.c:4352 describe.c:6001
+msgid "Enabled"
+msgstr "Activé"
+
+#: describe.c:4354
+msgid "Tags"
+msgstr "Tags"
+
+#: describe.c:4373
+msgid "List of event triggers"
+msgstr "Liste des triggers sur évènement"
+
+#: describe.c:4402
+msgid "Source type"
+msgstr "Type source"
+
+#: describe.c:4403
+msgid "Target type"
+msgstr "Type cible"
+
+#: describe.c:4434
+msgid "in assignment"
+msgstr "assigné"
+
+#: describe.c:4436
+msgid "Implicit?"
+msgstr "Implicite ?"
+
+#: describe.c:4491
+msgid "List of casts"
+msgstr "Liste des conversions explicites"
+
+#: describe.c:4519
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "Le serveur (version %s) ne supporte pas les collationnements."
+
+#: describe.c:4540 describe.c:4544
+msgid "Provider"
+msgstr "Fournisseur"
+
+#: describe.c:4550 describe.c:4555
+msgid "Deterministic?"
+msgstr "Déterministe ?"
+
+#: describe.c:4590
+msgid "List of collations"
+msgstr "Liste des collationnements"
+
+#: describe.c:4649
+msgid "List of schemas"
+msgstr "Liste des schémas"
+
+#: describe.c:4674 describe.c:4921 describe.c:4992 describe.c:5063
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "Le serveur (version %s) ne supporte pas la recherche plein texte."
+
+#: describe.c:4709
+msgid "List of text search parsers"
+msgstr "Liste des analyseurs de la recherche de texte"
+
+#: describe.c:4754
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "Aucun analyseur de la recherche de texte nommé « %s » n'a été trouvé."
+
+#: describe.c:4757
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "Aucun analyseur de recherche de texte n'a été trouvé."
+
+#: describe.c:4832
+msgid "Start parse"
+msgstr "Début de l'analyse"
+
+#: describe.c:4833
+msgid "Method"
+msgstr "Méthode"
+
+#: describe.c:4837
+msgid "Get next token"
+msgstr "Obtenir le prochain jeton"
+
+#: describe.c:4839
+msgid "End parse"
+msgstr "Fin de l'analyse"
+
+#: describe.c:4841
+msgid "Get headline"
+msgstr "Obtenir l'en-tête"
+
+#: describe.c:4843
+msgid "Get token types"
+msgstr "Obtenir les types de jeton"
+
+#: describe.c:4854
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Analyseur « %s.%s » de la recherche de texte"
+
+#: describe.c:4857
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Analyseur « %s » de la recherche de texte"
+
+#: describe.c:4876
+msgid "Token name"
+msgstr "Nom du jeton"
+
+#: describe.c:4887
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Types de jeton pour l'analyseur « %s.%s »"
+
+#: describe.c:4890
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Types de jeton pour l'analyseur « %s »"
+
+#: describe.c:4944
+msgid "Template"
+msgstr "Modèle"
+
+#: describe.c:4945
+msgid "Init options"
+msgstr "Options d'initialisation"
+
+#: describe.c:4967
+msgid "List of text search dictionaries"
+msgstr "Liste des dictionnaires de la recherche de texte"
+
+#: describe.c:5010
+msgid "Init"
+msgstr "Initialisation"
+
+#: describe.c:5011
+msgid "Lexize"
+msgstr "Lexize"
+
+#: describe.c:5038
+msgid "List of text search templates"
+msgstr "Liste des modèles de la recherche de texte"
+
+#: describe.c:5098
+msgid "List of text search configurations"
+msgstr "Liste des configurations de la recherche de texte"
+
+#: describe.c:5144
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "Aucune configuration de la recherche de texte nommée « %s » n'a été trouvée."
+
+#: describe.c:5147
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "Aucune configuration de recherche de texte n'a été trouvée."
+
+#: describe.c:5213
+msgid "Token"
+msgstr "Jeton"
+
+#: describe.c:5214
+msgid "Dictionaries"
+msgstr "Dictionnaires"
+
+#: describe.c:5225
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Configuration « %s.%s » de la recherche de texte"
+
+#: describe.c:5228
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Configuration « %s » de la recherche de texte"
+
+#: describe.c:5232
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Analyseur : « %s.%s »"
+
+#: describe.c:5235
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Analyseur : « %s »"
+
+#: describe.c:5269
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "Le serveur (version %s) ne supporte pas les wrappers de données distantes."
+
+#: describe.c:5327
+msgid "List of foreign-data wrappers"
+msgstr "Liste des wrappers de données distantes"
+
+#: describe.c:5352
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "Le serveur (version %s) ne supporte pas les serveurs distants."
+
+#: describe.c:5365
+msgid "Foreign-data wrapper"
+msgstr "Wrapper des données distantes"
+
+#: describe.c:5383 describe.c:5588
+msgid "Version"
+msgstr "Version"
+
+#: describe.c:5409
+msgid "List of foreign servers"
+msgstr "Liste des serveurs distants"
+
+#: describe.c:5434
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "Le serveur (version %s) ne supporte pas les correspondances d'utilisateurs."
+
+#: describe.c:5444 describe.c:5508
+msgid "Server"
+msgstr "Serveur"
+
+#: describe.c:5445
+msgid "User name"
+msgstr "Nom de l'utilisateur"
+
+#: describe.c:5470
+msgid "List of user mappings"
+msgstr "Liste des correspondances utilisateurs"
+
+#: describe.c:5495
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "Le serveur (version %s) ne supporte pas les tables distantes."
+
+#: describe.c:5548
+msgid "List of foreign tables"
+msgstr "Liste des tables distantes"
+
+#: describe.c:5573 describe.c:5630
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "Le serveur (version %s) ne supporte pas les extensions."
+
+#: describe.c:5605
+msgid "List of installed extensions"
+msgstr "Liste des extensions installées"
+
+#: describe.c:5658
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "Aucune extension nommée « %s » n'a été trouvée."
+
+#: describe.c:5661
+#, c-format
+msgid "Did not find any extensions."
+msgstr "Aucune extension n'a été trouvée."
+
+#: describe.c:5705
+msgid "Object description"
+msgstr "Description d'objet"
+
+#: describe.c:5715
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Objets dans l'extension « %s »"
+
+#: describe.c:5744 describe.c:5820
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "Le serveur (version %s) ne supporte pas les publications."
+
+#: describe.c:5761 describe.c:5898
+msgid "All tables"
+msgstr "Toutes les tables"
+
+#: describe.c:5762 describe.c:5899
+msgid "Inserts"
+msgstr "Insertions"
+
+#: describe.c:5763 describe.c:5900
+msgid "Updates"
+msgstr "Mises à jour"
+
+#: describe.c:5764 describe.c:5901
+msgid "Deletes"
+msgstr "Suppressions"
+
+#: describe.c:5768 describe.c:5903
+msgid "Truncates"
+msgstr "Tronque"
+
+#: describe.c:5772 describe.c:5905
+msgid "Via root"
+msgstr "Via la racine"
+
+#: describe.c:5789
+msgid "List of publications"
+msgstr "Liste des publications"
+
+#: describe.c:5862
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "Aucune publication nommée « %s » n'a été trouvée."
+
+#: describe.c:5865
+#, c-format
+msgid "Did not find any publications."
+msgstr "Aucune publication n'a été trouvée."
+
+#: describe.c:5894
+#, c-format
+msgid "Publication %s"
+msgstr "Publication %s"
+
+#: describe.c:5942
+msgid "Tables:"
+msgstr "Tables :"
+
+#: describe.c:5986
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "Le serveur (version %s) ne supporte pas les souscriptions."
+
+#: describe.c:6002
+msgid "Publication"
+msgstr "Publication"
+
+#: describe.c:6009
+msgid "Synchronous commit"
+msgstr "Validation synchrone"
+
+#: describe.c:6010
+msgid "Conninfo"
+msgstr "Informations de connexion"
+
+#: describe.c:6032
+msgid "List of subscriptions"
+msgstr "Liste des souscriptions"
+
+#: describe.c:6099 describe.c:6188 describe.c:6274 describe.c:6357
+msgid "AM"
+msgstr "AM"
+
+#: describe.c:6100
+msgid "Input type"
+msgstr "Type en entrée"
+
+#: describe.c:6101
+msgid "Storage type"
+msgstr "Type de stockage"
+
+#: describe.c:6102
+msgid "Operator class"
+msgstr "Classe d'opérateur"
+
+#: describe.c:6114 describe.c:6189 describe.c:6275 describe.c:6358
+msgid "Operator family"
+msgstr "Famille d'opérateur"
+
+#: describe.c:6147
+msgid "List of operator classes"
+msgstr "Liste des classes d'opérateurs"
+
+#: describe.c:6190
+msgid "Applicable types"
+msgstr "Types applicables"
+
+#: describe.c:6229
+msgid "List of operator families"
+msgstr "Liste des familles d'opérateurs"
+
+#: describe.c:6276
+msgid "Operator"
+msgstr "Opérateur"
+
+#: describe.c:6277
+msgid "Strategy"
+msgstr "Stratégie"
+
+#: describe.c:6278
+msgid "ordering"
+msgstr "ordre"
+
+#: describe.c:6279
+msgid "search"
+msgstr "recherche"
+
+#: describe.c:6280
+msgid "Purpose"
+msgstr "But"
+
+#: describe.c:6285
+msgid "Sort opfamily"
+msgstr "Tri famille d'opérateur"
+
+#: describe.c:6316
+msgid "List of operators of operator families"
+msgstr "Liste d'opérateurs des familles d'opérateurs"
+
+#: describe.c:6359
+msgid "Registered left type"
+msgstr "Type de l'arg. gauche enregistré"
+
+#: describe.c:6360
+msgid "Registered right type"
+msgstr "Type de l'arg. droit enregistré"
+
+#: describe.c:6361
+msgid "Number"
+msgstr "Numéro"
+
+#: describe.c:6397
+msgid "List of support functions of operator families"
+msgstr "Liste des fonctions de support des familles d'opérateurs"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql est l'interface interactive de PostgreSQL.\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "Usage :\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [OPTIONS]... [NOM_BASE [NOM_UTILISATEUR]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Options générales :\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr ""
+" -c, --command=COMMANDE\n"
+" exécute une commande unique (SQL ou interne), puis quitte\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr ""
+" -d, --dbname=NOM_BASE\n"
+" indique le nom de la base de données à laquelle se\n"
+" connecter (par défaut : « %s »)\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr ""
+" -f, --file=FICHIER\n"
+" exécute les commandes du fichier, puis quitte\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list affiche les bases de données disponibles, puis quitte\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=NOM=VALEUR\n"
+" configure la variable psql NOM en VALEUR\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version affiche la version puis quitte\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc ne lit pas le fichier de démarrage (~/.psqlrc)\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (« un »), --single-transaction\n"
+" exécute dans une transaction unique (si non intéractif)\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] affiche cette aide et quitte\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commandes liste les méta-commandes, puis quitte\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables liste les variables spéciales, puis quitte\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Options d'entrée/sortie :\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all affiche les lignes du script\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors affiche les commandes échouées\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr ""
+" -e, --echo-queries\n"
+" affiche les commandes envoyées au serveur\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr ""
+" -E, --echo-hidden\n"
+" affiche les requêtes engendrées par les commandes internes\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr ""
+" -L, --log-file=FICHIER\n"
+" envoie les traces dans le fichier\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr ""
+" -n, --no-readline\n"
+" désactive l'édition avancée de la ligne de commande\n"
+" (readline)\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr ""
+" -o, --output=FICHIER\n"
+" écrit les résultats des requêtes dans un fichier (ou\n"
+" |tube)\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr ""
+" -q, --quiet s'exécute silencieusement (pas de messages, uniquement le\n"
+" résultat des requêtes)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr ""
+" -s, --single-step\n"
+" active le mode étape par étape (confirmation pour chaque\n"
+" requête)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr ""
+" -S, --single-line\n"
+" active le mode ligne par ligne (EOL termine la commande\n"
+" SQL)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Options de formattage de la sortie :\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr ""
+" -A, --no-align active le mode d'affichage non aligné des tables (-P\n"
+" format=unaligned)\n"
+
+#: help.c:111
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr ""
+" --csv mode d'affichage CSV (valeurs séparées par des virgules)\n"
+"\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=CHAINE\n"
+" séparateur de champs pour un affichage non aligné\n"
+" (par défaut : « %s »)\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html active le mode d'affichage HTML des tables (-P format=html)\n"
+
+#: help.c:116
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr ""
+" -P, --pset=VAR[=ARG]\n"
+" initialise l'option d'impression VAR à ARG (voir la\n"
+" commande \\pset)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=CHAINE\n"
+" séparateur d'enregistrements pour un affichage non aligné\n"
+" (par défaut : saut de ligne)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr ""
+" -t, --tuples-only\n"
+" affiche seulement les lignes (-P tuples_only)\n"
+
+#: help.c:120
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr ""
+" -T, --table-attr=TEXTE\n"
+" initialise les attributs des balises HTML de tableau\n"
+" (largeur, bordure) (-P tableattr=)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded active l'affichage étendu des tables (-P expanded)\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" initialise le séparateur de champs pour un affichage non\n"
+" aligné à l'octet zéro\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" initialise le séparateur d'enregistrements pour un affichage\n"
+" non aligné à l'octet zéro\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Options de connexion :\n"
+
+#: help.c:130
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr ""
+" -h, --host=HOTE nom d'hôte du serveur de la base de données ou répertoire\n"
+" de la socket (par défaut : %s)\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "socket locale"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr ""
+" -p, --port=PORT port du serveur de la base de données (par défaut :\n"
+" « %s »)\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr ""
+" -U, --username=NOM\n"
+" nom d'utilisateur de la base de données (par défaut :\n"
+" « %s »)\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr ""
+" -w, --no-password\n"
+" ne demande jamais un mot de passe\n"
+
+#: help.c:142
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr ""
+" -W, --password force la demande du mot de passe (devrait survenir\n"
+" automatiquement)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"Pour en savoir davantage, saisissez « \\? » (pour les commandes internes) ou\n"
+"« \\help » (pour les commandes SQL) dans psql, ou consultez la section psql\n"
+"de la documentation de PostgreSQL.\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Rapporter les bogues à <%s>.\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "page d'accueil de %s : <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "Général\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr ""
+" \\copyright affiche les conditions d'utilisation et de\n"
+" distribution de PostgreSQL\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [COLUMNS] exécute la requête et affiche le résultat dans un tableau croisé\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose affiche le message d'erreur le plus récent avec une verbosité maximale\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(OPTIONS)] [FICHIER] exécute la requête (et envoie les résultats à un fichier ou à |pipe);\n"
+" \\g sans arguments est équivalent à un point-virgule\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc décrit le résultat de la requête sans l'exécuter\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec exécute la requête et exécute chaque valeur du résultat\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PRÉFIXE] exécute la requête et stocke les résultats dans des variables psql\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [(OPTIONS)] [FICHIER] comme \\g, mais force le mode de sortie étendu\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q quitte psql\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEC] exécute la requête toutes les SEC secondes\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "Aide\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commandes] affiche l'aide sur les métacommandes\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options affiche l'aide sur les options en ligne de commande de psql\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables affiche l'aide sur les variables spéciales\n"
+
+#: help.c:193
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr ""
+" \\h [NOM] aide-mémoire pour les commandes SQL, * pour toutes\n"
+" les commandes\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Tampon de requête\n"
+
+#: help.c:197
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr ""
+" \\e [FICHIER] [LIGNE] édite le tampon de requête ou le fichier avec un\n"
+" éditeur externe\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr ""
+" \\ef [FONCTION [LIGNE]] édite la définition de fonction avec un éditeur\n"
+" externe\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr ""
+" \\ev [VUE [LIGNE]] édite la définition de vue avec un éditeur\n"
+" externe\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p affiche le contenu du tampon de requête\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r efface le tampon de requêtes\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr ""
+" \\s [FICHIER] affiche l'historique ou le sauvegarde dans un\n"
+" fichier\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr ""
+" \\w [FICHIER] écrit le contenu du tampon de requêtes dans un\n"
+" fichier\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "Entrée/Sortie\n"
+
+#: help.c:209
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr ""
+" \\copy ... exécute SQL COPY avec le flux de données dirigé vers\n"
+" l'hôte client\n"
+
+#: help.c:210
+#, c-format
+msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"
+msgstr " \\echo [-n] [TEXTE] écrit le texte sur la sortie standard (-n pour supprimer le retour à la ligne)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i FICHIER exécute les commandes du fichier\n"
+
+#: help.c:212
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr ""
+" \\ir FICHIER identique à \\i, mais relatif à l'emplacement du script\n"
+" ou un |tube\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr ""
+" \\o [FICHIER] envoie les résultats de la requête vers un fichier\n"
+" ou un |tube\n"
+
+#: help.c:214
+#, c-format
+msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"
+msgstr ""
+" \\qecho [-n] [TEXTE] écrit un texte sur la sortie des résultats des\n"
+" requêtes (\\o) (-n pour supprimer le retour à la ligne)\n"
+
+#: help.c:215
+#, c-format
+msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"
+msgstr " \\warn [-n] [TEXTE] écrit le texte sur la sortie des erreurs (-n pour supprimer le retour à la ligne)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "Conditionnel\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR début du bloc conditionnel\n"
+
+#: help.c:220
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif alternative à l'intérieur du bloc conditionnel courant\n"
+
+#: help.c:221
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else alternative finale à l'intérieur du bloc conditionnel courant\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif bloc conditionnel de fin\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "Informations\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (options : S = affiche les objets systèmes, + = informations supplémentaires)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] affiche la liste des tables, vues et séquences\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr ""
+" \\d[S+] NOM affiche la description de la table, de la vue,\n"
+" de la séquence ou de l'index\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [MODÈLE] affiche les aggrégats\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [MODÈLE] affiche la liste des méthodes d'accès\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] affiche les classes d'opérateurs\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] affiche les familles d'opérateur\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] affiche les opérateurs des familles d'opérateur\n"
+
+#: help.c:234
+#, c-format
+msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] liste les fonctions de support des familles d'opérateur\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [MODÈLE] affiche la liste des tablespaces\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [MODÈLE] affiche la liste des conversions\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [MODÈLE] affiche la liste des transtypages\n"
+
+#: help.c:238
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr ""
+" \\dd[S] [MODÈLE] affiche les commentaires des objets dont le commentaire\n"
+" n'est affiché nul part ailleurs\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [MODÈLE] affiche la liste des domaines\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [MODÈLE] affiche les droits par défaut\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [MODÈLE] affiche la liste des tables distantes\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [MODÈLE] affiche la liste des tables distantes\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [MODÈLE] affiche la liste des serveurs distants\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [MODÈLE] affiche la liste des correspondances utilisateurs\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [MODÈLE] affiche la liste des wrappers de données distantes\n"
+
+#: help.c:246
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr ""
+" \\df[anptw][S+] [PATRN] affiche la liste des fonctions\n"
+" [seulement agrégat/normal/procédure/trigger/window]\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr ""
+" \\dF[+] [MODÈLE] affiche la liste des configurations de la recherche\n"
+" plein texte\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr ""
+" \\dFd[+] [MODÈLE] affiche la liste des dictionnaires de la recherche de\n"
+" texte\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr ""
+" \\dFp[+] [MODÈLE] affiche la liste des analyseurs de la recherche de\n"
+" texte\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr ""
+" \\dFt[+] [MODÈLE] affiche la liste des modèles de la recherche de\n"
+" texte\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [MODÈLE] affiche la liste des index\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr ""
+" \\dl affiche la liste des « Large Objects », identique à\n"
+" \\lo_list\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [MODÈLE] affiche la liste des langages procéduraux\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [MODÈLE] affiche la liste des vues matérialisées\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [MODÈLE] affiche la liste des schémas\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S+] [PATTERN] list operators\n"
+msgstr " \\do[S+] [MODÈLE] affiche la liste des opérateurs\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [MODÈLE] affiche la liste des collationnements\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr ""
+" \\dp [MODÈLE] affiche la liste des droits d'accès aux tables,\n"
+" vues, séquences\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"
+msgstr " \\dP[itn+] [PATTERN] affiche les relations partitionnées [seulement index/table] [n=imbriquées]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [MODEL1 [MODEL2]] liste la configuration utilisateur par base de données\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[S+] [MODÈLE] affiche la liste des publications de réplication\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [MODÈLE] affiche la liste des souscriptions de réplication\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [MODÈLE] affiche la liste des séquences\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [MODÈLE] affiche la liste des tables\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [MODÈLE] affiche la liste des types de données\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [MODÈLE] affiche la liste des vues\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [MODÈLE] affiche la liste des extensions\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy[+] [PATTERN] list event triggers\n"
+msgstr " \\dy[+] [MODÈLE] affiche les triggers sur évènement\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [MODÈLE] affiche la liste des bases de données\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] [FONCTION] édite la définition d'une fonction\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv [FONCTION] édite la définition d'une vue\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [MODÈLE] identique à \\dp\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "Formatage\n"
+
+#: help.c:278
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr ""
+" \\a bascule entre les modes de sortie alignée et non\n"
+" alignée\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr ""
+" \\C [CHAÎNE] initialise le titre d'une table, ou le désactive en\n"
+" l'absence d'argument\n"
+
+#: help.c:280
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr ""
+" \\f [CHAÎNE] affiche ou initialise le séparateur de champ pour\n"
+" une sortie non alignée des requêtes\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H bascule le mode de sortie HTML (actuellement %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [NOM [VALEUR]] règle l'affichage de la table\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t affiche uniquement les lignes (actuellement %s)\n"
+
+#: help.c:292
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr ""
+" \\T [CHAÎNE] initialise les attributs HTML de la balise <table>,\n"
+" ou l'annule en l'absence d'argument\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] bascule l'affichage étendu (actuellement %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "Connexions\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[NOM_BASE|- UTILISATEUR|- HOTE|- PORT|-] | conninfo}\n"
+" se connecte à une autre base de données\n"
+" (actuellement « %s »)\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[NOM_BASE|- UTILISATEUR|- HOTE|- PORT|-] | conninfo}\n"
+" se connecte à une nouvelle base de données\n"
+" (aucune connexion actuellement)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo affiche des informations sur la connexion en cours\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [ENCODAGE] affiche ou initialise l'encodage du client\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr ""
+" \\password [UTILISATEUR]\n"
+" modifie de façon sécurisé le mot de passe d'un\n"
+" utilisateur\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "Système d'exploitation\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [RÉPERTOIRE] change de répertoire de travail\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NOM [VALEUR] (dés)initialise une variable d'environnement\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr ""
+" \\timing [on|off] bascule l'activation du chronométrage des commandes\n"
+" (actuellement %s)\n"
+
+#: help.c:315
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr ""
+" \\! [COMMANDE] exécute la commande dans un shell ou exécute un\n"
+" shell interactif\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "Variables\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr ""
+" \\prompt [TEXTE] NOM demande à l'utilisateur de configurer la variable\n"
+" interne\n"
+
+#: help.c:320
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr ""
+" \\set [NOM [VALEUR]] initialise une variable interne ou les affiche\n"
+" toutes en l'absence de paramètre\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset NOM désactive (supprime) la variable interne\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "« Large objects »\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export OIDLOB FICHIER\n"
+" \\lo_import FICHIER [COMMENTAIRE]\n"
+" \\lo_list\n"
+" \\lo_unlink OIDLOB\n"
+" opérations sur les « Large Objects »\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"Liste des variables traitées spécialement\n"
+"\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "variables psql :\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NOM=VALEUR\n"
+" ou \\set NOM VALEUR dans psql\n"
+"\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" si activé, les commandes SQL réussies sont automatiquement validées\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" détermine la casse utilisée pour compléter les mots clés SQL\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" le nom de base de données actuel\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" contrôle ce qui est envoyé sur la sortie standard\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" si activé, affiche les requêtes internes exécutées par les méta-commandes ;\n"
+" si configuré à « noexec », affiche les requêtes sans les exécuter\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" encodage du jeu de caractères client\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" true si la dernière requête a échoué, sinon false\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" le nombre de lignes résultats à récupérer et à afficher à la fois\n"
+" (0 pour illimité)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" si activé, les méthodes d'accès ne sont pas affichées\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" contrôle l'historique des commandes [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" nom du fichier utilisé pour stocker l'historique des commandes\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" nombre maximum de commandes à stocker dans l'historique de commandes\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" l'hôte de la base de données\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" nombre d'EOF nécessaire pour terminer une session interactive\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" valeur du dernier OID affecté\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message et SQLSTATE de la dernière erreur ou une chaîne vide et \"00000\" if si aucune erreur\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" si activé, une erreur n'arrête pas une transaction (utilise des savepoints implicites)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" arrête l'exécution d'un batch après une erreur\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" port du serveur pour la connexion actuelle\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" spécifie l'invite standard de psql\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" spécifie l'invite utilisé quand une requête continue après la ligne courante\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" spécifie l'invite utilisée lors d'un COPY ... FROM STDIN\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" s'exécute en silence (identique à l'option -q)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" nombre de lignes renvoyées ou affectées par la dernière requête, ou 0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" version du serveur (chaîne courte ou format numérique)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" contrôle l'affichage des champs de contexte du message [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" une fin de ligne termine le mode de commande SQL (identique à l'option -S)\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" mode pas à pas (identique à l'option -s)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" SQLSTATE de la dernière requête, ou \"00000\" si aucune erreur\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" l'utilisateur actuellement connecté\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" contrôle la verbosité des rapports d'erreurs [default, verbose, terse, sqlstate]\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" version de psql (chaîne longue, chaîne courte, ou format numérique)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Paramètres d'affichage :\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NOM[=VALEUR]\n"
+" ou \\pset NOM [VALEUR] dans psql\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" style de bordure (nombre)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" largeur cible pour le format encadré\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (ou x)\n"
+" sortie étendue [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" champ séparateur pour l'affichage non aligné (par défaut « %s »)\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" configure le séparateur de champ pour l'affichage non alignée à l'octet zéro\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" active ou désactive l'affiche du bas de tableau [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" active le format de sortie [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" configure l'affichage des lignes de bordure [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" configure la chaîne à afficher à la place d'une valeur NULL\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" active ou désactive l'affichage d'un caractère spécifique à la locale pour séparer\n"
+" des groupes de chiffres [on, off]\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" contrôle quand un paginateur externe est utilisé [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" enregistre le séparateur de ligne pour les affichages non alignés\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" initialise le séparateur d'enregistrements pour un affichage\n"
+" non aligné à l'octet zéro\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (ou T)\n"
+" indique les attributs pour la balise de table dans le format html ou les largeurs\n"
+" proportionnelles de colonnes pour les types de données alignés à gauche dans le\n"
+" format latex-longtable\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" configure le titre de la table pour toute table affichée\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" si activé, seules les données de la table sont affichées\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" configure le style d'affichage de ligne Unicode [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Variables d'environnement :\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NOM=VALEUR [NOM=VALEUR] psql ...\n"
+" ou \\setenv NOM [VALEUR] dans psql\n"
+"\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NOM=VALEUR\n"
+" psql ...\n"
+" ou \\setenv NOM [VALEUR] dans psql\n"
+"\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" nombre de colonnes pour le format encadré\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" identique au paramètre de connexion application_name\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" identique au paramètre de connexion dbname\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" identique au paramètre de connexion host\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" mot de passe de connexion (non recommendé)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" nom du fichier de mot de passe\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" identique au paramètre de connexion port\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" identique au paramètre de connexion user\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" éditeur utilisé par les commandes \\e, \\ef et \\ev\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" comment spécifier un numéro de ligne lors de l'appel de l'éditeur\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" autre emplacement pour le fichier d'historique des commandes\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" nom du paginateur externe\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" autre emplacement pour le fichier .psqlrc de l'utilisateur\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" shell utilisé par la commande \\!\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" répertoire pour les fichiers temporaires\n"
+
+#: help.c:555
+msgid "Available help:\n"
+msgstr "Aide-mémoire disponible :\n"
+
+#: help.c:650
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"Commande : %s\n"
+"Description : %s\n"
+"Syntaxe :\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:673
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"Aucun aide-mémoire disponible pour « %s ».\n"
+"Essayez \\h sans arguments pour afficher les aide-mémoires disponibles.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "n'a pas pu lire à partir du fichier en entrée : %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "n'a pas pu sauvegarder l'historique dans le fichier « %s » : %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "l'historique n'est pas supportée par cette installation"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s : non connecté à une base de données"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s : la transaction en cours est abandonnée"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s : état de la transaction inconnu"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "« Large objects »"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if : échappé"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Saisissez « \\q » pour quitter %s.\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"Les données en entrée proviennent d'une sauvegarde PostgreSQL au format custom.\n"
+"Utilisez l'outil en ligne de commande pg_restore pour restaurer cette sauvegarde dans une base de données.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Utilisez \\? pour l'aide ou appuyez sur control-C pour vider le tampon de saisie."
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "Utilisez \\? pour l'aide."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Vous utilisez psql, l'interface en ligne de commande de PostgreSQL."
+
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Saisissez:\n"
+" \\copyright pour les termes de distribution\n"
+" \\h pour l'aide-mémoire des commandes SQL\n"
+" \\? pour l'aide-mémoire des commandes psql\n"
+" \\g ou point-virgule en fin d'instruction pour exécuter la requête\n"
+" \\q pour quitter\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "Utilisez \\q pour quitter."
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "Utilisez control-D pour quitter."
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "Utilisez control-C pour quitter."
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "requête ignorée ; utilisez \\endif ou Ctrl-C pour quitter le bloc \\if courant"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "a atteint EOF sans trouver le(s) \\endif fermant"
+
+#: psqlscanslash.l:640
+#, c-format
+msgid "unterminated quoted string"
+msgstr "chaîne entre guillemets non terminée"
+
+#: psqlscanslash.l:813
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s : mémoire épuisée"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "nom"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "signature_agrégat"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "nouveau_nom"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "nouveau_propriétaire"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "nouveau_schéma"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "où signature_agrégat est :"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "mode_argument"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "nom_agrégat"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "type_argument"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "option"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "où option peut être :"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "allowconn"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "limite_de_connexion"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "istemplate"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "nouveau_tablespace"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "paramètre_configuration"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "valeur"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "rôle_cible"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "nom_schéma"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "grant_ou_revoke_raccourci"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "où abbreviated_grant_or_revoke fait partie de :"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "nom_rôle"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "expression"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "contrainte_domaine"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "nom_contrainte"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "nouvelle_nom_contrainte"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "nouvelle_version"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "objet_membre"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "où objet_membre fait partie de :"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "nom_objet"
+
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "nom_agrégat"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "type_source"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "type_cible"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "nom_fonction"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "nom_opérateur"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "type_argument_gauche"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "type_argument_droit"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "méthode_indexage"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "nom_procédure"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "nom_routine"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "nom_type"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "nom_langage"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "et signature_agrégat est :"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "fonction_gestionnaire"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "fonction_validateur"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "action"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "nom_colonne"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "nouvelle_nom_colonne"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "où action fait partie de :"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "type_données"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "collationnement"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "contrainte_colonne"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "entier"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "option_attribut"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "contrainte_table"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "nom_trigger"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "table_parent"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "nom_extension"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "coût_exécution"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "lignes_de_résultat"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "fonction_support"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "specification_role"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "nom_utilisateur"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "où specification_role peut être :"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "nom_groupe"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "nom_tablespace"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "nom_index"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "paramètre_stockage"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "numéro_colonne"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "oid_large_object"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr "res_proc"
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr "join_proc"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "numéro_de_stratégie"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "type_op"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr "nom_famille_tri"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr "numéro_de_support"
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "type_argument"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "nom_table"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr "expression_using"
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "expression_check"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "paramètre_publication"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "mot_de_passe"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr "horodatage"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "nom_base_de_donnée"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr "incrément"
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "valeur_min"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "valeur_max"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "début"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "nouveau_début"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "cache"
+
+#: sql_help.c:1097
+msgid "new_target"
+msgstr "nouvelle_cible"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "conninfo"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "nom_publication"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "option_ensemble_publication"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "option_rafraichissement"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "paramètre_souscription"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "nom_partition"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "spec_limite_partition"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "options_séquence"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "option_séquence"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr "contrainte_table_utilisant_index"
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr "nom_règle_réécriture"
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr "et partition_bound_spec est :"
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "expr_limite_partition"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr "numeric_literal"
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "et contrainte_colonne est :"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "expression_par_défaut"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr "expression_génération"
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "paramètres_index"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "table_référence"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "colonne_référence"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "action"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "et contrainte_table est :"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr "élément_exclusion"
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "opérateur"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "prédicat"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr "et contrainte_table_utilisant_index est :"
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "dans les contraintes UNIQUE, PRIMARY KEY et EXCLUDE, les paramètres_index sont :"
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "élément_exclusion dans une contrainte EXCLUDE est :"
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "classe_d_opérateur"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "option_tablespace"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "type_jeton"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "nom_dictionnaire"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "ancien_dictionnaire"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "nouveau_dictionnaire"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "nom_attribut"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "nouveau_nom_attribut"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr "nouvelle_valeur_enum"
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr "valeur_enum_voisine"
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr "valeur_enum_existante"
+
+#: sql_help.c:1537
+msgid "property"
+msgstr "propriété"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "nom_serveur"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "nom_option_vue"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr "valeur_option_vue"
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "table_et_colonnes"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "où option fait partie de :"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr "boolean"
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "et table_et_colonnes est :"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "mode_transaction"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "où mode_transaction fait partie de :"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "argument"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "nom_relation"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "nom_domaine"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "nom_politique"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "nom_règle"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr "texte"
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "id_transaction"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "nom_fichier"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "commande"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "condition"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "requête"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "nom_format"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "caractère_délimiteur"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "chaîne_null"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "caractère_guillemet"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "chaîne_d_échappement"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "nom_encodage"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr "access_method_type"
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "type_données_arg"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr "sfunc"
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr "type_de_données_statut"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr "taille_de_données_statut"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr "ffunc"
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr "combinefunc"
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr "serialfunc"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr "deserialfunc"
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr "condition_initiale"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr "msfunc"
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr "minvfunc"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr "m_type_de_données_statut"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr "m_taille_de_données_statut"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr "mffunc"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr "m_condition_initiale"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "opérateur_de_tri"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "ou l'ancienne syntaxe"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "type_base"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "locale"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "fournisseur"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "version"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr "collationnement_existant"
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "encodage_source"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "encodage_destination"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "modèle"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "encodage"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "contrainte"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "où la contrainte est :"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "événement"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr "filter_variable"
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "où contrainte_colonne est :"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr "type_en_retour"
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr "type_colonne"
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "définition"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "fichier_objet"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "symbole_link"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "méthode"
+
+#: sql_help.c:2371
+msgid "opclass_parameter"
+msgstr "paramètre_opclass"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr "gestionnaire_d_appel"
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr "gestionnaire_en_ligne"
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "fonction_val"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr "com_op"
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr "neg_op"
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr "nom_famille"
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "type_stockage"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "où événement fait partie de :"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr "élément_schéma"
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "type_serveur"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "version_serveur"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "nom_fdw"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "nom_statistique"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "statistics_kind"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "nom_souscription"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "table_source"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "option_like"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr "et option_like est :"
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "répertoire"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "nom_analyseur"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "configuration_source"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "fonction_start"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "fonction_gettoken"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "fonction_end"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "fonction_lextypes"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "fonction_headline"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "fonction_init"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "fonction_lexize"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr "nom_fonction_from_sql"
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr "nom_fonction_to_sql"
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr "nom_table_référencée"
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "nom_relation_transition"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "arguments"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr "label"
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr "sous_type"
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr "classe_opérateur_sous_type"
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr "fonction_canonique"
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr "fonction_diff_sous_type"
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "fonction_en_sortie"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "fonction_en_sortie"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "fonction_receive"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "fonction_send"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr "fonction_en_entrée_modificateur_type"
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr "fonction_en_sortie_modificateur_type"
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "fonction_analyze"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr "longueur_interne"
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "alignement"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "stockage"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr "type_like"
+
+#: sql_help.c:3065
+msgid "category"
+msgstr "catégorie"
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr "préféré"
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "par défaut"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "élément"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "délimiteur"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr "collationnable"
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr "requête_with"
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "alias"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr "élément_from"
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "nom_curseur"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "expression_en_sortie"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr "nom_en_sortie"
+
+#: sql_help.c:3190
+msgid "code"
+msgstr "code"
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "paramètre"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "instruction"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "direction"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "où direction peut être vide ou faire partie de :"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "nombre"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "nom_séquence"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "nom_argument"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "type_arg"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr "loid"
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "schema_distant"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "schéma_local"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr "cible_conflit"
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr "action_conflit"
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "où cible_conflit fait partie de :"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "index_nom_colonne"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "index_expression"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr "index_prédicat"
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "où action_conflit fait partie de :"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr "sous-SELECT"
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr "canal"
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr "mode_de_verrou"
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "où mode_de_verrou fait partie de :"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr "contenu"
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "ancien_rôle"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "nouveau_rôle"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "nom_savepoint"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr "element_regroupement"
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "nom_window"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "définition_window"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr "sélection"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr "où élément_from fait partie de :"
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "alias_colonne"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "méthode_echantillonnage"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr "graine"
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr "nom_requête_with"
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "définition_colonne"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr "type_de_jointure"
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr "condition_de_jointure"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr "colonne_de_jointure"
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr "où element_regroupement fait partie de :"
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr "et requête_with est :"
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "valeurs"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "nouvelle_table"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr "fuseau_horaire"
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr "id_snapshot"
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr "expression_de_tri"
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "abandonner la transaction en cours"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "modifier la définition d'une fonction d'agrégation"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "modifier la définition d'un collationnement"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "modifier la définition d'une conversion"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "modifier une base de données"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "définir les droits d'accès par défaut"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "modifier la définition d'un domaine"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "modifier la définition d'un trigger sur évènement"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "modifier la définition d'une extension"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "modifier la définition d'un wrapper de données distantes"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "modifier la définition d'une table distante"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "modifier la définition d'une fonction"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "modifier le nom d'un groupe ou la liste des ses membres"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "modifier la définition d'un index"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "modifier la définition d'un langage procédural"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "modifier la définition d'un « Large Object »"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "modifier la définition d'une vue matérialisée"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "modifier la définition d'un opérateur"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "modifier la définition d'une classe d'opérateurs"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "modifier la définition d'une famille d'opérateur"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "modifier la définition d'une politique de sécurité au niveau ligne"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "modifier la définition d'une procédure"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "modifier la définition d'une publication"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "modifier un rôle"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "modifier la définition d'une routine"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "modifier la définition d'une règle"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "modifier la définition d'un schéma"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "modifier la définition d'un générateur de séquence"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "modifier la définition d'un serveur distant"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "modifier la définition d'un objet de statistiques étendues"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "modifier la définition d'une souscription"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "modifie un paramètre de configuration du serveur"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "modifier la définition d'une table"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "modifier la définition d'un tablespace"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "modifier la définition d'une configuration de la recherche de texte"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "modifier la définition d'un dictionnaire de la recherche de texte"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "modifier la définition d'un analyseur de la recherche de texte"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "modifier la définition d'un modèle de la recherche de texte"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "modifier la définition d'un trigger"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "modifier la définition d'un type"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "modifier la définition d'une correspondance d'utilisateur"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "modifier la définition d'une vue"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "acquérir des statistiques concernant la base de données"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "débuter un bloc de transaction"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "appeler une procédure"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "forcer un point de vérification des journaux de transactions"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "fermer un curseur"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "réorganiser (cluster) une table en fonction d'un index"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "définir ou modifier les commentaires d'un objet"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "valider la transaction en cours"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr ""
+"valider une transaction précédemment préparée pour une validation en deux\n"
+"phases"
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "copier des données entre un fichier et une table"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "définir une nouvelle méthode d'accès"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "définir une nouvelle fonction d'agrégation"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "définir un nouveau transtypage"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "définir un nouveau collationnement"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "définir une nouvelle conversion d'encodage"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "créer une nouvelle base de données"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "définir un nouveau domaine"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "définir un nouveau trigger sur évènement"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "installer une extension"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "définir un nouveau wrapper de données distantes"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "définir une nouvelle table distante"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "définir une nouvelle fonction"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "définir un nouveau rôle"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "définir un nouvel index"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "définir un nouveau langage de procédures"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "définir une nouvelle vue matérialisée"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "définir un nouvel opérateur"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "définir une nouvelle classe d'opérateur"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "définir une nouvelle famille d'opérateur"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "définir une nouvelle politique de sécurité au niveau ligne pour une table"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "définir une nouvelle procédure"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "définir une nouvelle publication"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "définir une nouvelle règle de réécriture"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "définir un nouveau schéma"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "définir un nouveau générateur de séquence"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "définir un nouveau serveur distant"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "définir des statistiques étendues"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "définir une nouvelle souscription"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "définir une nouvelle table"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "définir une nouvelle table à partir des résultats d'une requête"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "définir un nouveau tablespace"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "définir une nouvelle configuration de la recherche de texte"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "définir un nouveau dictionnaire de la recherche de texte"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "définir un nouvel analyseur de la recherche de texte"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "définir un nouveau modèle de la recherche de texte"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "définir une nouvelle transformation"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "définir un nouveau trigger"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "définir un nouveau type de données"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "définit une nouvelle correspondance d'un utilisateur vers un serveur distant"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "définir une nouvelle vue"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "désallouer une instruction préparée"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "définir un curseur"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "supprimer des lignes d'une table"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "annuler l'état de la session"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "exécute un bloc de code anonyme"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "supprimer une méthode d'accès"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "supprimer une fonction d'agrégation"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "supprimer un transtypage"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "supprimer un collationnement"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "supprimer une conversion"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "supprimer une base de données"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "supprimer un domaine"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "supprimer un trigger sur évènement"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "supprimer une extension"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "supprimer un wrapper de données distantes"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "supprimer une table distante"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "supprimer une fonction"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "supprimer un rôle de la base de données"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "supprimer un index"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "supprimer un langage procédural"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "supprimer une vue matérialisée"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "supprimer un opérateur"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "supprimer une classe d'opérateur"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "supprimer une famille d'opérateur"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "supprimer les objets appartenant à un rôle"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "supprimer une nouvelle politique de sécurité au niveau ligne pour une table"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "supprimer une procédure"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "supprimer une publication"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "supprimer une routine"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "supprimer une règle de réécriture"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "supprimer un schéma"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "supprimer une séquence"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "supprimer un descripteur de serveur distant"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "supprimer des statistiques étendues"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "supprimer une souscription"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "supprimer une table"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "supprimer un tablespace"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "supprimer une configuration de la recherche de texte"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "supprimer un dictionnaire de la recherche de texte"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "supprimer un analyseur de la recherche de texte"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "supprimer un modèle de la recherche de texte"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "supprimer une transformation"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "supprimer un trigger"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "supprimer un type de données"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "supprime une correspondance utilisateur pour un serveur distant"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "supprimer une vue"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "exécuter une instruction préparée"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "afficher le plan d'exécution d'une instruction"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "extraire certaines lignes d'une requête à l'aide d'un curseur"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "définir des privilèges d'accès"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "importer la définition d'une table à partir d'un serveur distant"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "créer de nouvelles lignes dans une table"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "se mettre à l'écoute d'une notification"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "charger un fichier de bibliothèque partagée"
+
+#: sql_help.c:5725
+msgid "lock a table"
+msgstr "verrouiller une table"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "positionner un curseur"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "engendrer une notification"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "préparer une instruction pour exécution"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "préparer la transaction en cours pour une validation en deux phases"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "changer le propriétaire des objets d'un rôle"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "remplacer le contenu d'une vue matérialisée"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "reconstruire des index"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "détruire un point de retournement précédemment défini"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "réinitialiser un paramètre d'exécution à sa valeur par défaut"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "supprimer des privilèges d'accès"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr ""
+"annuler une transaction précédemment préparée pour une validation en deux\n"
+"phases"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "annuler jusqu'au point de retournement"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "définir un nouveau point de retournement pour la transaction en cours"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "définir ou modifier un label de sécurité à un objet"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "extraire des lignes d'une table ou d'une vue"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "modifier un paramètre d'exécution"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "définir le moment de la vérification des contraintes pour la transaction en cours"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "définir l'identifiant actuel de l'utilisateur de la session courante"
+
+#: sql_help.c:5851
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr ""
+"définir l'identifiant de l'utilisateur de session et l'identifiant actuel de\n"
+"l'utilisateur de la session courante"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "définir les caractéristiques de la transaction en cours"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "afficher la valeur d'un paramètre d'exécution"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "vider une table ou un ensemble de tables"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "arrêter l'écoute d'une notification"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "actualiser les lignes d'une table"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "compacter et optionnellement analyser une base de données"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "calculer un ensemble de lignes"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 peut seulement être utilisé dans un mode non interactif"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "n'a pas pu ouvrir le fichier applicatif « %s » : %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Saisissez « help » pour l'aide.\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "n'a pas pu configurer le paramètre d'impression « %s »"
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Essayez « %s --help » pour plus d'informations.\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "option supplémentaire « %s » ignorée"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "n'a pas pu trouver son propre exécutable"
+
+#: tab-complete.c:4642
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"la complétion de la requête a échoué : %s\n"
+"La requête était :\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "valeur « %s » non reconnue pour « %s » : booléen attendu"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "valeur « %s » invalide pour « %s » : entier attendu"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "nom de variable « %s » invalide"
+
+#: variables.c:419
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"valeur « %s » non reconnue pour « %s »\n"
+"Les valeurs disponibles sont : %s."
+
+#~ msgid "Could not send cancel request: %s"
+#~ msgstr "N'a pas pu envoyer la requête d'annulation : %s"
+
+#~ msgid "lock a named relation (table, etc)"
+#~ msgstr "verrouille une relation nommée (table, etc)"
+
+#~ msgid "could not connect to server: %s"
+#~ msgstr "n'a pas pu se connecter au serveur : %s"
+
+#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr "Rapporter les bogues à <pgsql-bugs@lists.postgresql.org>.\n"
+
+#~ msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n"
+#~ msgstr ""
+#~ " \\g [FICHIER] ou ; envoie le tampon de requêtes au serveur (et les\n"
+#~ " résultats au fichier ou |tube)\n"
+
+#~ msgid "old_version"
+#~ msgstr "ancienne_version"
+
+#~ msgid "using_list"
+#~ msgstr "liste_using"
+
+#~ msgid "from_list"
+#~ msgstr "liste_from"
+
+#~ msgid "normal"
+#~ msgstr "normal"
+
+#~ msgid "Procedure"
+#~ msgstr "Procédure"
+
+#~ msgid " SERVER_VERSION_NAME server's version (short string)\n"
+#~ msgstr " SERVER_VERSION_NAME version du serveur (chaîne courte)\n"
+
+#~ msgid " VERSION psql's version (verbose string)\n"
+#~ msgstr " VERSION version de psql (chaîne verbeuse)\n"
+
+#~ msgid " VERSION_NAME psql's version (short string)\n"
+#~ msgstr " VERSION_NAME version de psql (chaîne courte)\n"
+
+#~ msgid " VERSION_NUM psql's version (numeric format)\n"
+#~ msgstr " VERSION_NUM version de psql (format numérique)\n"
+
+#~ msgid "attribute"
+#~ msgstr "attribut"
+
+#~ msgid "No per-database role settings support in this server version.\n"
+#~ msgstr "Pas de supprot des paramètres rôle par base de données pour la version de ce serveur.\n"
+
+#~ msgid "No matching settings found.\n"
+#~ msgstr "Aucun paramètre correspondant trouvé.\n"
+
+#~ msgid "No settings found.\n"
+#~ msgstr "Aucun paramètre trouvé.\n"
+
+#~ msgid "No matching relations found.\n"
+#~ msgstr "Aucune relation correspondante trouvée.\n"
+
+#~ msgid "No relations found.\n"
+#~ msgstr "Aucune relation trouvée.\n"
+
+#~ msgid "Password encryption failed.\n"
+#~ msgstr "Échec du chiffrement du mot de passe.\n"
+
+#~ msgid "\\%s: error while setting variable\n"
+#~ msgstr "\\%s : erreur lors de l'initialisation de la variable\n"
+
+#~ msgid "+ opt(%d) = |%s|\n"
+#~ msgstr "+ opt(%d) = |%s|\n"
+
+#~ msgid "could not set variable \"%s\"\n"
+#~ msgstr "n'a pas pu initialiser la variable « %s »\n"
+
+#~ msgid "Modifiers"
+#~ msgstr "Modificateurs"
+
+#~ msgid "collate %s"
+#~ msgstr "collationnement %s"
+
+#~ msgid "not null"
+#~ msgstr "non NULL"
+
+#~ msgid "default %s"
+#~ msgstr "Par défaut, %s"
+
+#~ msgid "Modifier"
+#~ msgstr "Modificateur"
+
+#~ msgid "Object Description"
+#~ msgstr "Description d'un objet"
+
+#~ msgid "%s: could not set variable \"%s\"\n"
+#~ msgstr "%s : n'a pas pu initialiser la variable « %s »\n"
+
+#~ msgid "Watch every %lds\t%s"
+#~ msgstr "Vérifier chaque %lds\t%s"
+
+#~ msgid "Showing locale-adjusted numeric output."
+#~ msgstr "Affichage de la sortie numérique adaptée à la locale."
+
+#~ msgid "Showing only tuples."
+#~ msgstr "Affichage des tuples seuls."
+
+#~ msgid "could not get current user name: %s\n"
+#~ msgstr "n'a pas pu obtenir le nom d'utilisateur courant : %s\n"
+
+#~ msgid "agg_name"
+#~ msgstr "nom_d_agrégat"
+
+#~ msgid "agg_type"
+#~ msgstr "type_aggrégat"
+
+#~ msgid "input_data_type"
+#~ msgstr "type_de_données_en_entrée"
+
+#~ msgid "could not change directory to \"%s\""
+#~ msgstr "n'a pas pu accéder au répertoire « %s »"
+
+#~ msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n"
+#~ msgstr "%s : pg_strdup : ne peut pas dupliquer le pointeur null (erreur interne)\n"
+
+#~ msgid " \\l[+] list all databases\n"
+#~ msgstr " \\l[+] affiche la liste des bases de données\n"
+
+#~ msgid "\\%s: error\n"
+#~ msgstr "\\%s : erreur\n"
+
+#~ msgid "\\copy: %s"
+#~ msgstr "\\copy : %s"
+
+#~ msgid "\\copy: unexpected response (%d)\n"
+#~ msgstr "\\copy : réponse inattendue (%d)\n"
+
+#~ msgid " --help show this help, then exit\n"
+#~ msgstr " --help affiche cette aide, puis quitte\n"
+
+#~ msgid " --version output version information, then exit\n"
+#~ msgstr " --version affiche la version, puis quitte\n"
+
+#~ msgid "contains support for command-line editing"
+#~ msgstr "contient une gestion avancée de la ligne de commande"
+
+#~ msgid "data type"
+#~ msgstr "type de données"
+
+#~ msgid "column"
+#~ msgstr "colonne"
+
+#~ msgid "new_column"
+#~ msgstr "nouvelle_colonne"
+
+#~ msgid "tablespace"
+#~ msgstr "tablespace"
+
+#~ msgid " on host \"%s\""
+#~ msgstr " sur l'hôte « %s »"
+
+#~ msgid " at port \"%s\""
+#~ msgstr " sur le port « %s »"
+
+#~ msgid " as user \"%s\""
+#~ msgstr " comme utilisateur « %s »"
+
+#~ msgid "define a new constraint trigger"
+#~ msgstr "définir une nouvelle contrainte de déclenchement"
+
+#~ msgid "Exclusion constraints:"
+#~ msgstr "Contraintes d'exclusion :"
+
+#~ msgid "rolename"
+#~ msgstr "nom_rôle"
+
+#~ msgid " \"%s\" IN %s %s"
+#~ msgstr " \"%s\" DANS %s %s"
+
+#~ msgid "(1 row)"
+#~ msgid_plural "(%lu rows)"
+#~ msgstr[0] "(1 ligne)"
+#~ msgstr[1] "(%lu lignes)"
+
+#~ msgid ""
+#~ " \\d{t|i|s|v|S} [PATTERN] (add \"+\" for more detail)\n"
+#~ " list tables/indexes/sequences/views/system tables\n"
+#~ msgstr ""
+#~ " \\d{t|i|s|v|S} [MODÈLE] (ajouter « + » pour plus de détails)\n"
+#~ " affiche la liste des\n"
+#~ " tables/index/séquences/vues/tables système\n"
+
+#~ msgid " \\db [PATTERN] list tablespaces (add \"+\" for more detail)\n"
+#~ msgstr ""
+#~ " \\db [MODÈLE] affiche la liste des tablespaces (ajouter « + » pour\n"
+#~ " plus de détails)\n"
+
+#~ msgid " \\df [PATTERN] list functions (add \"+\" for more detail)\n"
+#~ msgstr ""
+#~ " \\df [MODÈLE] affiche la liste des fonctions (ajouter « + » pour\n"
+#~ " plus de détails)\n"
+
+#~ msgid " \\dFd [PATTERN] list text search dictionaries (add \"+\" for more detail)\n"
+#~ msgstr ""
+#~ " \\dFd [MODÈLE] affiche la liste des dictionnaires de la recherche\n"
+#~ " de texte (ajouter « + » pour plus de détails)\n"
+
+#~ msgid " \\dFp [PATTERN] list text search parsers (add \"+\" for more detail)\n"
+#~ msgstr ""
+#~ " \\dFp [MODÈLE] affiche la liste des analyseurs de la recherche de\n"
+#~ " texte (ajouter « + » pour plus de détails)\n"
+
+#~ msgid " \\dn [PATTERN] list schemas (add \"+\" for more detail)\n"
+#~ msgstr ""
+#~ " \\dn [MODÈLE] affiche la liste des schémas (ajouter « + » pour\n"
+#~ " plus de détails)\n"
+
+#~ msgid " \\dT [PATTERN] list data types (add \"+\" for more detail)\n"
+#~ msgstr ""
+#~ " \\dT [MODÈLE] affiche la liste des types de données (ajouter « + »\n"
+#~ " pour plus de détails)\n"
+
+#~ msgid " \\l list all databases (add \"+\" for more detail)\n"
+#~ msgstr ""
+#~ " \\l affiche la liste des bases de données (ajouter « + »\n"
+#~ " pour plus de détails)\n"
+
+#~ msgid " \\z [PATTERN] list table, view, and sequence access privileges (same as \\dp)\n"
+#~ msgstr ""
+#~ " \\z [MODÈLE] affiche la liste des privilèges d'accès aux tables,\n"
+#~ " vues et séquences (identique à \\dp)\n"
+
+#~ msgid "Copy, Large Object\n"
+#~ msgstr "Copie, « Large Object »\n"
+
+#~ msgid ""
+#~ "Welcome to %s %s (server %s), the PostgreSQL interactive terminal.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bienvenue dans %s %s (serveur %s), l'interface interactive de PostgreSQL.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Welcome to %s %s, the PostgreSQL interactive terminal.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bienvenue dans %s %s, l'interface interactive de PostgreSQL.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "WARNING: You are connected to a server with major version %d.%d,\n"
+#~ "but your %s client is major version %d.%d. Some backslash commands,\n"
+#~ "such as \\d, might not work properly.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ATTENTION : vous êtes connecté sur un serveur dont la version majeure est\n"
+#~ "%d.%d alors que votre client %s est en version majeure %d.%d. Certaines\n"
+#~ "commandes avec antislashs, comme \\d, peuvent ne pas fonctionner\n"
+#~ "correctement.\n"
+#~ "\n"
+
+#~ msgid "Access privileges for database \"%s\""
+#~ msgstr "Droits d'accès pour la base de données « %s »"
+
+#~ msgid "?%c? \"%s.%s\""
+#~ msgstr "?%c? « %s.%s »"
+
+#~ msgid " \"%s\""
+#~ msgstr " « %s »"
+
+#~ msgid "(No rows)\n"
+#~ msgstr "(Aucune ligne)\n"
+
+#~ msgid " -?, --help show this help, then exit\n"
+#~ msgstr " -?, --help affiche cette aide puis quitte\n"
+
+#~ msgid "SSL connection (unknown cipher)\n"
+#~ msgstr "Connexion SSL (chiffrement inconnu)\n"
+
+#~ msgid "serialtype"
+#~ msgstr "serialtype"
+
+#~ msgid "statistic_type"
+#~ msgstr "type_statistique"
+
+#~ msgid "Value"
+#~ msgstr "Valeur"
+
+#~ msgid "%s: could not open log file \"%s\": %s\n"
+#~ msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s » : %s\n"
+
+#~ msgid "string_literal"
+#~ msgstr "littéral_chaîne"
+
+#~ msgid "unterminated quoted string\n"
+#~ msgstr "chaîne entre guillemets non terminée\n"
+
+#~ msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+#~ msgstr "Rapportez les bogues à <pgsql-bugs@postgresql.org>.\n"
+
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid "could not close pipe to external command: %s\n"
+#~ msgstr "n'a pas pu fermer le fichier pipe vers la commande externe : %s\n"
+
+#~ msgid "could not stat file \"%s\": %s\n"
+#~ msgstr "n'a pas pu tester le fichier « %s » : %s\n"
+
+#~ msgid "could not execute command \"%s\": %s\n"
+#~ msgstr "n'a pas pu exécuter la commande « %s » : %s\n"
+
+#~ msgid "could not open temporary file \"%s\": %s\n"
+#~ msgstr "n'a pas pu ouvrir le fichier temporaire « %s » : %s\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s : %s\n"
+
+#~ msgid "Invalid command \\%s. Try \\? for help.\n"
+#~ msgstr "Commande \\%s invalide. Essayez \\? pour l'aide-mémoire.\n"
+
+#~ msgid "child process was terminated by signal %d"
+#~ msgstr "le processus fils a été terminé par le signal %d"
+
+#~ msgid "child process was terminated by signal %s"
+#~ msgstr "le processus fils a été terminé par le signal %s"
+
+#~ msgid "pclose failed: %s"
+#~ msgstr "échec de pclose : %s"
+
+#~ msgid "could not read symbolic link \"%s\""
+#~ msgstr "n'a pas pu lire le lien symbolique « %s »"
+
+#~ msgid "could not change directory to \"%s\": %s"
+#~ msgstr "n'a pas pu changer le répertoire par « %s » : %s"
+
+#~ msgid "could not identify current directory: %s"
+#~ msgstr "n'a pas pu identifier le répertoire courant : %s"
diff --git a/src/bin/psql/po/it.po b/src/bin/psql/po/it.po
new file mode 100644
index 0000000..58d5e38
--- /dev/null
+++ b/src/bin/psql/po/it.po
@@ -0,0 +1,6135 @@
+#
+# psql.po
+# Italian message translation file for psql
+#
+# For development and bug report please use:
+# https://github.com/dvarrazzo/postgresql-it
+#
+# Copyright (C) 2012-2017 PostgreSQL Global Development Group
+# Copyright (C) 2010, Associazione Culturale ITPUG
+#
+# Daniele Varrazzo <daniele.varrazzo@gmail.com>, 2012-2017.
+# Cosimo D'Arcangelo <cosimo.darcangelo@itpug.org>
+# Massimo Mangoni <massimo.mangoni@phoops.it>
+# Mirko Tebaldi <mirkotebaldi@yahoo.it>
+# Gabriele Bartolini <gabriele.bartolini@2ndquadrant.it>
+#
+# This file is distributed under the same license as the PostgreSQL package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psql (PostgreSQL) 11\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2018-10-08 14:14+0000\n"
+"PO-Revision-Date: 2018-10-16 02:28+0100\n"
+"Last-Translator: Daniele Varrazzo <daniele.varrazzo@gmail.com>\n"
+"Language-Team: https://github.com/dvarrazzo/postgresql-it\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 2.0.6\n"
+
+#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "identificazione della directory corrente fallita: %s"
+
+#: ../../common/exec.c:146
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "binario non valido \"%s\""
+
+#: ../../common/exec.c:195
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "lettura del binario \"%s\" fallita"
+
+#: ../../common/exec.c:202
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "programma \"%s\" da eseguire non trovato"
+
+#: ../../common/exec.c:257 ../../common/exec.c:293
+#, c-format
+msgid "could not change directory to \"%s\": %s"
+msgstr "spostamento nella directory \"%s\" fallito: %s"
+
+#: ../../common/exec.c:272
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "lettura del link simbolico \"%s\" fallita"
+
+#: ../../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose fallita: %s"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 input.c:227 mainloop.c:82 mainloop.c:386
+#, c-format
+msgid "out of memory\n"
+msgstr "memoria esaurita\n"
+
+#: ../../common/fe_memutils.c:92
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "impossibile duplicare il puntatore nullo (errore interno)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "ID utente effettivo %ld non trovato: %s"
+
+#: ../../common/username.c:45 command.c:554
+msgid "user does not exist"
+msgstr "l'utente non esiste"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "ricerca del nome utente fallita: codice di errore %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "comando non eseguibile"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "comando non trovato"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "processo figlio uscito con codice di uscita %d"
+
+#: ../../common/wait_error.c:61
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "processo figlio terminato da eccezione 0x%X"
+
+#: ../../common/wait_error.c:71
+#, c-format
+msgid "child process was terminated by signal %s"
+msgstr "processo figlio terminato da segnale %s"
+
+#: ../../common/wait_error.c:75
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "processo figlio terminato da segnale %d"
+
+#: ../../common/wait_error.c:80
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "processo figlio uscito con stato non riconosciuto %d"
+
+#: ../../fe_utils/print.c:353
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu riga)"
+msgstr[1] "(%lu righe)"
+
+#: ../../fe_utils/print.c:2915
+#, c-format
+msgid "Interrupted\n"
+msgstr "Interrotto\n"
+
+#: ../../fe_utils/print.c:2979
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "Non è possibile aggiungere l'intestazione al contenuto della tabella: il numero di colonne %d è stato superato.\n"
+
+#: ../../fe_utils/print.c:3019
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "Non è possibile aggiungere celle al contenuto della tabella: il numero totale di celle %d è stato superato.\n"
+
+#: ../../fe_utils/print.c:3268
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "il formato di output non è valido (errore interno): %d"
+
+#: ../../fe_utils/psqlscan.l:724
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\"\n"
+msgstr "espansione ricorsiva della variabile \"%s\" evitata\n"
+
+#: command.c:220
+#, c-format
+msgid "Invalid command \\%s. Try \\? for help.\n"
+msgstr "Comando errato \\%s. Prova \\? per la guida.\n"
+
+#: command.c:222
+#, c-format
+msgid "invalid command \\%s\n"
+msgstr "comando errato \\%s\n"
+
+#: command.c:240
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored\n"
+msgstr "\\%s: parametro in eccesso \"%s\" ignorato\n"
+
+#: command.c:292
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block\n"
+msgstr "comando \\%s ignorato; usa \\endif o Ctrl-C per uscire dal blocco \\if corrente\n"
+
+#: command.c:552
+#, c-format
+msgid "could not get home directory for user ID %ld: %s\n"
+msgstr "directory home non trovata per l'ID utente %ld: %s\n"
+
+#: command.c:570
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %s\n"
+msgstr "\\%s: spostamento della directory a \"%s\" fallito: %s\n"
+
+#: command.c:595 common.c:696 common.c:754 common.c:1292
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "Al momento non sei connesso ad un database.\n"
+
+#: command.c:602
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Sei collegato al database \"%s\" con nome utente \"%s\" tramite il socket in \"%s\" porta \"%s\".\n"
+
+#: command.c:605
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Sei collegato al database \"%s\" con nome utente \"%s\" sull'host \"%s\" porta \"%s\".\n"
+
+#: command.c:895 command.c:991 command.c:2376
+#, c-format
+msgid "no query buffer\n"
+msgstr "Nessun buffer query\n"
+
+#: command.c:928 command.c:4648
+#, c-format
+msgid "invalid line number: %s\n"
+msgstr "numero di riga non valido: \"%s\"\n"
+
+#: command.c:982
+#, c-format
+msgid "The server (version %s) does not support editing function source.\n"
+msgstr "Il server (versione %s) non supporta la modifica dei sorgenti delle funzioni.\n"
+
+#: command.c:985
+#, c-format
+msgid "The server (version %s) does not support editing view definitions.\n"
+msgstr "Il server (versione %s) non supporta la modifica della definizione delle viste.\n"
+
+#: command.c:1067
+msgid "No changes"
+msgstr "Nessuna modifica"
+
+#: command.c:1144
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found\n"
+msgstr "%s: nome codifica errato oppure non esiste una procedura di conversione\n"
+
+#: command.c:1179 command.c:1818 command.c:3033 command.c:4750 common.c:174
+#: common.c:245 common.c:542 common.c:1338 common.c:1366 common.c:1474
+#: common.c:1577 common.c:1615 copy.c:489 copy.c:708 large_obj.c:156
+#: large_obj.c:191 large_obj.c:253
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1183
+msgid "out of memory"
+msgstr "memoria esaurita"
+
+#: command.c:1186
+msgid "There is no previous error."
+msgstr "Non c'è un errore precedente."
+
+#: command.c:1374 command.c:1679 command.c:1693 command.c:1710 command.c:1870
+#: command.c:2107 command.c:2343 command.c:2383
+#, c-format
+msgid "\\%s: missing required argument\n"
+msgstr "\\%s: parametro richiesto mancante\n"
+
+#: command.c:1505
+#, c-format
+msgid "\\elif: cannot occur after \\else\n"
+msgstr "\\elif: non può apparire dopo \\else\n"
+
+#: command.c:1510
+#, c-format
+msgid "\\elif: no matching \\if\n"
+msgstr "\\elif: \\if corrispondente non trovato\n"
+
+#: command.c:1574
+#, c-format
+msgid "\\else: cannot occur after \\else\n"
+msgstr "\\else: non può apparire dopo \\else\n"
+
+#: command.c:1579
+#, c-format
+msgid "\\else: no matching \\if\n"
+msgstr "\\else: \\if corrispondente non trovato\n"
+
+#: command.c:1619
+#, c-format
+msgid "\\endif: no matching \\if\n"
+msgstr "\\endif: \\if corrispondente non trovato\n"
+
+#: command.c:1774
+msgid "Query buffer is empty."
+msgstr "Il buffer query è vuoto."
+
+#: command.c:1796
+msgid "Enter new password: "
+msgstr "Inserire la nuova password: "
+
+#: command.c:1797
+msgid "Enter it again: "
+msgstr "Conferma password: "
+
+#: command.c:1801
+#, c-format
+msgid "Passwords didn't match.\n"
+msgstr "Le password non corrispondono.\n"
+
+#: command.c:1900
+#, c-format
+msgid "\\%s: could not read value for variable\n"
+msgstr "\\%s: errore nella lettura del valore della variabile\n"
+
+#: command.c:2003
+msgid "Query buffer reset (cleared)."
+msgstr "Buffer query resettato (svuotato)."
+
+#: command.c:2025
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Storia scritta nel file \"%s\".\n"
+
+#: command.c:2112
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\"\n"
+msgstr "\\%s: il nome della variabile d'ambiente non deve contenere \"=\"\n"
+
+#: command.c:2173
+#, c-format
+msgid "The server (version %s) does not support showing function source.\n"
+msgstr "Il server (versione %s) non supporta la visualizzazione dei sorgenti delle funzioni.\n"
+
+#: command.c:2176
+#, c-format
+msgid "The server (version %s) does not support showing view definitions.\n"
+msgstr "-\"Il server (versione %s) non supporta la visualizzazione della definizione delle viste.\n"
+
+#: command.c:2183
+#, c-format
+msgid "function name is required\n"
+msgstr "il nome della funzione è richiesto\n"
+
+#: command.c:2185
+#, c-format
+msgid "view name is required\n"
+msgstr "il nome della vista è richiesto\n"
+
+#: command.c:2315
+msgid "Timing is on."
+msgstr "Controllo tempo attivato"
+
+#: command.c:2317
+msgid "Timing is off."
+msgstr "Controllo tempo disattivato."
+
+#: command.c:2402 command.c:2430 command.c:3401 command.c:3404 command.c:3407
+#: command.c:3413 command.c:3415 command.c:3423 command.c:3433 command.c:3442
+#: command.c:3456 command.c:3473 command.c:3531 common.c:70 copy.c:332
+#: copy.c:392 copy.c:405 psqlscanslash.l:783 psqlscanslash.l:794
+#: psqlscanslash.l:804
+#, c-format
+msgid "%s: %s\n"
+msgstr "%s: %s\n"
+
+#: command.c:2814 startup.c:214 startup.c:265
+msgid "Password: "
+msgstr "Password: "
+
+#: command.c:2819 startup.c:262
+#, c-format
+msgid "Password for user %s: "
+msgstr "Inserisci la password per l'utente %s: "
+
+#: command.c:2869
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists\n"
+msgstr "Tutti i parametri di connessione devono essere forniti perché non esiste alcuna connessione di database\n"
+
+#: command.c:3037
+#, c-format
+msgid "Previous connection kept\n"
+msgstr "Connessione precedente mantenuta\n"
+
+#: command.c:3041
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3077
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Adesso sei collegato al database \"%s\" con nome utente \"%s\" tramite socket \"%s\" porta \"%s\".\n"
+
+#: command.c:3080
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Adesso sei collegato al database \"%s\" con nome utente \"%s\" sull'host \"%s\" porta \"%s\".\n"
+
+#: command.c:3084
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Sei collegato al database \"%s\" con nome utente \"%s\".\n"
+
+#: command.c:3117
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, server %s)\n"
+
+#: command.c:3125
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"ATTENZIONE: versione maggiore %s %s, versione maggiore server %s.\n"
+" Alcune caratteristiche di psql potrebbero non funzionare.\n"
+
+#: command.c:3162
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "connessione SSL (protocollo: %s, cifrario: %s, bit: %s, compressione: %s)\n"
+
+#: command.c:3163 command.c:3164 command.c:3165
+msgid "unknown"
+msgstr "sconosciuto"
+
+#: command.c:3166 help.c:45
+msgid "off"
+msgstr "disattivato"
+
+#: command.c:3166 help.c:45
+msgid "on"
+msgstr "attivato"
+
+#: command.c:3186
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"ATTENZIONE: Il code page della console (%u) differisce dal code page\n"
+" di Windows (%u). I caratteri a 8-bit potrebbero non\n"
+" funzionare correttamente. Vedi le pagine di riferimento\n"
+" psql \"Note per utenti Windows\" per i dettagli.\n"
+
+#: command.c:3290
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n"
+msgstr "la variabile di ambiente PSQL_EDITOR_LINENUMBER_ARG deve specificare un numero di riga\n"
+
+#: command.c:3319
+#, c-format
+msgid "could not start editor \"%s\"\n"
+msgstr "avvio dell'editor \"%s\" fallito\n"
+
+#: command.c:3321
+#, c-format
+msgid "could not start /bin/sh\n"
+msgstr "avvio di /bin/sh fallito\n"
+
+#: command.c:3359
+#, c-format
+msgid "could not locate temporary directory: %s\n"
+msgstr "directory temporanea non trovata: %s\n"
+
+#: command.c:3386
+#, c-format
+msgid "could not open temporary file \"%s\": %s\n"
+msgstr "apertura del file temporaneo \"%s\" fallita: %s\n"
+
+#: command.c:3660
+#, c-format
+msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n"
+msgstr "\\pset: i formati consentiti sono unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n"
+
+#: command.c:3678
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n"
+msgstr "\\pset: gli stili di linea permessi sono ascii, old-ascii, unicode\n"
+
+#: command.c:3693
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double\n"
+msgstr "\\pset: gli stili riga Unicode dei bordi consentiti sono single, double\n"
+
+#: command.c:3708
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double\n"
+msgstr "\\pset: gli stili riga Unicode delle colonne consentiti sono single, double\n"
+
+#: command.c:3723
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double\n"
+msgstr "\\pset: gli stili riga Unicode delle intestazioni consentiti sono single, double\n"
+
+#: command.c:3888 command.c:4067
+#, c-format
+msgid "\\pset: unknown option: %s\n"
+msgstr "\\pset: opzione sconosciuta: %s\n"
+
+#: command.c:3906
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Lo stile del bordo è %d.\n"
+
+#: command.c:3912
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "La lunghezza di destinazione non è impostata.\n"
+
+#: command.c:3914
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "La larghezza di destinazione è %d.\n"
+
+#: command.c:3921
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "La visualizzazione espansa è attiva.\n"
+
+#: command.c:3923
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "La visualizzazione espansa è usata automaticamente.\n"
+
+#: command.c:3925
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "La visualizzazione espansa è disattivata.\n"
+
+#: command.c:3932 command.c:3940
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Il separatore di campo è il byte zero.\n"
+
+#: command.c:3934
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Il separatore di campo è \"%s\".\n"
+
+#: command.c:3947
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Il piè di pagina di default è attivo.\n"
+
+#: command.c:3949
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Il piè di pagina di default è disattivato.\n"
+
+#: command.c:3955
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Il formato di output è %s.\n"
+
+#: command.c:3961
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Lo stile della linea è %s.\n"
+
+#: command.c:3968
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "La visualizzazione dei null è \"%s\".\n"
+
+#: command.c:3976
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "La correzione dell'output numerico secondo il locale è attiva.\n"
+
+#: command.c:3978
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "La correzione dell'output numerico secondo il locale è disattivata.\n"
+
+#: command.c:3985
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Usa la paginazione per risultati estesi.\n"
+
+#: command.c:3987
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Paginazione sempre attiva.\n"
+
+#: command.c:3989
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "Paginazione disattivata.\n"
+
+#: command.c:3995
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "La paginazione non verrà usata per meno di %d riga.\n"
+msgstr[1] "La paginazione non verrà usata per meno di %d righe.\n"
+
+#: command.c:4005 command.c:4015
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Il separatore di record è il byte zero.\n"
+
+#: command.c:4007
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Il separatore di record è <a capo>.\n"
+
+#: command.c:4009
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Il separatore di record è \"%s\".\n"
+
+#: command.c:4022
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Gli attributi di tabella sono \"%s\".\n"
+
+#: command.c:4025
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Gli attributi di tabella non sono specificati.\n"
+
+#: command.c:4032
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Il titolo è \"%s\".\n"
+
+#: command.c:4034
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Il titolo non è assegnato.\n"
+
+#: command.c:4041
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "La visualizzazione dei soli dati è attiva.\n"
+
+#: command.c:4043
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "La visualizzazione dei soli dati è disattivata.\n"
+
+#: command.c:4049
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Lo stile riga Unicode dei bordi è \"%s\".\n"
+
+#: command.c:4055
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Lo stile riga Unicode delle colonne è \"%s\".\n"
+
+#: command.c:4061
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Lo stile riga Unicode delle intestazioni è \"%s\".\n"
+
+#: command.c:4221
+#, c-format
+msgid "\\!: failed\n"
+msgstr "\\!: fallita\n"
+
+#: command.c:4246 common.c:802
+#, c-format
+msgid "\\watch cannot be used with an empty query\n"
+msgstr "\\watch non può essere usato con una query vuota\n"
+
+#: command.c:4287
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (ogni %gs)\n"
+
+#: command.c:4290
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (ogni %gs)\n"
+
+#: command.c:4344 command.c:4351 common.c:702 common.c:709 common.c:1321
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:4543
+#, c-format
+msgid "\"%s.%s\" is not a view\n"
+msgstr "\"%s.%s\" non è una vista\n"
+
+#: command.c:4559
+#, c-format
+msgid "could not parse reloptions array\n"
+msgstr "interpretazione dell'array reloptions fallita\n"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection\n"
+msgstr "non è possibile effettuare l'escape senza una connessione attiva\n"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\"\n"
+msgstr "l'argomento del comando shell contiene un \"a capo\" o un ritorno carrello: \"%s\"\n"
+
+#: common.c:416
+#, c-format
+msgid "connection to server was lost\n"
+msgstr "connessione al server persa\n"
+
+#: common.c:420
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "Connessione al server persa. Tentativo di reset: "
+
+#: common.c:425
+#, c-format
+msgid "Failed.\n"
+msgstr "Fallito.\n"
+
+#: common.c:432
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Riuscito.\n"
+
+#: common.c:532 common.c:1082 common.c:1256
+#, c-format
+msgid "unexpected PQresultStatus: %d\n"
+msgstr "PQresultStatus imprevisto: %d\n"
+
+#: common.c:641
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Tempo: %.3f ms\n"
+
+#: common.c:656
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Tempo: %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:665
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Tempo: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:672
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Tempo: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:809
+#, c-format
+msgid "\\watch cannot be used with COPY\n"
+msgstr "\\watch non può essere usato con COPY\n"
+
+#: common.c:814
+#, c-format
+msgid "unexpected result status for \\watch\n"
+msgstr "risultato imprevisto per \\watch\n"
+
+#: common.c:843
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "Notifica asincrona \"%s\" con payload \"%s\" ricevuta dal processo server con PID %d.\n"
+
+#: common.c:846
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "Notifica asincrona \"%s\" ricevuta dal processo server con PID %d.\n"
+
+#: common.c:908
+#, c-format
+msgid "no rows returned for \\gset\n"
+msgstr "nessuna riga restituita per \\gset\n"
+
+#: common.c:913
+#, c-format
+msgid "more than one row returned for \\gset\n"
+msgstr "più di una riga restituita per \\gset\n"
+
+#: common.c:1301
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(Modalità passo singolo: verifica comando)***********************************\n"
+"%s\n"
+"***(premi invio per procedere oppure digita x ed invio per annullare)***********\n"
+
+#: common.c:1356
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n"
+msgstr "Il server (versione %s) non supporta savepoint per ON_ERROR_ROLLBACK.\n"
+
+#: common.c:1419
+#, c-format
+msgid "STATEMENT: %s\n"
+msgstr "COMANDO: %s\n"
+
+#: common.c:1462
+#, c-format
+msgid "unexpected transaction status (%d)\n"
+msgstr "stato della transazione imprevisto (%d)\n"
+
+#: common.c:1599 describe.c:1941
+msgid "Column"
+msgstr "Colonna"
+
+#: common.c:1600 describe.c:175 describe.c:390 describe.c:408 describe.c:453
+#: describe.c:470 describe.c:959 describe.c:1123 describe.c:1664
+#: describe.c:1688 describe.c:1942 describe.c:3529 describe.c:3734
+#: describe.c:4925
+msgid "Type"
+msgstr "Tipo"
+
+#: common.c:1649
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "Il comando non ha prodotto risultati, o il risultato non ha colonne.\n"
+
+#: copy.c:99
+#, c-format
+msgid "\\copy: arguments required\n"
+msgstr "\\copy: parametri richiesti\n"
+
+#: copy.c:254
+#, c-format
+msgid "\\copy: parse error at \"%s\"\n"
+msgstr "\\copy: errore di sintassi a \"%s\"\n"
+
+#: copy.c:256
+#, c-format
+msgid "\\copy: parse error at end of line\n"
+msgstr "\\copy: errore di sintassi a fine riga\n"
+
+#: copy.c:329
+#, c-format
+msgid "could not execute command \"%s\": %s\n"
+msgstr "esecuzione del comando \"%s\" fallito: %s\n"
+
+#: copy.c:345
+#, c-format
+msgid "could not stat file \"%s\": %s\n"
+msgstr "richiesta informazioni sul file \"%s\" fallita: %s\n"
+
+#: copy.c:349
+#, c-format
+msgid "%s: cannot copy from/to a directory\n"
+msgstr "%s: non è possibile copiare da/a una directory\n"
+
+#: copy.c:386
+#, c-format
+msgid "could not close pipe to external command: %s\n"
+msgstr "chiusura della pipe verso il comando esterno fallita: %s\n"
+
+#: copy.c:452 copy.c:463
+#, c-format
+msgid "could not write COPY data: %s\n"
+msgstr "scrittura dei dati COPY fallita: %s\n"
+
+#: copy.c:470
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "trasferimento dei dati COPY fallito: %s"
+
+#: copy.c:531
+msgid "canceled by user"
+msgstr "annullata dall'utente"
+
+#: copy.c:542
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Inserire i dati da copiare seguiti da un \"a capo\".\n"
+"Terminare con un backslash ed un punto su una singola riga, o un segnale EOF."
+
+#: copy.c:670
+msgid "aborted because of read failure"
+msgstr "interrotto a causa di lettura non riuscita"
+
+#: copy.c:704
+msgid "trying to exit copy mode"
+msgstr "tentativo di uscita dalla modalità copy"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set\n"
+msgstr "\\crosstabview: l'istruzione non ha restituito dati\n"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns\n"
+msgstr "\\crosstabview: la query deve restituire almeno tre colonne\n"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns\n"
+msgstr "\\crosstabview: le intestazioni verticali ed orizzontali devono essere in colonne diverse\n"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns\n"
+msgstr "\\crosstabview: la colonna dei dati deve essere specificata quando la query restituisce più di tre colonne\n"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded\n"
+msgstr "\\crosstabview: numero massimo di colonne (%d) superato\n"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n"
+msgstr "\\crosstabview: i risultati della query contengono più di un valore per la riga \"%s\", colonna \"%s\"\n"
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d\n"
+msgstr "\\crosstabview: il numero di colonna %d è al di fuori dell'intervallo 1..%d\n"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\"\n"
+msgstr "\\crosstabview: nome di colonna ambiguo: \"%s\"\n"
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\"\n"
+msgstr "\\crosstabview: colonna non trovata: \"%s\"\n"
+
+#: describe.c:75 describe.c:370 describe.c:675 describe.c:807 describe.c:951
+#: describe.c:1112 describe.c:1184 describe.c:3518 describe.c:3732
+#: describe.c:3823 describe.c:4090 describe.c:4235 describe.c:4476
+#: describe.c:4551 describe.c:4562 describe.c:4624 describe.c:5049
+#: describe.c:5132
+msgid "Schema"
+msgstr "Schema"
+
+#: describe.c:76 describe.c:173 describe.c:240 describe.c:248 describe.c:371
+#: describe.c:676 describe.c:808 describe.c:869 describe.c:952 describe.c:1185
+#: describe.c:3519 describe.c:3655 describe.c:3733 describe.c:3824
+#: describe.c:3903 describe.c:4091 describe.c:4160 describe.c:4236
+#: describe.c:4477 describe.c:4552 describe.c:4563 describe.c:4625
+#: describe.c:4822 describe.c:4906 describe.c:5130 describe.c:5302
+#: describe.c:5527
+msgid "Name"
+msgstr "Nome"
+
+#: describe.c:77 describe.c:383 describe.c:401 describe.c:447 describe.c:464
+msgid "Result data type"
+msgstr "Tipo dato del risultato"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:384 describe.c:402
+#: describe.c:448 describe.c:465
+msgid "Argument data types"
+msgstr "Tipo dato dei parametri"
+
+#: describe.c:110 describe.c:117 describe.c:183 describe.c:271 describe.c:510
+#: describe.c:724 describe.c:823 describe.c:894 describe.c:1187 describe.c:1960
+#: describe.c:3307 describe.c:3554 describe.c:3686 describe.c:3760
+#: describe.c:3833 describe.c:3916 describe.c:3999 describe.c:4103
+#: describe.c:4169 describe.c:4237 describe.c:4378 describe.c:4420
+#: describe.c:4493 describe.c:4555 describe.c:4564 describe.c:4626
+#: describe.c:4848 describe.c:4928 describe.c:5063 describe.c:5133
+#: large_obj.c:289 large_obj.c:299
+msgid "Description"
+msgstr "Descrizione"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Lista delle funzione aggregate"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods.\n"
+msgstr "Il server (versione %s) non supporta metodi di accesso.\n"
+
+#: describe.c:174
+msgid "Index"
+msgstr "Indice"
+
+#: describe.c:182 describe.c:4827
+msgid "Handler"
+msgstr "Handler"
+
+#: describe.c:201
+msgid "List of access methods"
+msgstr "Lista dei metodi di accesso"
+
+#: describe.c:227
+#, c-format
+msgid "The server (version %s) does not support tablespaces.\n"
+msgstr "Il server (versione %s) non supporta i tablespace.\n"
+
+#: describe.c:241 describe.c:249 describe.c:498 describe.c:714 describe.c:870
+#: describe.c:1111 describe.c:3530 describe.c:3659 describe.c:3905
+#: describe.c:4161 describe.c:4823 describe.c:4907 describe.c:5303
+#: describe.c:5429 describe.c:5528 large_obj.c:288
+msgid "Owner"
+msgstr "Proprietario"
+
+#: describe.c:242 describe.c:250
+msgid "Location"
+msgstr "Posizione"
+
+#: describe.c:261 describe.c:3126
+msgid "Options"
+msgstr "Opzioni"
+
+#: describe.c:266 describe.c:687 describe.c:886 describe.c:3546 describe.c:3550
+msgid "Size"
+msgstr "Dimensione"
+
+#: describe.c:288
+msgid "List of tablespaces"
+msgstr "Lista dei tablespace"
+
+#: describe.c:330
+#, c-format
+msgid "\\df only takes [anptwS+] as options\n"
+msgstr "\\df accetta come opzioni solo [anptwS+]\n"
+
+#: describe.c:338 describe.c:349
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s\n"
+msgstr "\\df non accetta un'opzione \"%c\" con il server in versione %s\n"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "agg"
+msgstr "aggr"
+
+#: describe.c:387 describe.c:405
+msgid "window"
+msgstr "finestra"
+
+#: describe.c:388
+msgid "proc"
+msgstr "procedura"
+
+#: describe.c:389 describe.c:407 describe.c:452 describe.c:469
+msgid "func"
+msgstr "funzione"
+
+#: describe.c:406 describe.c:451 describe.c:468 describe.c:1321
+msgid "trigger"
+msgstr "trigger"
+
+#: describe.c:480
+msgid "immutable"
+msgstr "immutabile"
+
+#: describe.c:481
+msgid "stable"
+msgstr "stabile"
+
+#: describe.c:482
+msgid "volatile"
+msgstr "volatile"
+
+#: describe.c:483
+msgid "Volatility"
+msgstr "Volatilità"
+
+#: describe.c:491
+msgid "restricted"
+msgstr "ristretta"
+
+#: describe.c:492
+msgid "safe"
+msgstr "sicura"
+
+#: describe.c:493
+msgid "unsafe"
+msgstr "non sicura"
+
+#: describe.c:494
+msgid "Parallel"
+msgstr "Parallela"
+
+#: describe.c:499
+msgid "definer"
+msgstr "definitore"
+
+#: describe.c:500
+msgid "invoker"
+msgstr "invocatore"
+
+#: describe.c:501
+msgid "Security"
+msgstr "Sicurezza"
+
+#: describe.c:508
+msgid "Language"
+msgstr "Linguaggio"
+
+#: describe.c:509
+msgid "Source code"
+msgstr "Codice sorgente"
+
+#: describe.c:638
+msgid "List of functions"
+msgstr "Lista delle funzioni"
+
+#: describe.c:686
+msgid "Internal name"
+msgstr "Nome interno"
+
+#: describe.c:708
+msgid "Elements"
+msgstr "Elementi"
+
+#: describe.c:765
+msgid "List of data types"
+msgstr "Lista dei tipi di dati"
+
+#: describe.c:809
+msgid "Left arg type"
+msgstr "Argomento sinistro"
+
+#: describe.c:810
+msgid "Right arg type"
+msgstr "Argomento destro"
+
+#: describe.c:811
+msgid "Result type"
+msgstr "Tipo di risultato"
+
+#: describe.c:816 describe.c:3911 describe.c:3976 describe.c:3982
+#: describe.c:4377
+msgid "Function"
+msgstr "Funzione"
+
+#: describe.c:841
+msgid "List of operators"
+msgstr "Lista degli operatori"
+
+#: describe.c:871
+msgid "Encoding"
+msgstr "Codifica"
+
+#: describe.c:876 describe.c:4092
+msgid "Collate"
+msgstr "Ordinamento"
+
+#: describe.c:877 describe.c:4093
+msgid "Ctype"
+msgstr "Ctype"
+
+#: describe.c:890
+msgid "Tablespace"
+msgstr "Tablespace"
+
+#: describe.c:912
+msgid "List of databases"
+msgstr "Lista dei database"
+
+#: describe.c:953 describe.c:958 describe.c:1114 describe.c:3520
+#: describe.c:3527
+msgid "table"
+msgstr "tabella"
+
+#: describe.c:954 describe.c:3521
+msgid "view"
+msgstr "vista"
+
+#: describe.c:955 describe.c:3522
+msgid "materialized view"
+msgstr "vista materializzata"
+
+#: describe.c:956 describe.c:1116 describe.c:3524
+msgid "sequence"
+msgstr "sequenza"
+
+#: describe.c:957 describe.c:3526
+msgid "foreign table"
+msgstr "tabella esterna"
+
+#: describe.c:970
+msgid "Column privileges"
+msgstr "Privilegi di colonna"
+
+#: describe.c:1001 describe.c:1035
+msgid "Policies"
+msgstr "Regole di sicurezza"
+
+#: describe.c:1067 describe.c:5584 describe.c:5588
+msgid "Access privileges"
+msgstr "Privilegi di accesso"
+
+#: describe.c:1098
+#, c-format
+msgid "The server (version %s) does not support altering default privileges.\n"
+msgstr "Il server (versione %s) non supporta la modifica dei privilegi di default.\n"
+
+#: describe.c:1118
+msgid "function"
+msgstr "funzione"
+
+#: describe.c:1120
+msgid "type"
+msgstr "tipo"
+
+#: describe.c:1122
+msgid "schema"
+msgstr "schema"
+
+#: describe.c:1146
+msgid "Default access privileges"
+msgstr "Privilegi di accesso di default"
+
+#: describe.c:1186
+msgid "Object"
+msgstr "Oggetto"
+
+#: describe.c:1200
+msgid "table constraint"
+msgstr "vincolo di tabella"
+
+#: describe.c:1222
+msgid "domain constraint"
+msgstr "vincolo di dominio"
+
+#: describe.c:1250
+msgid "operator class"
+msgstr "classe operatori"
+
+#: describe.c:1279
+msgid "operator family"
+msgstr "famiglia operatori"
+
+#: describe.c:1301
+msgid "rule"
+msgstr "regola"
+
+#: describe.c:1343
+msgid "Object descriptions"
+msgstr "Descrizioni oggetti"
+
+#: describe.c:1399 describe.c:3618
+#, c-format
+msgid "Did not find any relation named \"%s\".\n"
+msgstr "Non è stata trovata nessuna relazione chiamata \"%s\".\n"
+
+#: describe.c:1402 describe.c:3621
+#, c-format
+msgid "Did not find any relations.\n"
+msgstr "Non è stata trovata nessuna relazione.\n"
+
+#: describe.c:1619
+#, c-format
+msgid "Did not find any relation with OID %s.\n"
+msgstr "Non è stata trovata nessuna relazione con OID %s.\n"
+
+#: describe.c:1665 describe.c:1689
+msgid "Start"
+msgstr "Inizio"
+
+#: describe.c:1666 describe.c:1690
+msgid "Minimum"
+msgstr "Minimo"
+
+#: describe.c:1667 describe.c:1691
+msgid "Maximum"
+msgstr "Massimo"
+
+#: describe.c:1668 describe.c:1692
+msgid "Increment"
+msgstr "Incremento"
+
+#: describe.c:1669 describe.c:1693 describe.c:1818 describe.c:3827
+#: describe.c:3993
+msgid "yes"
+msgstr "sì"
+
+#: describe.c:1670 describe.c:1694 describe.c:1819 describe.c:3827
+#: describe.c:3990
+msgid "no"
+msgstr "no"
+
+#: describe.c:1671 describe.c:1695
+msgid "Cycles?"
+msgstr "Riparte?"
+
+#: describe.c:1672 describe.c:1696
+msgid "Cache"
+msgstr "Cache"
+
+#: describe.c:1739
+#, c-format
+msgid "Owned by: %s"
+msgstr "Proprietario: %s"
+
+#: describe.c:1743
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Sequenza per la colonna identità: %s"
+
+#: describe.c:1750
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Sequenza \"%s.%s\""
+
+#: describe.c:1880 describe.c:1926
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Tabella non loggata \"%s.%s\""
+
+#: describe.c:1883 describe.c:1929
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Tabella \"%s.%s\""
+
+#: describe.c:1887
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Vista \"%s.%s\""
+
+#: describe.c:1892
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Vista materializzata non loggata \"%s.%s\""
+
+#: describe.c:1895
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Vista materializzata \"%s.%s\""
+
+#: describe.c:1901
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Indice non loggato \"%s.%s\""
+
+#: describe.c:1904
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Indice \"%s.%s\""
+
+#: describe.c:1909
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "relazione speciale \"%s.%s\""
+
+#: describe.c:1913
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "Tabella TOAST \"%s.%s\""
+
+#: describe.c:1917
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Tipo composito \"%s.%s\""
+
+#: describe.c:1921
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Tabella esterna \"%s.%s\""
+
+#: describe.c:1945 describe.c:3740
+msgid "Collation"
+msgstr "Ordinamento"
+
+#: describe.c:1946 describe.c:3747
+msgid "Nullable"
+msgstr "Può essere null"
+
+#: describe.c:1947 describe.c:3748
+msgid "Default"
+msgstr "Default"
+
+#: describe.c:1950
+msgid "Key?"
+msgstr "Chiave?"
+
+#: describe.c:1952
+msgid "Definition"
+msgstr "Definizione"
+
+#: describe.c:1954 describe.c:4843 describe.c:4927 describe.c:4998
+#: describe.c:5062
+msgid "FDW options"
+msgstr "Opzioni FDW"
+
+#: describe.c:1956
+msgid "Storage"
+msgstr "Memorizzazione"
+
+#: describe.c:1958
+msgid "Stats target"
+msgstr "Dest. stat."
+
+#: describe.c:2072
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Partizione di: %s %s"
+
+#: describe.c:2080
+msgid "No partition constraint"
+msgstr "Nessun vincolo di partizione"
+
+#: describe.c:2082
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Vincolo di partizione: %s"
+
+#: describe.c:2105
+#, c-format
+msgid "Partition key: %s"
+msgstr "Chiave di partizione: %s"
+
+#: describe.c:2174
+msgid "primary key, "
+msgstr "chiave primaria, "
+
+#: describe.c:2176
+msgid "unique, "
+msgstr "univoco, "
+
+#: describe.c:2182
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "per la tabella \"%s.%s\""
+
+#: describe.c:2186
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", predicato (%s)"
+
+#: describe.c:2189
+msgid ", clustered"
+msgstr ", raggruppato"
+
+#: describe.c:2192
+msgid ", invalid"
+msgstr ", non valido"
+
+#: describe.c:2195
+msgid ", deferrable"
+msgstr ", deferibile"
+
+#: describe.c:2198
+msgid ", initially deferred"
+msgstr ", inizialmente deferito"
+
+#: describe.c:2201
+msgid ", replica identity"
+msgstr ", identità di replica"
+
+#: describe.c:2260
+msgid "Indexes:"
+msgstr "Indici:"
+
+#: describe.c:2344
+msgid "Check constraints:"
+msgstr "Vincoli di controllo:"
+
+#: describe.c:2380
+msgid "Foreign-key constraints:"
+msgstr "Vincoli di integrità referenziale"
+
+#: describe.c:2411
+msgid "Referenced by:"
+msgstr "Referenziato da:"
+
+#: describe.c:2461
+msgid "Policies:"
+msgstr "Regole di sicurezza:"
+
+#: describe.c:2464
+msgid "Policies (forced row security enabled):"
+msgstr "Regole (sicurezza per riga forzata abilitata):"
+
+#: describe.c:2467
+msgid "Policies (row security enabled): (none)"
+msgstr "Regole (sicurezza per riga abilitata): (nessuna)"
+
+#: describe.c:2470
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Regole (sicurezza per riga forzata abilitata): (nessuna)"
+
+#: describe.c:2473
+msgid "Policies (row security disabled):"
+msgstr "Regole (sicurezza per riga disabilitata):"
+
+#: describe.c:2535
+msgid "Statistics objects:"
+msgstr "Oggetti statistiche:"
+
+#: describe.c:2638 describe.c:2742
+msgid "Rules:"
+msgstr "Regole:"
+
+#: describe.c:2641
+msgid "Disabled rules:"
+msgstr "Regole disabilitate:"
+
+#: describe.c:2644
+msgid "Rules firing always:"
+msgstr "Regole sempre abilitate:"
+
+#: describe.c:2647
+msgid "Rules firing on replica only:"
+msgstr "Regole abilitate solo su replica:"
+
+#: describe.c:2687
+msgid "Publications:"
+msgstr "Pubblicazioni:"
+
+#: describe.c:2725
+msgid "View definition:"
+msgstr "Definizione vista:"
+
+#: describe.c:2864
+msgid "Triggers:"
+msgstr "Trigger:"
+
+#: describe.c:2868
+msgid "Disabled user triggers:"
+msgstr "Trigger utente disabilitati:"
+
+#: describe.c:2870
+msgid "Disabled triggers:"
+msgstr "Trigger disabilitati:"
+
+#: describe.c:2873
+msgid "Disabled internal triggers:"
+msgstr "Trigger interni disabilitati:"
+
+#: describe.c:2876
+msgid "Triggers firing always:"
+msgstr "Trigger sempre abilitati:"
+
+#: describe.c:2879
+msgid "Triggers firing on replica only:"
+msgstr "Trigger abilitati solo su replica."
+
+#: describe.c:2938
+#, c-format
+msgid "Server: %s"
+msgstr "Server: %s"
+
+#: describe.c:2946
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "Opzioni FDW (%s)"
+
+#: describe.c:2965
+msgid "Inherits"
+msgstr "Eredita"
+
+#: describe.c:3024
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Numero di partizioni: %d"
+
+#: describe.c:3033
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Numero di tabelle figlio: %d (Usa \\d+ per elencarle.)"
+
+#: describe.c:3035
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Numero di partizioni: %d (Usa \\d+ per elencarle.)"
+
+#: describe.c:3043
+msgid "Child tables"
+msgstr "Tabelle figlio"
+
+#: describe.c:3043
+msgid "Partitions"
+msgstr "Partizioni"
+
+#: describe.c:3086
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Tabella di tipo: %s"
+
+#: describe.c:3102
+msgid "Replica Identity"
+msgstr "Identità di replica"
+
+#: describe.c:3115
+msgid "Has OIDs: yes"
+msgstr "Ha OID: sì"
+
+#: describe.c:3195
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Tablespace: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3207
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", tablespace \"%s\""
+
+#: describe.c:3300
+msgid "List of roles"
+msgstr "Lista dei ruoli"
+
+#: describe.c:3302
+msgid "Role name"
+msgstr "Nome ruolo"
+
+#: describe.c:3303
+msgid "Attributes"
+msgstr "Attributi"
+
+#: describe.c:3304
+msgid "Member of"
+msgstr "Membro di"
+
+#: describe.c:3315
+msgid "Superuser"
+msgstr "Superutente"
+
+#: describe.c:3318
+msgid "No inheritance"
+msgstr "Nessuna ereditarietà"
+
+#: describe.c:3321
+msgid "Create role"
+msgstr "Crea ruoli"
+
+#: describe.c:3324
+msgid "Create DB"
+msgstr "Crea DB"
+
+#: describe.c:3327
+msgid "Cannot login"
+msgstr "Login non possibile"
+
+#: describe.c:3331
+msgid "Replication"
+msgstr "Replica"
+
+#: describe.c:3335
+msgid "Bypass RLS"
+msgstr "Scavalca RLS"
+
+#: describe.c:3344
+msgid "No connections"
+msgstr "Niente connessioni"
+
+#: describe.c:3346
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d connessione"
+msgstr[1] "%d connessioni"
+
+#: describe.c:3356
+msgid "Password valid until "
+msgstr "Password valida fino a "
+
+#: describe.c:3406
+#, c-format
+msgid "The server (version %s) does not support per-database role settings.\n"
+msgstr "Il server (versione %s) non supporta l'impostazione dei ruoli per database.\n"
+
+#: describe.c:3419
+msgid "Role"
+msgstr "Ruolo"
+
+#: describe.c:3420
+msgid "Database"
+msgstr "Database"
+
+#: describe.c:3421
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: describe.c:3442
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\".\n"
+msgstr "Non è stata trovata nessuna impostazione per il ruolo \"%s\" e il database \"%s\".\n"
+
+#: describe.c:3445
+#, c-format
+msgid "Did not find any settings for role \"%s\".\n"
+msgstr "Non è stata trovata nessuna impostazione per il ruolo \"%s\".\n"
+
+#: describe.c:3448
+#, c-format
+msgid "Did not find any settings.\n"
+msgstr "Non è stata trovata nessuna impostazione.\n"
+
+#: describe.c:3453
+msgid "List of settings"
+msgstr "Lista delle impostazioni"
+
+#: describe.c:3523 describe.c:3528
+msgid "index"
+msgstr "indice"
+
+#: describe.c:3525
+msgid "special"
+msgstr "speciale"
+
+#: describe.c:3535 describe.c:5050
+msgid "Table"
+msgstr "Tabella"
+
+#: describe.c:3626
+msgid "List of relations"
+msgstr "Lista delle relazioni"
+
+#: describe.c:3663
+msgid "Trusted"
+msgstr "Fidato"
+
+#: describe.c:3671
+msgid "Internal language"
+msgstr "Linguaggio interno"
+
+#: describe.c:3672
+msgid "Call handler"
+msgstr "Handler di chiamata"
+
+#: describe.c:3673 describe.c:4830
+msgid "Validator"
+msgstr "Validatore"
+
+#: describe.c:3676
+msgid "Inline handler"
+msgstr "Handler inline"
+
+#: describe.c:3704
+msgid "List of languages"
+msgstr "Lista dei linguaggi"
+
+#: describe.c:3749
+msgid "Check"
+msgstr "Controllo"
+
+#: describe.c:3791
+msgid "List of domains"
+msgstr "Lista dei domini"
+
+#: describe.c:3825
+msgid "Source"
+msgstr "Sorgente"
+
+#: describe.c:3826
+msgid "Destination"
+msgstr "Destinazione"
+
+#: describe.c:3828
+msgid "Default?"
+msgstr "Predefinito?"
+
+#: describe.c:3865
+msgid "List of conversions"
+msgstr "Lista delle conversioni"
+
+#: describe.c:3904
+msgid "Event"
+msgstr "Evento"
+
+#: describe.c:3906
+msgid "enabled"
+msgstr "abilitato"
+
+#: describe.c:3907
+msgid "replica"
+msgstr "replica"
+
+#: describe.c:3908
+msgid "always"
+msgstr "sempre"
+
+#: describe.c:3909
+msgid "disabled"
+msgstr "disabilitato"
+
+#: describe.c:3910 describe.c:5529
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: describe.c:3912
+msgid "Tags"
+msgstr "Tag"
+
+#: describe.c:3931
+msgid "List of event triggers"
+msgstr "Lista di trigger di evento"
+
+#: describe.c:3960
+msgid "Source type"
+msgstr "Tipo di partenza"
+
+#: describe.c:3961
+msgid "Target type"
+msgstr "Tipo di arrivo"
+
+#: describe.c:3992
+msgid "in assignment"
+msgstr "in assegnazione"
+
+#: describe.c:3994
+msgid "Implicit?"
+msgstr "Implicito?"
+
+#: describe.c:4049
+msgid "List of casts"
+msgstr "Lista delle conversioni di tipo"
+
+#: describe.c:4077
+#, c-format
+msgid "The server (version %s) does not support collations.\n"
+msgstr "Il server (versione %s) non supporta gli ordinamenti.\n"
+
+#: describe.c:4098
+msgid "Provider"
+msgstr "Provider"
+
+#: describe.c:4133
+msgid "List of collations"
+msgstr "Lista degli ordinamenti"
+
+#: describe.c:4192
+msgid "List of schemas"
+msgstr "Lista degli schemi"
+
+#: describe.c:4217 describe.c:4464 describe.c:4535 describe.c:4606
+#, c-format
+msgid "The server (version %s) does not support full text search.\n"
+msgstr "Il server (versione %s) non supporta la ricerca full text.\n"
+
+#: describe.c:4252
+msgid "List of text search parsers"
+msgstr "Lista degli analizzatori di ricerca resto"
+
+#: describe.c:4297
+#, c-format
+msgid "Did not find any text search parser named \"%s\".\n"
+msgstr "Non è stato trovato nessun analizzatore di ricerca testo chiamato \"%s\".\n"
+
+#: describe.c:4300
+#, c-format
+msgid "Did not find any text search parsers.\n"
+msgstr "Non è stato trovato nessun analizzatore di ricerca testo.\n"
+
+#: describe.c:4375
+msgid "Start parse"
+msgstr "Inizio analisi"
+
+#: describe.c:4376
+msgid "Method"
+msgstr "Metodo"
+
+#: describe.c:4380
+msgid "Get next token"
+msgstr "Ottiene il token successivo"
+
+#: describe.c:4382
+msgid "End parse"
+msgstr "Fine analisi"
+
+#: describe.c:4384
+msgid "Get headline"
+msgstr "Ottiene intestazione"
+
+#: describe.c:4386
+msgid "Get token types"
+msgstr "Ottieni i tipi token"
+
+#: describe.c:4397
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Analizzatore di ricerca teso \"%s.%s\""
+
+#: describe.c:4400
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Analizzatore di ricerca testo \"%s\""
+
+#: describe.c:4419
+msgid "Token name"
+msgstr "Nome token"
+
+#: describe.c:4430
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Tipi token per l'analizzatore \"%s.%s\""
+
+#: describe.c:4433
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Tipi token per l'analizzatore \"%s\""
+
+#: describe.c:4487
+msgid "Template"
+msgstr "Modello"
+
+#: describe.c:4488
+msgid "Init options"
+msgstr "Opzioni iniziali:"
+
+#: describe.c:4510
+msgid "List of text search dictionaries"
+msgstr "Lista dei dizionari di ricerca testo"
+
+#: describe.c:4553
+msgid "Init"
+msgstr "Init"
+
+#: describe.c:4554
+msgid "Lexize"
+msgstr "Lexize"
+
+#: describe.c:4581
+msgid "List of text search templates"
+msgstr "Lista dei modelli di ricerca testo"
+
+#: describe.c:4641
+msgid "List of text search configurations"
+msgstr "Lista delle configurazioni di ricerca testo"
+
+#: describe.c:4687
+#, c-format
+msgid "Did not find any text search configuration named \"%s\".\n"
+msgstr "Non è stata trovata nessuna configurazione di ricerca testo chiamata \"%s\".\n"
+
+#: describe.c:4690
+#, c-format
+msgid "Did not find any text search configurations.\n"
+msgstr "Non è stata trovata nessuna configurazione di ricerca testo.\n"
+
+#: describe.c:4756
+msgid "Token"
+msgstr "Token"
+
+#: describe.c:4757
+msgid "Dictionaries"
+msgstr "Dizionari"
+
+#: describe.c:4768
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Configurazione di ricerca testo \"%s.%s\""
+
+#: describe.c:4771
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Configurazione di ricerca testo \"%s\""
+
+#: describe.c:4775
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Analizzatore \"%s.%s\""
+
+#: describe.c:4778
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Analizzatore: \"%s\""
+
+#: describe.c:4812
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers.\n"
+msgstr "Il server (versione %s) non supporta i wrapper di dati esterni.\n"
+
+#: describe.c:4870
+msgid "List of foreign-data wrappers"
+msgstr "Lista dei wrapper di dati esterni"
+
+#: describe.c:4895
+#, c-format
+msgid "The server (version %s) does not support foreign servers.\n"
+msgstr "Il server (versione %s) non supporta server esterni.\n"
+
+#: describe.c:4908
+msgid "Foreign-data wrapper"
+msgstr "Wrapper per dati esterni"
+
+#: describe.c:4926 describe.c:5131
+msgid "Version"
+msgstr "Versione"
+
+#: describe.c:4952
+msgid "List of foreign servers"
+msgstr "Lista dei server esterni"
+
+#: describe.c:4977
+#, c-format
+msgid "The server (version %s) does not support user mappings.\n"
+msgstr "Il server (versione %s) non supporta la mappatura di utenti.\n"
+
+#: describe.c:4987 describe.c:5051
+msgid "Server"
+msgstr "Server"
+
+#: describe.c:4988
+msgid "User name"
+msgstr "Nome utente"
+
+#: describe.c:5013
+msgid "List of user mappings"
+msgstr "Lista delle mappature degli utenti"
+
+#: describe.c:5038
+#, c-format
+msgid "The server (version %s) does not support foreign tables.\n"
+msgstr "Il server (versione %s) non supporta tabelle esterne.\n"
+
+#: describe.c:5091
+msgid "List of foreign tables"
+msgstr "Lista delle tabelle esterne"
+
+#: describe.c:5116 describe.c:5173
+#, c-format
+msgid "The server (version %s) does not support extensions.\n"
+msgstr "Il server (versione %s) non supporta le estensioni.\n"
+
+#: describe.c:5148
+msgid "List of installed extensions"
+msgstr "Lista delle estensioni installate"
+
+#: describe.c:5201
+#, c-format
+msgid "Did not find any extension named \"%s\".\n"
+msgstr "Non è stata trovata nessuna estensione chiamata \"%s\".\n"
+
+#: describe.c:5204
+#, c-format
+msgid "Did not find any extensions.\n"
+msgstr "Non è stata trovata nessuna estensione.\n"
+
+#: describe.c:5248
+msgid "Object description"
+msgstr "Descrizione dell'oggetto"
+
+#: describe.c:5258
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Oggetti nell'estensione \"%s\""
+
+#: describe.c:5287 describe.c:5358
+#, c-format
+msgid "The server (version %s) does not support publications.\n"
+msgstr "Il server (versione %s) non supporta pubblicazioni.\n"
+
+#: describe.c:5304 describe.c:5430
+msgid "All tables"
+msgstr "Tutte le tabelle"
+
+#: describe.c:5305 describe.c:5431
+msgid "Inserts"
+msgstr "Inserimenti"
+
+#: describe.c:5306 describe.c:5432
+msgid "Updates"
+msgstr "Modifiche"
+
+#: describe.c:5307 describe.c:5433
+msgid "Deletes"
+msgstr "Cancellazioni"
+
+#: describe.c:5311 describe.c:5435
+msgid "Truncates"
+msgstr "Troncamenti"
+
+#: describe.c:5328
+msgid "List of publications"
+msgstr "Lista delle pubblicazioni"
+
+#: describe.c:5396
+#, c-format
+msgid "Did not find any publication named \"%s\".\n"
+msgstr "Non è stata trovata nessuna pubblicazione chiamata \"%s\".\n"
+
+#: describe.c:5399
+#, c-format
+msgid "Did not find any publications.\n"
+msgstr "Non è stata trovata nessuna pubblicazione.\n"
+
+#: describe.c:5426
+#, c-format
+msgid "Publication %s"
+msgstr "Pubblicazione %s"
+
+#: describe.c:5470
+msgid "Tables:"
+msgstr "Tabelle:"
+
+#: describe.c:5514
+#, c-format
+msgid "The server (version %s) does not support subscriptions.\n"
+msgstr "Il server (versione %s) non supporta sottoscrizioni.\n"
+
+#: describe.c:5530
+msgid "Publication"
+msgstr "Pubblicazione"
+
+#: describe.c:5537
+msgid "Synchronous commit"
+msgstr "Commit sincrono"
+
+#: describe.c:5538
+msgid "Conninfo"
+msgstr "Conninfo"
+
+#: describe.c:5560
+msgid "List of subscriptions"
+msgstr "Lista di sottoscrizioni"
+
+#: help.c:62
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql è il terminale interattivo per PostgreSQL.\n"
+"\n"
+
+#: help.c:74 help.c:345 help.c:419 help.c:462
+#, c-format
+msgid "Usage:\n"
+msgstr "Utilizzo:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [OPZIONI]... [NOME DB [NOME UTENTE]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Opzioni generali:\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr ""
+" -c, --command=COMANDO esegue solamente un comando singolo (SQL o interno)\n"
+" e termina\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr ""
+" -d, --dbname=NOMEDB specifica il nome del database a cui connettersi\n"
+" (default: \"%s\")\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=NOME FILE esegui i comandi da un file ed esci\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l --list elenca i database disponibili ed esci\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=NOME=VALORE\n"
+" imposta la variabile psql NOME a VALORE\n"
+" (es.: -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version mostra informazioni sulla versione ed esci\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc non leggere il file di avvio (~/.psqlrc)\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (\"uno\"), --single-transaction\n"
+" esegui in un'unica transazione (se non interattivo)\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=opzioni] mostra quest'aiuto ed esci\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands mostra la lista dei comandi backslash ed esci\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables mostra la lista delle variabili speciali ed esci\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Opzioni di input e output:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all mostra tutti gli input dallo script\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors mostra i comandi falliti\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries mostra i comandi inviati al server\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden mostra le query generate dai comandi interni\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=NOME_FILE invia log di sessione al file\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr ""
+" -n, --no-readline disabilita la modifica avanzata della riga\n"
+" di comando (readline)\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr ""
+" -o, --output=NOME_FILE reindirizza i risultati al file specificato\n"
+" (oppure |pipe)\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr ""
+" -q, --quiet esegui in modo silenzioso (nessun messaggio, solo\n"
+" risultati query)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step modalità passo singolo (conferma ogni query)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr ""
+" -S, --single-line modalità riga singola (la fine riga termina\n"
+" il comando SQL)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Opzioni formato output:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align modo output tabelle disallineato\n"
+
+#: help.c:111
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=STRINGA\n"
+" separatore di campo per output non allineato\n"
+" (default: \"%s\")\n"
+
+#: help.c:114
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html modo output tabelle in HTML\n"
+
+#: help.c:115
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr ""
+" -P, --pset=VAR[=ARG] imposta l'opzione di stampa VAR ad ARG (vedi anche\n"
+" il comando \\pset)\n"
+
+#: help.c:116
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=STRINGa\n"
+" separatore di record per output non allineato\n"
+" (default: \"a capo\")\n"
+
+#: help.c:118
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only mostra solo le righe\n"
+
+#: help.c:119
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr ""
+" -T, --table-attr=TESTO imposta gli attributi delle tabelle HTML\n"
+" (es: larghezza, bordo)\n"
+
+#: help.c:120
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded attiva output tabelle espanso\n"
+
+#: help.c:121
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" usa il byte zero come separatore di campo per l'output\n"
+" non allineato\n"
+
+#: help.c:123
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" usa il byte zero come separatore di record per l'output\n"
+" non allineato\n"
+
+#: help.c:126
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Opzioni di connessione:\n"
+
+#: help.c:129
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr ""
+" -h, --host=HOSTNAME host server del database o directory socket\n"
+" (default: \"%s\")\n"
+
+#: help.c:130
+msgid "local socket"
+msgstr "sockect locale"
+
+#: help.c:133
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORTA porta di ascolto del database (default: \"%s\")\n"
+
+#: help.c:139
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=UTENTE nome utente del database (default: \"%s\")\n"
+
+#: help.c:140
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password non chiedere mai le password\n"
+
+#: help.c:141
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr ""
+" -W, --password forza la richiesta di una password (dovrebbe essere\n"
+" automatico)\n"
+
+#: help.c:143
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"Per maggiori informazioni digita \"\\?\" (per comandi interni) oppure \"\\help\"\n"
+"per comandi SQL) da psql, oppure consultare la sezione psql nella\n"
+"documentazione PostgreSQL.\n"
+"\n"
+
+#: help.c:146
+#, c-format
+msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+msgstr "Puoi segnalare eventuali bug a <pgsql-bugs@postgresql.org>.\n"
+
+#: help.c:172
+#, c-format
+msgid "General\n"
+msgstr "Generali\n"
+
+#: help.c:173
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright mostra i termini di uso e distribuzione di PostgreSQL\n"
+
+#: help.c:174
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [COLONNE] esegui la query e mostra il risultato in crosstab\n"
+
+#: help.c:175
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose mostra il messaggio di errore più recente alla massima loquacità\n"
+
+#: help.c:176
+#, c-format
+msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n"
+msgstr ""
+" \\g [FILE] o ; esegui la query (ed invia i risultati ad un file o\n"
+" ad una |pipe)\n"
+
+#: help.c:177
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc descrivi il risultato della query, senza eseguirla\n"
+
+#: help.c:178
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec esegui la query, poi esegui ogni valore nel suo risultato\n"
+
+#: help.c:179
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] esegui la query e salva il risultato in una variabile psql\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gx [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [FILE] come \\g, ma forza un modo di output espanso\n"
+
+#: help.c:181
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q esci da psql\n"
+
+#: help.c:182
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEC] esegui una query ogni SEC secondi\n"
+
+#: help.c:185
+#, c-format
+msgid "Help\n"
+msgstr "Aiuto\n"
+
+#: help.c:187
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] mostra aiuto sui comandi backslash\n"
+
+#: help.c:188
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options mostra aiuto sulle opzioni di riga di comando psql\n"
+
+#: help.c:189
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables mostra aiusto sulle variabili speciali\n"
+
+#: help.c:190
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr ""
+" \\h [NOME] mostra aiuto sulla sintassi dei comandi SQL, * mostra\n"
+" tutti i comandi\n"
+
+#: help.c:193
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Buffer Query\n"
+
+#: help.c:194
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr ""
+" \\e [FILE] [RIGA] modifica il buffer della query (o il file) con\n"
+" l'editor esterno\n"
+
+#: help.c:195
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr ""
+" \\ef [FUNZIONE [RIGA]] modifica la definizione della funzione con l'editor\n"
+" esterno\n"
+
+#: help.c:196
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [VISTA [LINE]] modifica la definizione della vista con un editor esterno\n"
+
+#: help.c:197
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p mostra i contenuti del buffer query\n"
+
+#: help.c:198
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r reimposta (cancella) il buffer query\n"
+
+#: help.c:200
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [FILE] mostra la cronologia salvala in un file\n"
+
+#: help.c:202
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w FILE scrivi il buffer query su file\n"
+
+#: help.c:205
+#, c-format
+msgid "Input/Output\n"
+msgstr "Input/Output\n"
+
+#: help.c:206
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... esegui una SQL COPY con flusso di dati dal client\n"
+
+#: help.c:207
+#, c-format
+msgid " \\echo [STRING] write string to standard output\n"
+msgstr " \\echo [STRINGA] stampa la stringa su standard output\n"
+
+#: help.c:208
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i FILE esegui i comandi dal file\n"
+
+#: help.c:209
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr ""
+" \\ir FILE come \\i, ma relativo alla posizione nello script\n"
+" corrente\n"
+
+#: help.c:210
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr ""
+" \\o [FILE] invia i risultati della query ad un file oppure\n"
+" una |pipe\n"
+
+#: help.c:211
+#, c-format
+msgid " \\qecho [STRING] write string to query output stream (see \\o)\n"
+msgstr ""
+" \\qecho [STRINGA] scrivi la stringa nello stream di output della query\n"
+" (vedi \\o)\n"
+
+#: help.c:214
+#, c-format
+msgid "Conditional\n"
+msgstr "Condizionale\n"
+
+#: help.c:215
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if ESPR inizia un blocco condizionale\n"
+
+#: help.c:216
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif ESPR alternativa all'interno di un blocco condizionale\n"
+
+#: help.c:217
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else alternativa finale in un blocco condizionale\n"
+
+#: help.c:218
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif fine del blocco condizionale\n"
+
+#: help.c:221
+#, c-format
+msgid "Informational\n"
+msgstr "Informativi\n"
+
+#: help.c:222
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (opzioni: S = mostra gli oggetti di sistema, + = dettagli addizionali)\n"
+
+#: help.c:223
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] elenca le tabelle, le viste e le sequenze\n"
+
+#: help.c:224
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] NOME descrive la tabella, vista, sequenza o indice\n"
+
+#: help.c:225
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [MODELLO] elenca le funzioni di aggregazione\n"
+
+#: help.c:226
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [MODELLO] elenca i metodi di accesso\n"
+
+#: help.c:227
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [MODELLO] elenca i tablespace\n"
+
+#: help.c:228
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [MODELLO] elenca le conversioni di codifica\n"
+
+#: help.c:229
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [MODELLO] elenca le conversioni di tipo\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [MODELLO] mostra la descrizione di oggetti non elencati altrove\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [MODELLO] elenca i domini\n"
+
+#: help.c:232
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [MODELLO] elenca i privilegi predefiniti\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [MODELLO] elenca le tabelle esterne\n"
+
+#: help.c:234
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [MODELLO] elenca le tabelle esterne\n"
+
+#: help.c:235
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [MODELLO] elenca i server esterni\n"
+
+#: help.c:236
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [MODELLO] elenca le mappature degli utenti\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [MODELLO] elenca i wrapper di dati esterni\n"
+
+#: help.c:238
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[anptw][S+] [PATRN] elenca le funzioni [solo aggr/normali/procedure/trigger/finestra]\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [MODELLO] elenca le configurazioni di ricerca testo\n"
+
+#: help.c:240
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [MODELLO] elenca i dizionari di ricerca testo\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [MODELLO] elenca gli analizzatori di ricerca testo\n"
+
+#: help.c:242
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [MODELLO] elenca i modelli di ricerca di testo\n"
+
+#: help.c:243
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [MODELLO] elenca i ruoli\n"
+
+#: help.c:244
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [MODELLO] elenca gli indici\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl elenca i large object, stesso risultato di \\lo_list\n"
+
+#: help.c:246
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [MODELLO] elenca i linguaggi procedurali\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [PATTERN] elenca le viste materializzate\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [MODELLO] elenca gli schemi\n"
+
+#: help.c:249
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [MODELLO] elenca gli operatori\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [MODELLO] elenca gli ordinamenti\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr ""
+" \\dp [MODELLO] elenca i permessi di accesso alla tabella, vista\n"
+" o sequenza\n"
+
+#: help.c:252
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [MOD1 [MOD2]] elenca le impostazioni dei ruoli per database\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [MODELLO] elenca le pubblicazioni di replica\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [MODELLO] elenca le sottoscrizioni di replica\n"
+
+#: help.c:255
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [MODELLO] elenca le sequenze\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [MODELLO] elenca le tabelle\n"
+
+#: help.c:257
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [MODELLO] elenca i tipi di dato\n"
+
+#: help.c:258
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [MODELLO] elenca i ruoli\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [MODELLO] elenca le viste\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [MODELLO] elenca le estensioni\n"
+
+#: help.c:261
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [PATTERN] elenca i trigger di evento\n"
+
+#: help.c:262
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [PATTERN] elenca i database\n"
+
+#: help.c:263
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNZIONE mostra la definizione di una funzione\n"
+
+#: help.c:264
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] VISTA mostra la definizione di una vista\n"
+
+#: help.c:265
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [MODELLO] uguale a \\dp\n"
+
+#: help.c:268
+#, c-format
+msgid "Formatting\n"
+msgstr "Formattazione\n"
+
+#: help.c:269
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a alterna tra modalità di output allineata e disallineata\n"
+
+#: help.c:270
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr ""
+" \\C [STRINGA] imposta nome tabella oppure elimina se la stringa\n"
+" non è specificata\n"
+
+#: help.c:271
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr ""
+" \\f [STRINGA] mostra o imposta il separatore di campo per l'output\n"
+" query disallineato\n"
+
+#: help.c:272
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H cambia modalità HTML (attualmente %s)\n"
+
+#: help.c:274
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (NAME := {border|columns|expanded|fieldsep|fieldsep_zero|\n"
+" footer|format|linestyle|null|numericlocale|pager|\n"
+" pager_min_lines|recordsep|recordsep_zero|tableattr|title|\n"
+" tuples_only|unicode_border_linestyle|\n"
+" unicode_column_linestyle|unicode_header_linestyle})\n"
+msgstr ""
+" \\pset [NOME [VALORE]] imposta opzioni di output tabella\n"
+" (NOME := {border|columns|expanded|fieldsep|fieldsep_zero|\n"
+" footer|format|linestyle|null|numericlocale|pager|\n"
+" pager_min_lines|recordsep|recordsep_zero|tableattr|title|\n"
+" tuples_only|unicode_border_linestyle|\n"
+" unicode_column_linestyle|unicode_header_linestyle})\n"
+
+#: help.c:280
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] mostra solo le righe (attualmente %s)\n"
+
+#: help.c:282
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr ""
+" \\T [STRINGA] imposta gli attributi HTML di <table>, se non\n"
+" specificato allora annullali\n"
+
+#: help.c:283
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr ""
+" \\x [on|off|auto] cambia modalità output espansa\n"
+" (attualmente %s)\n"
+
+#: help.c:287
+#, c-format
+msgid "Connection\n"
+msgstr "Connessione\n"
+
+#: help.c:289
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connetti ad un nuovo database (attualmente \"%s\")\n"
+
+#: help.c:293
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connetti ad un nuovo database (nessuna connessione attiva)\n"
+
+#: help.c:295
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo mostra le informazioni su la connessione corrente\n"
+
+#: help.c:296
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [CODIFICA] mostra o imposta la codifica del client\n"
+
+#: help.c:297
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [UTENTE] cambia la password per un utente in sicurezza\n"
+
+#: help.c:300
+#, c-format
+msgid "Operating System\n"
+msgstr "Sistema operativo\n"
+
+#: help.c:301
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [DIRECTORY] cambia la directory di lavoro\n"
+
+#: help.c:302
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NOME [VALORE] imposta o elimina una variabile d'ambiente\n"
+
+#: help.c:303
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr ""
+" \\timing [on|off] imposta cronometro dei comandi\n"
+" (attualmente %s)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr ""
+" \\! [COMANDO] esegui un comando in una shell oppure avvia una shell\n"
+" interattiva\n"
+
+#: help.c:308
+#, c-format
+msgid "Variables\n"
+msgstr "Variabili\n"
+
+#: help.c:309
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [TESTO] NOME richiedi all'utente di impostare una variabile interna\n"
+
+#: help.c:310
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr ""
+" \\set [NOME [VALORE]] imposta una variabile interna, oppure mostrale tutte\n"
+" se non sono specificati parametri\n"
+
+#: help.c:311
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset NOME cancella una variabile interna\n"
+
+#: help.c:314
+#, c-format
+msgid "Large Objects\n"
+msgstr "Large Object\n"
+
+#: help.c:315
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENTO] \n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID operazioni sui large object\n"
+
+#: help.c:342
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"Lista delle variabili speciali\n"
+"\n"
+
+#: help.c:344
+#, c-format
+msgid "psql variables:\n"
+msgstr "variabili psql:\n"
+
+#: help.c:346
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NOME=VALORE\n"
+" oppure \\set NOME VALORE dentro psql\n"
+"\n"
+
+#: help.c:348
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" se impostato, i comandi SQL riusciti sono salvati automaticamente\n"
+
+#: help.c:350
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" determina il caso usato per completare le parole chiave SQL\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:353
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" il nome del database attualmente connesso\n"
+
+#: help.c:355
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" controlla quale input è scritto su stardard output\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" se impostato, mostra le query interne dei comandi backslash;\n"
+" se impostato a \"noexec\", mostrale solo senza eseguirle\n"
+
+#: help.c:361
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" codifica del set di caratteri del client corrente\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" true se l'ultima query è fallita, altrimenti false\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" il numero di righe del risultato da leggere e mostrare per volta (0 = tutte)\n"
+
+#: help.c:367
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" controlla la storia dei comandi [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:369
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" nome del file usato per memorizzare la storia dei comandi\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" numero massimo di comandi da salvare nella storia dei comandi\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" l'host del server del database attualmente connesso\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" numero di EOF richiesti per terminare una sessione interattiva\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" valore dell'ultimo OID interessato\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" messaggio e SQLSTATE dell'ultimo errore, o stringa vuota e \"00000\" se non c'è\n"
+
+#: help.c:382
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" se impostato, un errore non termina una transazione (usa punti di\n"
+" salvataggio impliciti)\n"
+
+#: help.c:384
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" termina l'esecuzione batch dopo un errore\n"
+
+#: help.c:386
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" porta del server attualmente connesso\n"
+
+#: help.c:388
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" specifica il prompt psql standard\n"
+
+#: help.c:390
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" specifica il prompt usato quando un'istruzione continua da una riga\n"
+" precedente\n"
+
+#: help.c:392
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" specifica il prompt usato in COPY ... FROM STDIN\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" esegui silenziosamente (come con l'opzione -q)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" numero di righe restituite o toccate dall'ultima query, o 0\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" versione del server (come stringa breve o formato numerico)\n"
+
+#: help.c:401
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" controlla la visualizzazione dei campi di contesto dei messaggi [never,\n"
+" errors, always]\n"
+
+#: help.c:403
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" se impostato, la fine riga termina i comandi SQL (come con l'opzione -S)\n"
+
+#: help.c:405
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" modalità passo singolo (come con l'opzione -s)\n"
+
+#: help.c:407
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" il codice SQLSTATE dell'ultima query, o \"00000\" se non c'è stato errore\n"
+
+#: help.c:409
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" l'utente database attualmente connesso\n"
+
+#: help.c:411
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse]\n"
+msgstr ""
+" VERBOSITY\n"
+" controlla la loquacità della visualizzazione degli errori [default, verbose,\n"
+" terse]\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" la versione di psql (come stringa estesa, stringa breve, formato numerico)\n"
+
+#: help.c:418
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Impostazioni di visualizzazione:\n"
+
+#: help.c:420
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NOME[=VALORE]\n"
+" oppure \\pset NOME [VALORE] dentro psql\n"
+"\n"
+
+#: help.c:422
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" stile bordo (numero)\n"
+
+#: help.c:424
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" larghezza destinazione per il formato wrapped\n"
+
+#: help.c:426
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (o x)\n"
+" output espanso [on, off, auto]\n"
+
+#: help.c:428
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" separatore di campo per l'output non allineato (default \"%s\")\n"
+
+#: help.c:431
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" imposta il separatore di campo per l'output non allineato al byte zero\n"
+
+#: help.c:433
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" abilita o disabilita la visualizzazione del piè di pagina [on, off]\n"
+
+#: help.c:435
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" imposta il formato di output [unaligned, aligned, wrapped, html, asciidoc,\n"
+" ...]\n"
+
+#: help.c:437
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" imposta lo stile di disegno delle righe dei bordi [ascii, old-ascii,\n"
+" unicode]\n"
+
+#: help.c:439
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" imposta la stringa da visualizzare al posto dei valori null\n"
+
+#: help.c:441
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" abilita i caratteri specifici per il locale per separare i gruppi di cifre\n"
+" [on, off]\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" controlla quando usare la paginazione esterna [yes, no, always]\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" separatore di record (riga) per l'output non allineato\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" imposta il separatore di campo per l'output non allineato al byte zero\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (or T)\n"
+" specifica gli attributi per il tag table in formato html o la larghezza\n"
+" colonna proporzionale dei dati allineati a sinistra in formato\n"
+" latex-longtable\n"
+
+#: help.c:452
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" imposta il titolo della tabella per le tabelle stampate in seguito\n"
+
+#: help.c:454
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" se impostato, mostra solo i dati della tabella\n"
+
+#: help.c:456
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" imposta lo stile di disegno delle righe Unicode [single, double]\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Variabili d'ambiente:\n"
+
+#: help.c:465
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NOME=VALORE [NOME=VALORE] psql ...\n"
+" oppure \\setenv NOME [VALORE] dentro psql\n"
+"\n"
+
+#: help.c:467
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NOME=VALORE\n"
+" psql ...\n"
+" oppure \\setenv NOME [VALORE] dentro psql\n"
+"\n"
+
+#: help.c:470
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" numero di colonne per il formato wrapped\n"
+
+#: help.c:472
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" come il parametro di connessione application_name\n"
+
+#: help.c:474
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" come il parametro di connessione dbname\n"
+
+#: help.c:476
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" come il parametro di connessione host\n"
+
+#: help.c:478
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" password di connessione (uso non raccomandato)\n"
+
+#: help.c:480
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" nome del file delle password\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" come il parametro di connessione port\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" come il parametro di connessione user\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor usato dai comandi \\e, \\ef, \\ev\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" come specificare un numero di riga quando si invoca l'editor\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" posizione alternativa del file della storia dei comandi\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" nome del programma di paginazione esterno\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" posizione alternativa del file .psqlrc dell'utente\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" shell usata dal comando \\!\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" directory per i file temporanei\n"
+
+#: help.c:542
+msgid "Available help:\n"
+msgstr "Aiuti disponibili:\n"
+
+#: help.c:626
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+msgstr ""
+"Comando: %s\n"
+"Descrizione: %s\n"
+"Sintassi:\n"
+"%s\n"
+"\n"
+
+#: help.c:642
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"Nessun aiuto disponibile per \"%s\".\n"
+"Prova a digitare \\h senza parametri per vedere gli aiuti disponibili.\n"
+
+#: input.c:216
+#, c-format
+msgid "could not read from input file: %s\n"
+msgstr "lettura dal file di input fallita: %s\n"
+
+#: input.c:471 input.c:510
+#, c-format
+msgid "could not save history to file \"%s\": %s\n"
+msgstr "salvataggio della cronologia nel file \"%s\" fallita: %s\n"
+
+#: input.c:530
+#, c-format
+msgid "history is not supported by this installation\n"
+msgstr "history non è supportata da questa installazione\n"
+
+#: large_obj.c:64
+#, c-format
+msgid "%s: not connected to a database\n"
+msgstr "%s: non connesso ad un database\n"
+
+#: large_obj.c:83
+#, c-format
+msgid "%s: current transaction is aborted\n"
+msgstr "%s: questa transazione è stata interrotta\n"
+
+#: large_obj.c:86
+#, c-format
+msgid "%s: unknown transaction status\n"
+msgstr "%s: stato della transazione sconosciuto\n"
+
+#: large_obj.c:287 large_obj.c:298
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:308
+msgid "Large objects"
+msgstr "Large object"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped\n"
+msgstr "\\if: uscita\n"
+
+#: mainloop.c:183
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Utilizza \"\\q\" per uscire %s.\n"
+
+#: mainloop.c:205
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"L'input è un file di dump in formato PostgreSQL.\n"
+"Usa il tool di riga di comando pg_restore per ripristinare questo dump in un database.\n"
+
+#: mainloop.c:282
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Usa \\? per avere un aiuto o premi control-C per svuotare il buffer di input."
+
+#: mainloop.c:284
+msgid "Use \\? for help."
+msgstr "Usa \\? per avere un aiuto."
+
+#: mainloop.c:288
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Stai utilizzando psql, l'interfaccia a riga di comando di PostgreSQL."
+
+#: mainloop.c:289
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Digita: \\copyright per le condizioni di distribuzione\n"
+" \\h per la guida sui comandi SQL\n"
+" \\? per la guida sui comandi psql\n"
+" \\g o termina con punto e virgola per eseguire la query\n"
+" \\q per uscire\n"
+
+#: mainloop.c:313
+msgid "Use \\q to quit."
+msgstr "Usa \\q per uscire."
+
+#: mainloop.c:316 mainloop.c:340
+msgid "Use control-D to quit."
+msgstr "Usa control-D per uscire."
+
+#: mainloop.c:318 mainloop.c:342
+msgid "Use control-C to quit."
+msgstr "Usa control-C per uscire."
+
+#: mainloop.c:449 mainloop.c:591
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block\n"
+msgstr "query ignorata: usa \\endif o Ctrl-C per uscire dal blocco \\if corrente\n"
+
+#: mainloop.c:609
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)\n"
+msgstr "raggiunta fine file senza aver trovato \\endif finali\n"
+
+#: psqlscanslash.l:637
+#, c-format
+msgid "unterminated quoted string\n"
+msgstr "stringa tra virgolette non terminata\n"
+
+#: psqlscanslash.l:810
+#, c-format
+msgid "%s: out of memory\n"
+msgstr "%s: memoria esaurita\n"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:441 sql_help.c:443
+#: sql_help.c:446 sql_help.c:448 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:587 sql_help.c:589 sql_help.c:591
+#: sql_help.c:593 sql_help.c:595 sql_help.c:598 sql_help.c:600 sql_help.c:603
+#: sql_help.c:614 sql_help.c:616 sql_help.c:657 sql_help.c:659 sql_help.c:661
+#: sql_help.c:664 sql_help.c:666 sql_help.c:668 sql_help.c:701 sql_help.c:705
+#: sql_help.c:709 sql_help.c:728 sql_help.c:731 sql_help.c:734 sql_help.c:763
+#: sql_help.c:775 sql_help.c:783 sql_help.c:786 sql_help.c:789 sql_help.c:804
+#: sql_help.c:807 sql_help.c:836 sql_help.c:841 sql_help.c:846 sql_help.c:851
+#: sql_help.c:856 sql_help.c:878 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:887 sql_help.c:889 sql_help.c:930 sql_help.c:974 sql_help.c:979
+#: sql_help.c:984 sql_help.c:989 sql_help.c:994 sql_help.c:1013 sql_help.c:1024
+#: sql_help.c:1026 sql_help.c:1045 sql_help.c:1055 sql_help.c:1057
+#: sql_help.c:1059 sql_help.c:1071 sql_help.c:1075 sql_help.c:1077
+#: sql_help.c:1088 sql_help.c:1090 sql_help.c:1092 sql_help.c:1108
+#: sql_help.c:1110 sql_help.c:1114 sql_help.c:1117 sql_help.c:1118
+#: sql_help.c:1119 sql_help.c:1122 sql_help.c:1124 sql_help.c:1257
+#: sql_help.c:1259 sql_help.c:1262 sql_help.c:1265 sql_help.c:1267
+#: sql_help.c:1269 sql_help.c:1272 sql_help.c:1275 sql_help.c:1387
+#: sql_help.c:1389 sql_help.c:1391 sql_help.c:1394 sql_help.c:1415
+#: sql_help.c:1418 sql_help.c:1421 sql_help.c:1424 sql_help.c:1428
+#: sql_help.c:1430 sql_help.c:1432 sql_help.c:1434 sql_help.c:1448
+#: sql_help.c:1451 sql_help.c:1453 sql_help.c:1455 sql_help.c:1465
+#: sql_help.c:1467 sql_help.c:1477 sql_help.c:1479 sql_help.c:1489
+#: sql_help.c:1492 sql_help.c:1514 sql_help.c:1516 sql_help.c:1518
+#: sql_help.c:1521 sql_help.c:1523 sql_help.c:1525 sql_help.c:1528
+#: sql_help.c:1578 sql_help.c:1620 sql_help.c:1623 sql_help.c:1625
+#: sql_help.c:1627 sql_help.c:1629 sql_help.c:1631 sql_help.c:1634
+#: sql_help.c:1681 sql_help.c:1697 sql_help.c:1918 sql_help.c:1987
+#: sql_help.c:2006 sql_help.c:2019 sql_help.c:2075 sql_help.c:2081
+#: sql_help.c:2091 sql_help.c:2111 sql_help.c:2136 sql_help.c:2154
+#: sql_help.c:2183 sql_help.c:2275 sql_help.c:2316 sql_help.c:2339
+#: sql_help.c:2360 sql_help.c:2361 sql_help.c:2396 sql_help.c:2416
+#: sql_help.c:2438 sql_help.c:2452 sql_help.c:2472 sql_help.c:2495
+#: sql_help.c:2525 sql_help.c:2550 sql_help.c:2596 sql_help.c:2867
+#: sql_help.c:2880 sql_help.c:2897 sql_help.c:2913 sql_help.c:2953
+#: sql_help.c:3005 sql_help.c:3009 sql_help.c:3011 sql_help.c:3017
+#: sql_help.c:3035 sql_help.c:3062 sql_help.c:3097 sql_help.c:3109
+#: sql_help.c:3118 sql_help.c:3162 sql_help.c:3176 sql_help.c:3204
+#: sql_help.c:3212 sql_help.c:3220 sql_help.c:3228 sql_help.c:3236
+#: sql_help.c:3244 sql_help.c:3252 sql_help.c:3260 sql_help.c:3269
+#: sql_help.c:3280 sql_help.c:3288 sql_help.c:3296 sql_help.c:3304
+#: sql_help.c:3312 sql_help.c:3322 sql_help.c:3331 sql_help.c:3340
+#: sql_help.c:3348 sql_help.c:3358 sql_help.c:3369 sql_help.c:3377
+#: sql_help.c:3386 sql_help.c:3397 sql_help.c:3406 sql_help.c:3414
+#: sql_help.c:3422 sql_help.c:3430 sql_help.c:3438 sql_help.c:3446
+#: sql_help.c:3454 sql_help.c:3462 sql_help.c:3470 sql_help.c:3478
+#: sql_help.c:3486 sql_help.c:3503 sql_help.c:3512 sql_help.c:3520
+#: sql_help.c:3537 sql_help.c:3552 sql_help.c:3820 sql_help.c:3871
+#: sql_help.c:3900 sql_help.c:3908 sql_help.c:4341 sql_help.c:4389
+#: sql_help.c:4530
+msgid "name"
+msgstr "nome"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1768
+#: sql_help.c:3177 sql_help.c:4127
+msgid "aggregate_signature"
+msgstr "signature_aggregato"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:447 sql_help.c:524 sql_help.c:570
+#: sql_help.c:588 sql_help.c:615 sql_help.c:665 sql_help.c:730 sql_help.c:785
+#: sql_help.c:806 sql_help.c:845 sql_help.c:890 sql_help.c:931 sql_help.c:983
+#: sql_help.c:1015 sql_help.c:1025 sql_help.c:1058 sql_help.c:1078
+#: sql_help.c:1091 sql_help.c:1125 sql_help.c:1266 sql_help.c:1388
+#: sql_help.c:1431 sql_help.c:1452 sql_help.c:1466 sql_help.c:1478
+#: sql_help.c:1491 sql_help.c:1522 sql_help.c:1579 sql_help.c:1628
+msgid "new_name"
+msgstr "nuovo_nome"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:483 sql_help.c:529 sql_help.c:617
+#: sql_help.c:626 sql_help.c:684 sql_help.c:704 sql_help.c:733 sql_help.c:788
+#: sql_help.c:850 sql_help.c:888 sql_help.c:988 sql_help.c:1027 sql_help.c:1056
+#: sql_help.c:1076 sql_help.c:1089 sql_help.c:1123 sql_help.c:1326
+#: sql_help.c:1390 sql_help.c:1433 sql_help.c:1454 sql_help.c:1517
+#: sql_help.c:1626 sql_help.c:2853
+msgid "new_owner"
+msgstr "nuovo_proprietario"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:449 sql_help.c:534 sql_help.c:667 sql_help.c:708 sql_help.c:736
+#: sql_help.c:791 sql_help.c:855 sql_help.c:993 sql_help.c:1060 sql_help.c:1093
+#: sql_help.c:1268 sql_help.c:1435 sql_help.c:1456 sql_help.c:1468
+#: sql_help.c:1480 sql_help.c:1524 sql_help.c:1630
+msgid "new_schema"
+msgstr "nuovo_schema"
+
+#: sql_help.c:44 sql_help.c:1832 sql_help.c:3178 sql_help.c:4156
+msgid "where aggregate_signature is:"
+msgstr "dove signature_aggregato è:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:837
+#: sql_help.c:842 sql_help.c:847 sql_help.c:852 sql_help.c:857 sql_help.c:975
+#: sql_help.c:980 sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1786
+#: sql_help.c:1803 sql_help.c:1809 sql_help.c:1833 sql_help.c:1836
+#: sql_help.c:1839 sql_help.c:1988 sql_help.c:2007 sql_help.c:2010
+#: sql_help.c:2276 sql_help.c:2473 sql_help.c:3179 sql_help.c:3182
+#: sql_help.c:3185 sql_help.c:3270 sql_help.c:3359 sql_help.c:3387
+#: sql_help.c:3705 sql_help.c:4038 sql_help.c:4133 sql_help.c:4140
+#: sql_help.c:4146 sql_help.c:4157 sql_help.c:4160 sql_help.c:4163
+msgid "argmode"
+msgstr "modo_arg"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1787
+#: sql_help.c:1804 sql_help.c:1810 sql_help.c:1834 sql_help.c:1837
+#: sql_help.c:1840 sql_help.c:1989 sql_help.c:2008 sql_help.c:2011
+#: sql_help.c:2277 sql_help.c:2474 sql_help.c:3180 sql_help.c:3183
+#: sql_help.c:3186 sql_help.c:3271 sql_help.c:3360 sql_help.c:3388
+#: sql_help.c:4134 sql_help.c:4141 sql_help.c:4147 sql_help.c:4158
+#: sql_help.c:4161 sql_help.c:4164
+msgid "argname"
+msgstr "nome_arg"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1788
+#: sql_help.c:1805 sql_help.c:1811 sql_help.c:1835 sql_help.c:1838
+#: sql_help.c:1841 sql_help.c:2278 sql_help.c:2475 sql_help.c:3181
+#: sql_help.c:3184 sql_help.c:3187 sql_help.c:3272 sql_help.c:3361
+#: sql_help.c:3389 sql_help.c:4135 sql_help.c:4142 sql_help.c:4148
+#: sql_help.c:4159 sql_help.c:4162 sql_help.c:4165
+msgid "argtype"
+msgstr "tipo_arg"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:472 sql_help.c:484 sql_help.c:925
+#: sql_help.c:1073 sql_help.c:1449 sql_help.c:1573 sql_help.c:1605
+#: sql_help.c:1652 sql_help.c:1889 sql_help.c:1895 sql_help.c:2186
+#: sql_help.c:2227 sql_help.c:2234 sql_help.c:2243 sql_help.c:2317
+#: sql_help.c:2526 sql_help.c:2618 sql_help.c:2882 sql_help.c:3063
+#: sql_help.c:3085 sql_help.c:3572 sql_help.c:3739 sql_help.c:4588
+msgid "option"
+msgstr "opzione"
+
+#: sql_help.c:113 sql_help.c:926 sql_help.c:1574 sql_help.c:2318
+#: sql_help.c:2527 sql_help.c:3064
+msgid "where option can be:"
+msgstr "dove opzione può essere:"
+
+#: sql_help.c:114 sql_help.c:2118
+msgid "allowconn"
+msgstr "permetti_conn"
+
+#: sql_help.c:115 sql_help.c:927 sql_help.c:1575 sql_help.c:2119
+#: sql_help.c:2528 sql_help.c:3065
+msgid "connlimit"
+msgstr "limite_conn"
+
+#: sql_help.c:116 sql_help.c:2120
+msgid "istemplate"
+msgstr "è_template"
+
+#: sql_help.c:122 sql_help.c:605 sql_help.c:670 sql_help.c:1271 sql_help.c:1319
+msgid "new_tablespace"
+msgstr "nuovo_tablespace"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:543 sql_help.c:545
+#: sql_help.c:546 sql_help.c:862 sql_help.c:864 sql_help.c:865 sql_help.c:934
+#: sql_help.c:938 sql_help.c:941 sql_help.c:1002 sql_help.c:1004
+#: sql_help.c:1005 sql_help.c:1136 sql_help.c:1139 sql_help.c:1582
+#: sql_help.c:1586 sql_help.c:1589 sql_help.c:2287 sql_help.c:2479
+#: sql_help.c:3925 sql_help.c:4330
+msgid "configuration_parameter"
+msgstr "parametro_config"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:467 sql_help.c:473 sql_help.c:485
+#: sql_help.c:544 sql_help.c:597 sql_help.c:676 sql_help.c:682 sql_help.c:863
+#: sql_help.c:886 sql_help.c:935 sql_help.c:1003 sql_help.c:1074
+#: sql_help.c:1113 sql_help.c:1116 sql_help.c:1121 sql_help.c:1137
+#: sql_help.c:1138 sql_help.c:1301 sql_help.c:1321 sql_help.c:1371
+#: sql_help.c:1393 sql_help.c:1450 sql_help.c:1583 sql_help.c:1606
+#: sql_help.c:2187 sql_help.c:2228 sql_help.c:2235 sql_help.c:2244
+#: sql_help.c:2288 sql_help.c:2289 sql_help.c:2348 sql_help.c:2380
+#: sql_help.c:2480 sql_help.c:2481 sql_help.c:2498 sql_help.c:2619
+#: sql_help.c:2649 sql_help.c:2749 sql_help.c:2761 sql_help.c:2774
+#: sql_help.c:2817 sql_help.c:2839 sql_help.c:2856 sql_help.c:2883
+#: sql_help.c:3086 sql_help.c:3740 sql_help.c:4331 sql_help.c:4332
+msgid "value"
+msgstr "valore"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "ruolo_destinazione"
+
+#: sql_help.c:198 sql_help.c:2170 sql_help.c:2574 sql_help.c:2579
+#: sql_help.c:3687 sql_help.c:3694 sql_help.c:3708 sql_help.c:3714
+#: sql_help.c:4020 sql_help.c:4027 sql_help.c:4041 sql_help.c:4047
+msgid "schema_name"
+msgstr "nome_schema"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "grant_o_revoke_abbreviato"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "dove grant_o_revoke_abbreviato è uno di:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:568 sql_help.c:604 sql_help.c:669 sql_help.c:809 sql_help.c:945
+#: sql_help.c:1270 sql_help.c:1593 sql_help.c:2321 sql_help.c:2322
+#: sql_help.c:2323 sql_help.c:2324 sql_help.c:2325 sql_help.c:2454
+#: sql_help.c:2531 sql_help.c:2532 sql_help.c:2533 sql_help.c:2534
+#: sql_help.c:2535 sql_help.c:3068 sql_help.c:3069 sql_help.c:3070
+#: sql_help.c:3071 sql_help.c:3072 sql_help.c:3721 sql_help.c:3722
+#: sql_help.c:3723 sql_help.c:4021 sql_help.c:4025 sql_help.c:4028
+#: sql_help.c:4030 sql_help.c:4032 sql_help.c:4034 sql_help.c:4036
+#: sql_help.c:4042 sql_help.c:4044 sql_help.c:4046 sql_help.c:4048
+#: sql_help.c:4050 sql_help.c:4052 sql_help.c:4053 sql_help.c:4054
+#: sql_help.c:4351
+msgid "role_name"
+msgstr "nome_ruolo"
+
+#: sql_help.c:236 sql_help.c:460 sql_help.c:1286 sql_help.c:1288
+#: sql_help.c:1339 sql_help.c:1350 sql_help.c:1375 sql_help.c:1622
+#: sql_help.c:2139 sql_help.c:2143 sql_help.c:2247 sql_help.c:2251
+#: sql_help.c:2343 sql_help.c:2745 sql_help.c:2757 sql_help.c:2770
+#: sql_help.c:2778 sql_help.c:2789 sql_help.c:2821 sql_help.c:3771
+#: sql_help.c:3786 sql_help.c:3788 sql_help.c:4216 sql_help.c:4217
+#: sql_help.c:4226 sql_help.c:4267 sql_help.c:4268 sql_help.c:4269
+#: sql_help.c:4270 sql_help.c:4271 sql_help.c:4272 sql_help.c:4305
+#: sql_help.c:4306 sql_help.c:4311 sql_help.c:4316 sql_help.c:4455
+#: sql_help.c:4456 sql_help.c:4465 sql_help.c:4506 sql_help.c:4507
+#: sql_help.c:4508 sql_help.c:4509 sql_help.c:4510 sql_help.c:4511
+#: sql_help.c:4558 sql_help.c:4560 sql_help.c:4606 sql_help.c:4662
+#: sql_help.c:4663 sql_help.c:4672 sql_help.c:4713 sql_help.c:4714
+#: sql_help.c:4715 sql_help.c:4716 sql_help.c:4717 sql_help.c:4718
+msgid "expression"
+msgstr "espressione"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "vincolo_di_dominio"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:475 sql_help.c:476
+#: sql_help.c:1263 sql_help.c:1307 sql_help.c:1308 sql_help.c:1309
+#: sql_help.c:1338 sql_help.c:1349 sql_help.c:1366 sql_help.c:1774
+#: sql_help.c:1776 sql_help.c:2142 sql_help.c:2246 sql_help.c:2250
+#: sql_help.c:2777 sql_help.c:2788 sql_help.c:3783
+msgid "constraint_name"
+msgstr "nome_vincolo"
+
+#: sql_help.c:244 sql_help.c:1264
+msgid "new_constraint_name"
+msgstr "nuovo_nome_vincolo"
+
+#: sql_help.c:317 sql_help.c:1072
+msgid "new_version"
+msgstr "nuova_versione"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "oggetto_membro"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "dove oggetto_membro è:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1766 sql_help.c:1771 sql_help.c:1778
+#: sql_help.c:1779 sql_help.c:1780 sql_help.c:1781 sql_help.c:1782
+#: sql_help.c:1783 sql_help.c:1784 sql_help.c:1789 sql_help.c:1791
+#: sql_help.c:1795 sql_help.c:1797 sql_help.c:1801 sql_help.c:1806
+#: sql_help.c:1807 sql_help.c:1814 sql_help.c:1815 sql_help.c:1816
+#: sql_help.c:1817 sql_help.c:1818 sql_help.c:1819 sql_help.c:1820
+#: sql_help.c:1821 sql_help.c:1822 sql_help.c:1823 sql_help.c:1824
+#: sql_help.c:1829 sql_help.c:1830 sql_help.c:4123 sql_help.c:4128
+#: sql_help.c:4129 sql_help.c:4130 sql_help.c:4131 sql_help.c:4137
+#: sql_help.c:4138 sql_help.c:4143 sql_help.c:4144 sql_help.c:4149
+#: sql_help.c:4150 sql_help.c:4151 sql_help.c:4152 sql_help.c:4153
+#: sql_help.c:4154
+msgid "object_name"
+msgstr "nome_oggetto"
+
+#: sql_help.c:326 sql_help.c:1767 sql_help.c:4126
+msgid "aggregate_name"
+msgstr "nome_aggregato"
+
+#: sql_help.c:328 sql_help.c:1769 sql_help.c:2053 sql_help.c:2057
+#: sql_help.c:2059 sql_help.c:3195
+msgid "source_type"
+msgstr "tipo_sorgente"
+
+#: sql_help.c:329 sql_help.c:1770 sql_help.c:2054 sql_help.c:2058
+#: sql_help.c:2060 sql_help.c:3196
+msgid "target_type"
+msgstr "tipo_destinazione"
+
+#: sql_help.c:336 sql_help.c:773 sql_help.c:1785 sql_help.c:2055
+#: sql_help.c:2094 sql_help.c:2157 sql_help.c:2397 sql_help.c:2428
+#: sql_help.c:2959 sql_help.c:4037 sql_help.c:4132 sql_help.c:4245
+#: sql_help.c:4249 sql_help.c:4253 sql_help.c:4256 sql_help.c:4484
+#: sql_help.c:4488 sql_help.c:4492 sql_help.c:4495 sql_help.c:4691
+#: sql_help.c:4695 sql_help.c:4699 sql_help.c:4702
+msgid "function_name"
+msgstr "nome_funzione"
+
+#: sql_help.c:341 sql_help.c:766 sql_help.c:1792 sql_help.c:2421
+msgid "operator_name"
+msgstr "nome_operatore"
+
+#: sql_help.c:342 sql_help.c:702 sql_help.c:706 sql_help.c:710 sql_help.c:1793
+#: sql_help.c:2398 sql_help.c:3313
+msgid "left_type"
+msgstr "tipo_sx"
+
+#: sql_help.c:343 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1794
+#: sql_help.c:2399 sql_help.c:3314
+msgid "right_type"
+msgstr "tipo_dx"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:729 sql_help.c:732 sql_help.c:735
+#: sql_help.c:764 sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790
+#: sql_help.c:1355 sql_help.c:1796 sql_help.c:1798 sql_help.c:2418
+#: sql_help.c:2439 sql_help.c:2794 sql_help.c:3323 sql_help.c:3332
+msgid "index_method"
+msgstr "metodo_indice"
+
+#: sql_help.c:349 sql_help.c:1802 sql_help.c:4139
+msgid "procedure_name"
+msgstr "nome_procedura"
+
+#: sql_help.c:353 sql_help.c:1808 sql_help.c:3704 sql_help.c:4145
+msgid "routine_name"
+msgstr "nome_routine"
+
+#: sql_help.c:365 sql_help.c:1325 sql_help.c:1825 sql_help.c:2284
+#: sql_help.c:2478 sql_help.c:2752 sql_help.c:2926 sql_help.c:3494
+#: sql_help.c:3718 sql_help.c:4051
+msgid "type_name"
+msgstr "nome_di_tipo"
+
+#: sql_help.c:366 sql_help.c:1826 sql_help.c:2283 sql_help.c:2477
+#: sql_help.c:2927 sql_help.c:3153 sql_help.c:3495 sql_help.c:3710
+#: sql_help.c:4043
+msgid "lang_name"
+msgstr "nome_linguaggio"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "e signature_aggregato è:"
+
+#: sql_help.c:392 sql_help.c:1920 sql_help.c:2184
+msgid "handler_function"
+msgstr "funzione_handler"
+
+#: sql_help.c:393 sql_help.c:2185
+msgid "validator_function"
+msgstr "funzione_validazione"
+
+#: sql_help.c:442 sql_help.c:519 sql_help.c:658 sql_help.c:840 sql_help.c:978
+#: sql_help.c:1258 sql_help.c:1346 sql_help.c:1347 sql_help.c:1363
+#: sql_help.c:1364 sql_help.c:1515 sql_help.c:2785 sql_help.c:2786
+#: sql_help.c:2802 sql_help.c:2803
+msgid "action"
+msgstr "azione"
+
+#: sql_help.c:444 sql_help.c:451 sql_help.c:455 sql_help.c:456 sql_help.c:459
+#: sql_help.c:461 sql_help.c:462 sql_help.c:463 sql_help.c:465 sql_help.c:468
+#: sql_help.c:470 sql_help.c:471 sql_help.c:662 sql_help.c:672 sql_help.c:674
+#: sql_help.c:677 sql_help.c:679 sql_help.c:1054 sql_help.c:1260
+#: sql_help.c:1278 sql_help.c:1282 sql_help.c:1283 sql_help.c:1287
+#: sql_help.c:1289 sql_help.c:1290 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1296 sql_help.c:1297 sql_help.c:1299 sql_help.c:1302
+#: sql_help.c:1304 sql_help.c:1351 sql_help.c:1353 sql_help.c:1360
+#: sql_help.c:1369 sql_help.c:1374 sql_help.c:1621 sql_help.c:1624
+#: sql_help.c:1658 sql_help.c:1773 sql_help.c:1886 sql_help.c:1891
+#: sql_help.c:1905 sql_help.c:1906 sql_help.c:1907 sql_help.c:2225
+#: sql_help.c:2238 sql_help.c:2281 sql_help.c:2342 sql_help.c:2346
+#: sql_help.c:2378 sql_help.c:2604 sql_help.c:2632 sql_help.c:2633
+#: sql_help.c:2736 sql_help.c:2744 sql_help.c:2753 sql_help.c:2756
+#: sql_help.c:2765 sql_help.c:2769 sql_help.c:2790 sql_help.c:2792
+#: sql_help.c:2799 sql_help.c:2815 sql_help.c:2820 sql_help.c:2837
+#: sql_help.c:2962 sql_help.c:3098 sql_help.c:3689 sql_help.c:3690
+#: sql_help.c:3770 sql_help.c:3785 sql_help.c:3787 sql_help.c:3789
+#: sql_help.c:4022 sql_help.c:4023 sql_help.c:4125 sql_help.c:4276
+#: sql_help.c:4515 sql_help.c:4557 sql_help.c:4559 sql_help.c:4561
+#: sql_help.c:4594 sql_help.c:4722
+msgid "column_name"
+msgstr "nome_colonna"
+
+#: sql_help.c:445 sql_help.c:663 sql_help.c:1261
+msgid "new_column_name"
+msgstr "nuovo_nome_colonna"
+
+#: sql_help.c:450 sql_help.c:540 sql_help.c:671 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1277 sql_help.c:1531
+msgid "where action is one of:"
+msgstr "dove azione è una di:"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1046 sql_help.c:1279
+#: sql_help.c:1284 sql_help.c:1533 sql_help.c:1537 sql_help.c:2137
+#: sql_help.c:2226 sql_help.c:2417 sql_help.c:2597 sql_help.c:2737
+#: sql_help.c:3007 sql_help.c:3872
+msgid "data_type"
+msgstr "tipo_di_dato"
+
+#: sql_help.c:453 sql_help.c:458 sql_help.c:1280 sql_help.c:1285
+#: sql_help.c:1534 sql_help.c:1538 sql_help.c:2138 sql_help.c:2229
+#: sql_help.c:2344 sql_help.c:2738 sql_help.c:2746 sql_help.c:2758
+#: sql_help.c:2771 sql_help.c:3008 sql_help.c:3014 sql_help.c:3780
+msgid "collation"
+msgstr "ordinamento"
+
+#: sql_help.c:454 sql_help.c:1281 sql_help.c:2230 sql_help.c:2239
+#: sql_help.c:2739 sql_help.c:2754 sql_help.c:2766
+msgid "column_constraint"
+msgstr "vincolo_di_colonna"
+
+#: sql_help.c:464 sql_help.c:602 sql_help.c:673 sql_help.c:1298
+msgid "integer"
+msgstr "intero"
+
+#: sql_help.c:466 sql_help.c:469 sql_help.c:675 sql_help.c:678 sql_help.c:1300
+#: sql_help.c:1303
+msgid "attribute_option"
+msgstr "opzione_attributo"
+
+#: sql_help.c:474 sql_help.c:1305 sql_help.c:2231 sql_help.c:2240
+#: sql_help.c:2740 sql_help.c:2755 sql_help.c:2767
+msgid "table_constraint"
+msgstr "vincoli_di_tabella"
+
+#: sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:480 sql_help.c:1310
+#: sql_help.c:1311 sql_help.c:1312 sql_help.c:1313 sql_help.c:1827
+msgid "trigger_name"
+msgstr "nome_trigger"
+
+#: sql_help.c:481 sql_help.c:482 sql_help.c:1323 sql_help.c:1324
+#: sql_help.c:2232 sql_help.c:2237 sql_help.c:2743 sql_help.c:2764
+msgid "parent_table"
+msgstr "tabella_padre"
+
+#: sql_help.c:539 sql_help.c:594 sql_help.c:660 sql_help.c:860 sql_help.c:998
+#: sql_help.c:1494 sql_help.c:2169
+msgid "extension_name"
+msgstr "nome_estensione"
+
+#: sql_help.c:541 sql_help.c:1000 sql_help.c:2285
+msgid "execution_cost"
+msgstr "costo_di_esecuzione"
+
+#: sql_help.c:542 sql_help.c:1001 sql_help.c:2286
+msgid "result_rows"
+msgstr "righe_risultato"
+
+#: sql_help.c:563 sql_help.c:565 sql_help.c:924 sql_help.c:932 sql_help.c:936
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1572 sql_help.c:1580
+#: sql_help.c:1584 sql_help.c:1587 sql_help.c:1590 sql_help.c:2575
+#: sql_help.c:2577 sql_help.c:2580 sql_help.c:2581 sql_help.c:3688
+#: sql_help.c:3692 sql_help.c:3695 sql_help.c:3697 sql_help.c:3699
+#: sql_help.c:3701 sql_help.c:3703 sql_help.c:3709 sql_help.c:3711
+#: sql_help.c:3713 sql_help.c:3715 sql_help.c:3717 sql_help.c:3719
+msgid "role_specification"
+msgstr "specifica_ruolo"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:1603 sql_help.c:2112
+#: sql_help.c:2583 sql_help.c:3083 sql_help.c:3528 sql_help.c:4361
+msgid "user_name"
+msgstr "nome_utente"
+
+#: sql_help.c:567 sql_help.c:944 sql_help.c:1592 sql_help.c:2582
+#: sql_help.c:3720
+msgid "where role_specification can be:"
+msgstr "dove specifica_ruolo può essere:"
+
+#: sql_help.c:569
+msgid "group_name"
+msgstr "nome_gruppo"
+
+#: sql_help.c:590 sql_help.c:1372 sql_help.c:2117 sql_help.c:2349
+#: sql_help.c:2381 sql_help.c:2750 sql_help.c:2762 sql_help.c:2775
+#: sql_help.c:2818 sql_help.c:2840 sql_help.c:2852 sql_help.c:3716
+#: sql_help.c:4049
+msgid "tablespace_name"
+msgstr "nome_tablespace"
+
+#: sql_help.c:592 sql_help.c:680 sql_help.c:1318 sql_help.c:1327
+#: sql_help.c:1367 sql_help.c:1707
+msgid "index_name"
+msgstr "nome_indice"
+
+#: sql_help.c:596 sql_help.c:599 sql_help.c:681 sql_help.c:683 sql_help.c:1320
+#: sql_help.c:1322 sql_help.c:1370 sql_help.c:2347 sql_help.c:2379
+#: sql_help.c:2748 sql_help.c:2760 sql_help.c:2773 sql_help.c:2816
+#: sql_help.c:2838
+msgid "storage_parameter"
+msgstr "parametro_di_memorizzazione"
+
+#: sql_help.c:601
+msgid "column_number"
+msgstr "numero_colonna"
+
+#: sql_help.c:625 sql_help.c:1790 sql_help.c:4136
+msgid "large_object_oid"
+msgstr "oid_large_object"
+
+#: sql_help.c:712 sql_help.c:2402
+msgid "res_proc"
+msgstr "res_proc"
+
+#: sql_help.c:713 sql_help.c:2403
+msgid "join_proc"
+msgstr "proc_join"
+
+#: sql_help.c:765 sql_help.c:777 sql_help.c:2420
+msgid "strategy_number"
+msgstr "strategia_num"
+
+#: sql_help.c:767 sql_help.c:768 sql_help.c:771 sql_help.c:772 sql_help.c:778
+#: sql_help.c:779 sql_help.c:781 sql_help.c:782 sql_help.c:2422 sql_help.c:2423
+#: sql_help.c:2426 sql_help.c:2427
+msgid "op_type"
+msgstr "tipo_op"
+
+#: sql_help.c:769 sql_help.c:2424
+msgid "sort_family_name"
+msgstr "nome_famiglia_sort"
+
+#: sql_help.c:770 sql_help.c:780 sql_help.c:2425
+msgid "support_number"
+msgstr "num_supporto"
+
+#: sql_help.c:774 sql_help.c:2056 sql_help.c:2429 sql_help.c:2929
+#: sql_help.c:2931
+msgid "argument_type"
+msgstr "tipo_argomento"
+
+#: sql_help.c:805 sql_help.c:808 sql_help.c:879 sql_help.c:881 sql_help.c:883
+#: sql_help.c:1014 sql_help.c:1053 sql_help.c:1490 sql_help.c:1493
+#: sql_help.c:1657 sql_help.c:1706 sql_help.c:1775 sql_help.c:1800
+#: sql_help.c:1813 sql_help.c:1828 sql_help.c:1885 sql_help.c:1890
+#: sql_help.c:2224 sql_help.c:2236 sql_help.c:2340 sql_help.c:2377
+#: sql_help.c:2453 sql_help.c:2496 sql_help.c:2552 sql_help.c:2603
+#: sql_help.c:2634 sql_help.c:2735 sql_help.c:2751 sql_help.c:2763
+#: sql_help.c:2836 sql_help.c:2955 sql_help.c:3132 sql_help.c:3349
+#: sql_help.c:3398 sql_help.c:3504 sql_help.c:3686 sql_help.c:3691
+#: sql_help.c:3736 sql_help.c:3768 sql_help.c:4019 sql_help.c:4024
+#: sql_help.c:4124 sql_help.c:4231 sql_help.c:4233 sql_help.c:4282
+#: sql_help.c:4321 sql_help.c:4470 sql_help.c:4472 sql_help.c:4521
+#: sql_help.c:4555 sql_help.c:4593 sql_help.c:4677 sql_help.c:4679
+#: sql_help.c:4728
+msgid "table_name"
+msgstr "nome_tabella"
+
+#: sql_help.c:810 sql_help.c:2455
+msgid "using_expression"
+msgstr "espressione_using"
+
+#: sql_help.c:811 sql_help.c:2456
+msgid "check_expression"
+msgstr "espressione_check"
+
+#: sql_help.c:885 sql_help.c:2497
+msgid "publication_parameter"
+msgstr "parametro_pubblicazione"
+
+#: sql_help.c:928 sql_help.c:1576 sql_help.c:2319 sql_help.c:2529
+#: sql_help.c:3066
+msgid "password"
+msgstr "password"
+
+#: sql_help.c:929 sql_help.c:1577 sql_help.c:2320 sql_help.c:2530
+#: sql_help.c:3067
+msgid "timestamp"
+msgstr "timestamp"
+
+#: sql_help.c:933 sql_help.c:937 sql_help.c:940 sql_help.c:943 sql_help.c:1581
+#: sql_help.c:1585 sql_help.c:1588 sql_help.c:1591 sql_help.c:3696
+#: sql_help.c:4029
+msgid "database_name"
+msgstr "nome_database"
+
+#: sql_help.c:1047 sql_help.c:2598
+msgid "increment"
+msgstr "incremento"
+
+#: sql_help.c:1048 sql_help.c:2599
+msgid "minvalue"
+msgstr "valoremin"
+
+#: sql_help.c:1049 sql_help.c:2600
+msgid "maxvalue"
+msgstr "valoremax"
+
+#: sql_help.c:1050 sql_help.c:2601 sql_help.c:4229 sql_help.c:4319
+#: sql_help.c:4468 sql_help.c:4610 sql_help.c:4675
+msgid "start"
+msgstr "inizio"
+
+#: sql_help.c:1051 sql_help.c:1295
+msgid "restart"
+msgstr "riavvio"
+
+#: sql_help.c:1052 sql_help.c:2602
+msgid "cache"
+msgstr "cache"
+
+#: sql_help.c:1109 sql_help.c:2646
+msgid "conninfo"
+msgstr "conninfo"
+
+#: sql_help.c:1111 sql_help.c:2647
+msgid "publication_name"
+msgstr "nome_pubblicazione"
+
+#: sql_help.c:1112
+msgid "set_publication_option"
+msgstr "opzione_set_publication"
+
+#: sql_help.c:1115
+msgid "refresh_option"
+msgstr "opzione_refresh"
+
+#: sql_help.c:1120 sql_help.c:2648
+msgid "subscription_parameter"
+msgstr "parametro_sottoscrizione"
+
+#: sql_help.c:1273 sql_help.c:1276
+msgid "partition_name"
+msgstr "nome_partizione"
+
+#: sql_help.c:1274 sql_help.c:2241 sql_help.c:2768
+msgid "partition_bound_spec"
+msgstr "specifica_margine_partizione"
+
+#: sql_help.c:1292 sql_help.c:1341 sql_help.c:2780
+msgid "sequence_options"
+msgstr "opzioni_sequenza"
+
+#: sql_help.c:1294
+msgid "sequence_option"
+msgstr "opzione_sequenza"
+
+#: sql_help.c:1306
+msgid "table_constraint_using_index"
+msgstr "vincoli_di_tabella_con_indice"
+
+#: sql_help.c:1314 sql_help.c:1315 sql_help.c:1316 sql_help.c:1317
+msgid "rewrite_rule_name"
+msgstr "nome_regola_di_riscrittura"
+
+#: sql_help.c:1328 sql_help.c:2805
+msgid "and partition_bound_spec is:"
+msgstr "e specifica_margine_partizione è:"
+
+#: sql_help.c:1329 sql_help.c:1331 sql_help.c:1333 sql_help.c:1335
+#: sql_help.c:1336 sql_help.c:2806 sql_help.c:2808 sql_help.c:2810
+#: sql_help.c:2812 sql_help.c:2813
+msgid "numeric_literal"
+msgstr "letterale_numerico"
+
+#: sql_help.c:1330 sql_help.c:1332 sql_help.c:1334 sql_help.c:2807
+#: sql_help.c:2809 sql_help.c:2811
+msgid "string_literal"
+msgstr "letterale_stringa"
+
+#: sql_help.c:1337
+msgid "and column_constraint is:"
+msgstr "e vincolo_di_colonna è:"
+
+#: sql_help.c:1340 sql_help.c:2248 sql_help.c:2279 sql_help.c:2476
+#: sql_help.c:2779
+msgid "default_expr"
+msgstr "expr_default"
+
+#: sql_help.c:1342 sql_help.c:1343 sql_help.c:1352 sql_help.c:1354
+#: sql_help.c:1358 sql_help.c:2781 sql_help.c:2782 sql_help.c:2791
+#: sql_help.c:2793 sql_help.c:2797
+msgid "index_parameters"
+msgstr "parametri_di_indice"
+
+#: sql_help.c:1344 sql_help.c:1361 sql_help.c:2783 sql_help.c:2800
+msgid "reftable"
+msgstr "tabella_ref"
+
+#: sql_help.c:1345 sql_help.c:1362 sql_help.c:2784 sql_help.c:2801
+msgid "refcolumn"
+msgstr "colonna_ref"
+
+#: sql_help.c:1348 sql_help.c:2249 sql_help.c:2787
+msgid "and table_constraint is:"
+msgstr "e vincolo_di_tabella è:"
+
+#: sql_help.c:1356 sql_help.c:2795
+msgid "exclude_element"
+msgstr "elemento_di_esclusione"
+
+#: sql_help.c:1357 sql_help.c:2796 sql_help.c:4227 sql_help.c:4317
+#: sql_help.c:4466 sql_help.c:4608 sql_help.c:4673
+msgid "operator"
+msgstr "operatore"
+
+#: sql_help.c:1359 sql_help.c:2350 sql_help.c:2798
+msgid "predicate"
+msgstr "predicato"
+
+#: sql_help.c:1365
+msgid "and table_constraint_using_index is:"
+msgstr "e vincolo_di_tabella_con_indice è:"
+
+#: sql_help.c:1368 sql_help.c:2814
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "parametri_di_indice nei vincoli UNIQUE, PRIMARY KEY e EXCLUDE sono:"
+
+#: sql_help.c:1373 sql_help.c:2819
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "elemento_di_esclusione in un vincolo EXCLUDE è:"
+
+#: sql_help.c:1376 sql_help.c:2345 sql_help.c:2747 sql_help.c:2759
+#: sql_help.c:2772 sql_help.c:2822 sql_help.c:3781
+msgid "opclass"
+msgstr "classe_op"
+
+#: sql_help.c:1392 sql_help.c:1395 sql_help.c:2855
+msgid "tablespace_option"
+msgstr "opzione_tablespace"
+
+#: sql_help.c:1416 sql_help.c:1419 sql_help.c:1425 sql_help.c:1429
+msgid "token_type"
+msgstr "tipo_di_token"
+
+#: sql_help.c:1417 sql_help.c:1420
+msgid "dictionary_name"
+msgstr "nome_dizionario"
+
+#: sql_help.c:1422 sql_help.c:1426
+msgid "old_dictionary"
+msgstr "vecchio_dizionario"
+
+#: sql_help.c:1423 sql_help.c:1427
+msgid "new_dictionary"
+msgstr "nuovo_dizionario"
+
+#: sql_help.c:1519 sql_help.c:1532 sql_help.c:1535 sql_help.c:1536
+#: sql_help.c:3006
+msgid "attribute_name"
+msgstr "nome_attributo"
+
+#: sql_help.c:1520
+msgid "new_attribute_name"
+msgstr "nuovo_nome_attributo"
+
+#: sql_help.c:1526 sql_help.c:1530
+msgid "new_enum_value"
+msgstr "nuovo_valore_enum"
+
+#: sql_help.c:1527
+msgid "neighbor_enum_value"
+msgstr "valore_enum_vicino"
+
+#: sql_help.c:1529
+msgid "existing_enum_value"
+msgstr "valore_enum_esistente"
+
+#: sql_help.c:1604 sql_help.c:2233 sql_help.c:2242 sql_help.c:2614
+#: sql_help.c:3084 sql_help.c:3529 sql_help.c:3702 sql_help.c:3737
+#: sql_help.c:4035
+msgid "server_name"
+msgstr "nome_server"
+
+#: sql_help.c:1632 sql_help.c:1635 sql_help.c:3099
+msgid "view_option_name"
+msgstr "nome_opzione_vista"
+
+#: sql_help.c:1633 sql_help.c:3100
+msgid "view_option_value"
+msgstr "valore_opzione_vista"
+
+#: sql_help.c:1653 sql_help.c:1654 sql_help.c:4589 sql_help.c:4590
+msgid "table_and_columns"
+msgstr "tabelle_e_colonne"
+
+#: sql_help.c:1655 sql_help.c:1896 sql_help.c:3575 sql_help.c:4591
+msgid "where option can be one of:"
+msgstr "dove opzione può essere una di:"
+
+#: sql_help.c:1656 sql_help.c:4592
+msgid "and table_and_columns is:"
+msgstr "e tabelle_e_colonne è:"
+
+#: sql_help.c:1672 sql_help.c:4377 sql_help.c:4379 sql_help.c:4403
+msgid "transaction_mode"
+msgstr "modalità_transazione"
+
+#: sql_help.c:1673 sql_help.c:4380 sql_help.c:4404
+msgid "where transaction_mode is one of:"
+msgstr "dove modalità_transazione è una di:"
+
+#: sql_help.c:1682 sql_help.c:4237 sql_help.c:4246 sql_help.c:4250
+#: sql_help.c:4254 sql_help.c:4257 sql_help.c:4476 sql_help.c:4485
+#: sql_help.c:4489 sql_help.c:4493 sql_help.c:4496 sql_help.c:4683
+#: sql_help.c:4692 sql_help.c:4696 sql_help.c:4700 sql_help.c:4703
+msgid "argument"
+msgstr "argomento"
+
+#: sql_help.c:1772
+msgid "relation_name"
+msgstr "nome_relazione"
+
+#: sql_help.c:1777 sql_help.c:3698 sql_help.c:4031
+msgid "domain_name"
+msgstr "nome_dominio"
+
+#: sql_help.c:1799
+msgid "policy_name"
+msgstr "nome_regola"
+
+#: sql_help.c:1812
+msgid "rule_name"
+msgstr "nome_ruolo"
+
+#: sql_help.c:1831
+msgid "text"
+msgstr "testo"
+
+#: sql_help.c:1856 sql_help.c:3881 sql_help.c:4069
+msgid "transaction_id"
+msgstr "id_transazione"
+
+#: sql_help.c:1887 sql_help.c:1893 sql_help.c:3807
+msgid "filename"
+msgstr "nome_file"
+
+#: sql_help.c:1888 sql_help.c:1894 sql_help.c:2554 sql_help.c:2555
+#: sql_help.c:2556
+msgid "command"
+msgstr "comando"
+
+#: sql_help.c:1892 sql_help.c:2382 sql_help.c:2841 sql_help.c:3101
+#: sql_help.c:3119 sql_help.c:3772
+msgid "query"
+msgstr "query"
+
+#: sql_help.c:1897
+msgid "format_name"
+msgstr "nome_formato"
+
+#: sql_help.c:1898 sql_help.c:1899 sql_help.c:1902 sql_help.c:3576
+#: sql_help.c:3577 sql_help.c:3578 sql_help.c:3579 sql_help.c:3580
+#: sql_help.c:3581
+msgid "boolean"
+msgstr "booleano"
+
+#: sql_help.c:1900
+msgid "delimiter_character"
+msgstr "carattere_delimitatore"
+
+#: sql_help.c:1901
+msgid "null_string"
+msgstr "stringa_nulla"
+
+#: sql_help.c:1903
+msgid "quote_character"
+msgstr "carattere_virgolette"
+
+#: sql_help.c:1904
+msgid "escape_character"
+msgstr "carattere_di_escape"
+
+#: sql_help.c:1908
+msgid "encoding_name"
+msgstr "nome_codifica"
+
+#: sql_help.c:1919
+msgid "access_method_type"
+msgstr "tipo_metodo_accesso"
+
+#: sql_help.c:1990 sql_help.c:2009 sql_help.c:2012
+msgid "arg_data_type"
+msgstr "topo_dato_argomento"
+
+#: sql_help.c:1991 sql_help.c:2013 sql_help.c:2021
+msgid "sfunc"
+msgstr "sfunz"
+
+#: sql_help.c:1992 sql_help.c:2014 sql_help.c:2022
+msgid "state_data_type"
+msgstr "tipo_dato_stato"
+
+#: sql_help.c:1993 sql_help.c:2015 sql_help.c:2023
+msgid "state_data_size"
+msgstr "dimensione_dato_stato"
+
+#: sql_help.c:1994 sql_help.c:2016 sql_help.c:2024
+msgid "ffunc"
+msgstr "ffunz"
+
+#: sql_help.c:1995 sql_help.c:2025
+msgid "combinefunc"
+msgstr "funz_combine"
+
+#: sql_help.c:1996 sql_help.c:2026
+msgid "serialfunc"
+msgstr "funz_serial"
+
+#: sql_help.c:1997 sql_help.c:2027
+msgid "deserialfunc"
+msgstr "funz_deserial"
+
+#: sql_help.c:1998 sql_help.c:2017 sql_help.c:2028
+msgid "initial_condition"
+msgstr "condizione_iniziale"
+
+#: sql_help.c:1999 sql_help.c:2029
+msgid "msfunc"
+msgstr "msfunz"
+
+#: sql_help.c:2000 sql_help.c:2030
+msgid "minvfunc"
+msgstr "minvfunz"
+
+#: sql_help.c:2001 sql_help.c:2031
+msgid "mstate_data_type"
+msgstr "tipo_dato_mstato"
+
+#: sql_help.c:2002 sql_help.c:2032
+msgid "mstate_data_size"
+msgstr "tipo_dato_mstato"
+
+#: sql_help.c:2003 sql_help.c:2033
+msgid "mffunc"
+msgstr "mffunz"
+
+#: sql_help.c:2004 sql_help.c:2034
+msgid "minitial_condition"
+msgstr "condizione_minima"
+
+#: sql_help.c:2005 sql_help.c:2035
+msgid "sort_operator"
+msgstr "operatore_di_ordinamento"
+
+#: sql_help.c:2018
+msgid "or the old syntax"
+msgstr "o la vecchia sintassi"
+
+#: sql_help.c:2020
+msgid "base_type"
+msgstr "tipo_base"
+
+#: sql_help.c:2076
+msgid "locale"
+msgstr "locale"
+
+#: sql_help.c:2077 sql_help.c:2115
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2078 sql_help.c:2116
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2079 sql_help.c:4122
+msgid "provider"
+msgstr "provider"
+
+#: sql_help.c:2080 sql_help.c:2171
+msgid "version"
+msgstr "versione"
+
+#: sql_help.c:2082
+msgid "existing_collation"
+msgstr "ordinamento_esistente"
+
+#: sql_help.c:2092
+msgid "source_encoding"
+msgstr "codifica_origine"
+
+#: sql_help.c:2093
+msgid "dest_encoding"
+msgstr "codifica_destinazione"
+
+#: sql_help.c:2113 sql_help.c:2881
+msgid "template"
+msgstr "template"
+
+#: sql_help.c:2114
+msgid "encoding"
+msgstr "codifica"
+
+#: sql_help.c:2140
+msgid "constraint"
+msgstr "vincolo"
+
+#: sql_help.c:2141
+msgid "where constraint is:"
+msgstr "dove vincolo di è:"
+
+#: sql_help.c:2155 sql_help.c:2551 sql_help.c:2954
+msgid "event"
+msgstr "evento"
+
+#: sql_help.c:2156
+msgid "filter_variable"
+msgstr "valiabile_filtro"
+
+#: sql_help.c:2172
+msgid "old_version"
+msgstr "vecchia_versione"
+
+#: sql_help.c:2245 sql_help.c:2776
+msgid "where column_constraint is:"
+msgstr "dove vincolo_di_colonna è:"
+
+#: sql_help.c:2280
+msgid "rettype"
+msgstr "tipo_ritorno"
+
+#: sql_help.c:2282
+msgid "column_type"
+msgstr "tipo_colonna"
+
+#: sql_help.c:2290 sql_help.c:2482
+msgid "definition"
+msgstr "definizione"
+
+#: sql_help.c:2291 sql_help.c:2483
+msgid "obj_file"
+msgstr "file_obj"
+
+#: sql_help.c:2292 sql_help.c:2484
+msgid "link_symbol"
+msgstr "simbolo_link"
+
+#: sql_help.c:2326 sql_help.c:2536 sql_help.c:3073
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2341
+msgid "method"
+msgstr "metodo"
+
+#: sql_help.c:2362
+msgid "call_handler"
+msgstr "handler_chiamata"
+
+#: sql_help.c:2363
+msgid "inline_handler"
+msgstr "handler_inline"
+
+#: sql_help.c:2364
+msgid "valfunction"
+msgstr "funzione_valid"
+
+#: sql_help.c:2400
+msgid "com_op"
+msgstr "com_op"
+
+#: sql_help.c:2401
+msgid "neg_op"
+msgstr "neg_op"
+
+#: sql_help.c:2419
+msgid "family_name"
+msgstr "nome_famiglia"
+
+#: sql_help.c:2430
+msgid "storage_type"
+msgstr "tipo_memorizzazione"
+
+#: sql_help.c:2553 sql_help.c:2958 sql_help.c:3135 sql_help.c:3791
+#: sql_help.c:4220 sql_help.c:4222 sql_help.c:4310 sql_help.c:4312
+#: sql_help.c:4459 sql_help.c:4461 sql_help.c:4564 sql_help.c:4666
+#: sql_help.c:4668
+msgid "condition"
+msgstr "condizione"
+
+#: sql_help.c:2557 sql_help.c:2961
+msgid "where event can be one of:"
+msgstr "dove evento può essere uno di:"
+
+#: sql_help.c:2576 sql_help.c:2578
+msgid "schema_element"
+msgstr "elemento_di_schema"
+
+#: sql_help.c:2615
+msgid "server_type"
+msgstr "tipo_di_server"
+
+#: sql_help.c:2616
+msgid "server_version"
+msgstr "versione_server"
+
+#: sql_help.c:2617 sql_help.c:3700 sql_help.c:4033
+msgid "fdw_name"
+msgstr "nome_fdw"
+
+#: sql_help.c:2630
+msgid "statistics_name"
+msgstr "nome_statistica"
+
+#: sql_help.c:2631
+msgid "statistics_kind"
+msgstr "tipo_statistica"
+
+#: sql_help.c:2645
+msgid "subscription_name"
+msgstr "nome_sottoscrizione"
+
+#: sql_help.c:2741
+msgid "source_table"
+msgstr "tabella_origine"
+
+#: sql_help.c:2742
+msgid "like_option"
+msgstr "opzioni_di_like"
+
+#: sql_help.c:2804
+msgid "and like_option is:"
+msgstr "e opzione_like è:"
+
+#: sql_help.c:2854
+msgid "directory"
+msgstr "directory"
+
+#: sql_help.c:2868
+msgid "parser_name"
+msgstr "nome_parser"
+
+#: sql_help.c:2869
+msgid "source_config"
+msgstr "config_origine"
+
+#: sql_help.c:2898
+msgid "start_function"
+msgstr "funzione_inizio"
+
+#: sql_help.c:2899
+msgid "gettoken_function"
+msgstr "funzione_gettoken"
+
+#: sql_help.c:2900
+msgid "end_function"
+msgstr "funzione_fine"
+
+#: sql_help.c:2901
+msgid "lextypes_function"
+msgstr "funzione_lextypes"
+
+#: sql_help.c:2902
+msgid "headline_function"
+msgstr "funzione_headline"
+
+#: sql_help.c:2914
+msgid "init_function"
+msgstr "funzione_init"
+
+#: sql_help.c:2915
+msgid "lexize_function"
+msgstr "funzione_lexize"
+
+#: sql_help.c:2928
+msgid "from_sql_function_name"
+msgstr "nome_funzione_from_sql"
+
+#: sql_help.c:2930
+msgid "to_sql_function_name"
+msgstr "nome_funzione_to_sql"
+
+#: sql_help.c:2956
+msgid "referenced_table_name"
+msgstr "nome_tabella_referenziata"
+
+#: sql_help.c:2957
+msgid "transition_relation_name"
+msgstr "nome_tabella_transizione"
+
+#: sql_help.c:2960
+msgid "arguments"
+msgstr "argomenti"
+
+#: sql_help.c:3010 sql_help.c:4155
+msgid "label"
+msgstr "etichetta"
+
+#: sql_help.c:3012
+msgid "subtype"
+msgstr "sottotipo"
+
+#: sql_help.c:3013
+msgid "subtype_operator_class"
+msgstr "classe_operatore_sottotipo"
+
+#: sql_help.c:3015
+msgid "canonical_function"
+msgstr "funzione_canonica"
+
+#: sql_help.c:3016
+msgid "subtype_diff_function"
+msgstr "funzione_diff_sottotipo"
+
+#: sql_help.c:3018
+msgid "input_function"
+msgstr "funzione_input"
+
+#: sql_help.c:3019
+msgid "output_function"
+msgstr "funzione_output"
+
+#: sql_help.c:3020
+msgid "receive_function"
+msgstr "funzione_receive"
+
+#: sql_help.c:3021
+msgid "send_function"
+msgstr "funzione_send"
+
+#: sql_help.c:3022
+msgid "type_modifier_input_function"
+msgstr "funzione_input_modificatore_tipo"
+
+#: sql_help.c:3023
+msgid "type_modifier_output_function"
+msgstr "funzione_output_modificatore_tipo"
+
+#: sql_help.c:3024
+msgid "analyze_function"
+msgstr "funzione_analyze"
+
+#: sql_help.c:3025
+msgid "internallength"
+msgstr "lunghezza_interna"
+
+#: sql_help.c:3026
+msgid "alignment"
+msgstr "allineamento"
+
+#: sql_help.c:3027
+msgid "storage"
+msgstr "memorizzazione"
+
+#: sql_help.c:3028
+msgid "like_type"
+msgstr "tipo_like"
+
+#: sql_help.c:3029
+msgid "category"
+msgstr "categoria"
+
+#: sql_help.c:3030
+msgid "preferred"
+msgstr "preferito"
+
+#: sql_help.c:3031
+msgid "default"
+msgstr "predefinito"
+
+#: sql_help.c:3032
+msgid "element"
+msgstr "elemento"
+
+#: sql_help.c:3033
+msgid "delimiter"
+msgstr "delimitatore"
+
+#: sql_help.c:3034
+msgid "collatable"
+msgstr "ordinabile"
+
+#: sql_help.c:3131 sql_help.c:3767 sql_help.c:4215 sql_help.c:4304
+#: sql_help.c:4454 sql_help.c:4554 sql_help.c:4661
+msgid "with_query"
+msgstr "query_with"
+
+#: sql_help.c:3133 sql_help.c:3769 sql_help.c:4234 sql_help.c:4240
+#: sql_help.c:4243 sql_help.c:4247 sql_help.c:4251 sql_help.c:4259
+#: sql_help.c:4473 sql_help.c:4479 sql_help.c:4482 sql_help.c:4486
+#: sql_help.c:4490 sql_help.c:4498 sql_help.c:4556 sql_help.c:4680
+#: sql_help.c:4686 sql_help.c:4689 sql_help.c:4693 sql_help.c:4697
+#: sql_help.c:4705
+msgid "alias"
+msgstr "alias"
+
+#: sql_help.c:3134
+msgid "using_list"
+msgstr "lista_using"
+
+#: sql_help.c:3136 sql_help.c:3607 sql_help.c:3848 sql_help.c:4565
+msgid "cursor_name"
+msgstr "nome_cursore"
+
+#: sql_help.c:3137 sql_help.c:3775 sql_help.c:4566
+msgid "output_expression"
+msgstr "espressione_output"
+
+#: sql_help.c:3138 sql_help.c:3776 sql_help.c:4218 sql_help.c:4307
+#: sql_help.c:4457 sql_help.c:4567 sql_help.c:4664
+msgid "output_name"
+msgstr "nome_output"
+
+#: sql_help.c:3154
+msgid "code"
+msgstr "codice"
+
+#: sql_help.c:3553
+msgid "parameter"
+msgstr "parametro"
+
+#: sql_help.c:3573 sql_help.c:3574 sql_help.c:3873
+msgid "statement"
+msgstr "istruzione"
+
+#: sql_help.c:3606 sql_help.c:3847
+msgid "direction"
+msgstr "direzione"
+
+#: sql_help.c:3608 sql_help.c:3849
+msgid "where direction can be empty or one of:"
+msgstr "dove direzione può essere vuota o una di:"
+
+#: sql_help.c:3609 sql_help.c:3610 sql_help.c:3611 sql_help.c:3612
+#: sql_help.c:3613 sql_help.c:3850 sql_help.c:3851 sql_help.c:3852
+#: sql_help.c:3853 sql_help.c:3854 sql_help.c:4228 sql_help.c:4230
+#: sql_help.c:4318 sql_help.c:4320 sql_help.c:4467 sql_help.c:4469
+#: sql_help.c:4609 sql_help.c:4611 sql_help.c:4674 sql_help.c:4676
+msgid "count"
+msgstr "conteggio"
+
+#: sql_help.c:3693 sql_help.c:4026
+msgid "sequence_name"
+msgstr "nome_sequenza"
+
+#: sql_help.c:3706 sql_help.c:4039
+msgid "arg_name"
+msgstr "nome_arg"
+
+#: sql_help.c:3707 sql_help.c:4040
+msgid "arg_type"
+msgstr "tipo_arg"
+
+#: sql_help.c:3712 sql_help.c:4045
+msgid "loid"
+msgstr "loid"
+
+#: sql_help.c:3735
+msgid "remote_schema"
+msgstr "schema_remoto"
+
+#: sql_help.c:3738
+msgid "local_schema"
+msgstr "schema_locale"
+
+#: sql_help.c:3773
+msgid "conflict_target"
+msgstr "target_conflitto"
+
+#: sql_help.c:3774
+msgid "conflict_action"
+msgstr "azione_conflitto"
+
+#: sql_help.c:3777
+msgid "where conflict_target can be one of:"
+msgstr "dove target_conflitto può essere uno di:"
+
+#: sql_help.c:3778
+msgid "index_column_name"
+msgstr "nome_colonna_indice"
+
+#: sql_help.c:3779
+msgid "index_expression"
+msgstr "espressione_indice"
+
+#: sql_help.c:3782
+msgid "index_predicate"
+msgstr "indice_predicato"
+
+#: sql_help.c:3784
+msgid "and conflict_action is one of:"
+msgstr "e azione_conflitto è una di:"
+
+#: sql_help.c:3790 sql_help.c:4562
+msgid "sub-SELECT"
+msgstr "sub-SELECT"
+
+#: sql_help.c:3799 sql_help.c:3862 sql_help.c:4538
+msgid "channel"
+msgstr "canale"
+
+#: sql_help.c:3821
+msgid "lockmode"
+msgstr "modalità_lock"
+
+#: sql_help.c:3822
+msgid "where lockmode is one of:"
+msgstr "dove modalità_lock è una di:"
+
+#: sql_help.c:3863
+msgid "payload"
+msgstr "payload"
+
+#: sql_help.c:3890
+msgid "old_role"
+msgstr "vecchio_ruolo"
+
+#: sql_help.c:3891
+msgid "new_role"
+msgstr "nuovo_ruolo"
+
+#: sql_help.c:3916 sql_help.c:4077 sql_help.c:4085
+msgid "savepoint_name"
+msgstr "nome_punto_salvataggio"
+
+#: sql_help.c:4219 sql_help.c:4261 sql_help.c:4263 sql_help.c:4309
+#: sql_help.c:4458 sql_help.c:4500 sql_help.c:4502 sql_help.c:4665
+#: sql_help.c:4707 sql_help.c:4709
+msgid "from_item"
+msgstr "elemento_from"
+
+#: sql_help.c:4221 sql_help.c:4273 sql_help.c:4460 sql_help.c:4512
+#: sql_help.c:4667 sql_help.c:4719
+msgid "grouping_element"
+msgstr "elemento_raggruppante"
+
+#: sql_help.c:4223 sql_help.c:4313 sql_help.c:4462 sql_help.c:4669
+msgid "window_name"
+msgstr "nome_finestra"
+
+#: sql_help.c:4224 sql_help.c:4314 sql_help.c:4463 sql_help.c:4670
+msgid "window_definition"
+msgstr "definizione_finestra"
+
+#: sql_help.c:4225 sql_help.c:4239 sql_help.c:4277 sql_help.c:4315
+#: sql_help.c:4464 sql_help.c:4478 sql_help.c:4516 sql_help.c:4671
+#: sql_help.c:4685 sql_help.c:4723
+msgid "select"
+msgstr "select"
+
+#: sql_help.c:4232 sql_help.c:4471 sql_help.c:4678
+msgid "where from_item can be one of:"
+msgstr "dove from_item può essere uno di:"
+
+#: sql_help.c:4235 sql_help.c:4241 sql_help.c:4244 sql_help.c:4248
+#: sql_help.c:4260 sql_help.c:4474 sql_help.c:4480 sql_help.c:4483
+#: sql_help.c:4487 sql_help.c:4499 sql_help.c:4681 sql_help.c:4687
+#: sql_help.c:4690 sql_help.c:4694 sql_help.c:4706
+msgid "column_alias"
+msgstr "alias_colonna"
+
+#: sql_help.c:4236 sql_help.c:4475 sql_help.c:4682
+msgid "sampling_method"
+msgstr "metodo_di_campionamento"
+
+#: sql_help.c:4238 sql_help.c:4477 sql_help.c:4684
+msgid "seed"
+msgstr "seme"
+
+#: sql_help.c:4242 sql_help.c:4275 sql_help.c:4481 sql_help.c:4514
+#: sql_help.c:4688 sql_help.c:4721
+msgid "with_query_name"
+msgstr "nome_query_with"
+
+#: sql_help.c:4252 sql_help.c:4255 sql_help.c:4258 sql_help.c:4491
+#: sql_help.c:4494 sql_help.c:4497 sql_help.c:4698 sql_help.c:4701
+#: sql_help.c:4704
+msgid "column_definition"
+msgstr "definizione_colonna"
+
+#: sql_help.c:4262 sql_help.c:4501 sql_help.c:4708
+msgid "join_type"
+msgstr "tipo_join"
+
+#: sql_help.c:4264 sql_help.c:4503 sql_help.c:4710
+msgid "join_condition"
+msgstr "condizione_join"
+
+#: sql_help.c:4265 sql_help.c:4504 sql_help.c:4711
+msgid "join_column"
+msgstr "colonna_join"
+
+#: sql_help.c:4266 sql_help.c:4505 sql_help.c:4712
+msgid "and grouping_element can be one of:"
+msgstr "e elemento_raggruppante può essere uno di:"
+
+#: sql_help.c:4274 sql_help.c:4513 sql_help.c:4720
+msgid "and with_query is:"
+msgstr "e with_query è:"
+
+#: sql_help.c:4278 sql_help.c:4517 sql_help.c:4724
+msgid "values"
+msgstr "valori"
+
+#: sql_help.c:4279 sql_help.c:4518 sql_help.c:4725
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4280 sql_help.c:4519 sql_help.c:4726
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4281 sql_help.c:4520 sql_help.c:4727
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4308
+msgid "new_table"
+msgstr "nuova_tabella"
+
+#: sql_help.c:4333
+msgid "timezone"
+msgstr "timezone"
+
+#: sql_help.c:4378
+msgid "snapshot_id"
+msgstr "id_snapshot"
+
+#: sql_help.c:4563
+msgid "from_list"
+msgstr "lista_from"
+
+#: sql_help.c:4607
+msgid "sort_expression"
+msgstr "espressione_ordinamento"
+
+#: sql_help.c:4734 sql_help.c:5549
+msgid "abort the current transaction"
+msgstr "annulla la transazione corrente"
+
+#: sql_help.c:4739
+msgid "change the definition of an aggregate function"
+msgstr "cambia la definizione di una funzione di aggregazione"
+
+#: sql_help.c:4744
+msgid "change the definition of a collation"
+msgstr "cambia la definizione di un ordinamento"
+
+#: sql_help.c:4749
+msgid "change the definition of a conversion"
+msgstr "cambia la definizione di una conversione"
+
+#: sql_help.c:4754
+msgid "change a database"
+msgstr "cambia un database"
+
+#: sql_help.c:4759
+msgid "define default access privileges"
+msgstr "definisci i privilegi di accesso di default"
+
+#: sql_help.c:4764
+msgid "change the definition of a domain"
+msgstr "cambia la definizione di un dominio"
+
+#: sql_help.c:4769
+msgid "change the definition of an event trigger"
+msgstr "cambia la definizione di un trigger di evento"
+
+#: sql_help.c:4774
+msgid "change the definition of an extension"
+msgstr "cambia la definizione di una estensione"
+
+#: sql_help.c:4779
+msgid "change the definition of a foreign-data wrapper"
+msgstr "cambia la definizione di un wrapper di dati esterni"
+
+#: sql_help.c:4784
+msgid "change the definition of a foreign table"
+msgstr "cambia la definizione di una tabella esterna"
+
+#: sql_help.c:4789
+msgid "change the definition of a function"
+msgstr "cambia la definizione di una funzione"
+
+#: sql_help.c:4794
+msgid "change role name or membership"
+msgstr "cambia il nome del ruolo o l'appartenenza"
+
+#: sql_help.c:4799
+msgid "change the definition of an index"
+msgstr "cambia la definizione di un indice"
+
+#: sql_help.c:4804
+msgid "change the definition of a procedural language"
+msgstr "cambia la definizione di un linguaggio procedurale"
+
+#: sql_help.c:4809
+msgid "change the definition of a large object"
+msgstr "cambia la definizione di un large object"
+
+#: sql_help.c:4814
+msgid "change the definition of a materialized view"
+msgstr "cambia la definizione di una vista materializzata"
+
+#: sql_help.c:4819
+msgid "change the definition of an operator"
+msgstr "cambia la definizione di un operatore"
+
+#: sql_help.c:4824
+msgid "change the definition of an operator class"
+msgstr "cambia la definizione di una classe di operatori"
+
+#: sql_help.c:4829
+msgid "change the definition of an operator family"
+msgstr "cambia la definizione di una famiglia di operatori"
+
+#: sql_help.c:4834
+msgid "change the definition of a row level security policy"
+msgstr "cambia la definizione di una regola di sicurezza per riga"
+
+#: sql_help.c:4839
+msgid "change the definition of a procedure"
+msgstr "cambia la definizione di una procedura"
+
+#: sql_help.c:4844
+msgid "change the definition of a publication"
+msgstr "cambia la definizione di una pubblicazione"
+
+#: sql_help.c:4849 sql_help.c:4934
+msgid "change a database role"
+msgstr "cambia un ruolo di database"
+
+#: sql_help.c:4854
+msgid "change the definition of a routine"
+msgstr "cambia la definizione di una routine"
+
+#: sql_help.c:4859
+msgid "change the definition of a rule"
+msgstr "cambia la definizione di una regola"
+
+#: sql_help.c:4864
+msgid "change the definition of a schema"
+msgstr "cambia la definizione di uno schema"
+
+#: sql_help.c:4869
+msgid "change the definition of a sequence generator"
+msgstr "cambia la definizione di un generatore di sequenza"
+
+#: sql_help.c:4874
+msgid "change the definition of a foreign server"
+msgstr "cambia la definizione di un server esterno"
+
+#: sql_help.c:4879
+msgid "change the definition of an extended statistics object"
+msgstr "cambia la definizione di una statistica estesa"
+
+#: sql_help.c:4884
+msgid "change the definition of a subscription"
+msgstr "cambia la definizione di una sottoscrizione"
+
+#: sql_help.c:4889
+msgid "change a server configuration parameter"
+msgstr "cambia un parametro di configurazione del server"
+
+#: sql_help.c:4894
+msgid "change the definition of a table"
+msgstr "cambia la definizione di una tabella"
+
+#: sql_help.c:4899
+msgid "change the definition of a tablespace"
+msgstr "cambia la definizione di un tablespace"
+
+#: sql_help.c:4904
+msgid "change the definition of a text search configuration"
+msgstr "cambia la definizione di una configurazione di ricerca testo"
+
+#: sql_help.c:4909
+msgid "change the definition of a text search dictionary"
+msgstr "cambia la definizione di un dizionario di ricerca testo"
+
+#: sql_help.c:4914
+msgid "change the definition of a text search parser"
+msgstr "cambia la definizione di un analizzatore di ricerca testo"
+
+#: sql_help.c:4919
+msgid "change the definition of a text search template"
+msgstr "cambia la definizione di un modello di ricerca testo"
+
+#: sql_help.c:4924
+msgid "change the definition of a trigger"
+msgstr "cambia la definizione di un trigger"
+
+#: sql_help.c:4929
+msgid "change the definition of a type"
+msgstr "cambia la definizione di un tipo di dato"
+
+#: sql_help.c:4939
+msgid "change the definition of a user mapping"
+msgstr "cambia la definizione di una mappatura degli"
+
+#: sql_help.c:4944
+msgid "change the definition of a view"
+msgstr "cambia la definizione di una vista"
+
+#: sql_help.c:4949
+msgid "collect statistics about a database"
+msgstr "raccogli statistiche sul database"
+
+#: sql_help.c:4954 sql_help.c:5614
+msgid "start a transaction block"
+msgstr "avvia un blocco di transazione"
+
+#: sql_help.c:4959
+msgid "invoke a procedure"
+msgstr "esegui una procedura"
+
+#: sql_help.c:4964
+msgid "force a write-ahead log checkpoint"
+msgstr "forza un checkpoint del write-ahead log"
+
+#: sql_help.c:4969
+msgid "close a cursor"
+msgstr "chiudi un cursore"
+
+#: sql_help.c:4974
+msgid "cluster a table according to an index"
+msgstr "raggruppa una tabella in base ad un indice"
+
+#: sql_help.c:4979
+msgid "define or change the comment of an object"
+msgstr "definisci o modifica il commento di un oggetto"
+
+#: sql_help.c:4984 sql_help.c:5449
+msgid "commit the current transaction"
+msgstr "rendi persistente la transazione corrente"
+
+#: sql_help.c:4989
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "concludi transazione che è stata precedentemente preparata per un commit a due fasi"
+
+#: sql_help.c:4994
+msgid "copy data between a file and a table"
+msgstr "copia i dati tra un file ed una tabella"
+
+#: sql_help.c:4999
+msgid "define a new access method"
+msgstr "definisci un nuovo metodo di accesso"
+
+#: sql_help.c:5004
+msgid "define a new aggregate function"
+msgstr "definisci una nuova funzione aggregata"
+
+#: sql_help.c:5009
+msgid "define a new cast"
+msgstr "definisci una nuova conversione di tipi"
+
+#: sql_help.c:5014
+msgid "define a new collation"
+msgstr "definisci un nuovo ordinamento"
+
+#: sql_help.c:5019
+msgid "define a new encoding conversion"
+msgstr "definisci una nuova conversione di codifica"
+
+#: sql_help.c:5024
+msgid "create a new database"
+msgstr "crea un nuovo database"
+
+#: sql_help.c:5029
+msgid "define a new domain"
+msgstr "definisci un nuovo dominio"
+
+#: sql_help.c:5034
+msgid "define a new event trigger"
+msgstr "definisci un nuovo trigger di evento"
+
+#: sql_help.c:5039
+msgid "install an extension"
+msgstr "installa un'estensione"
+
+#: sql_help.c:5044
+msgid "define a new foreign-data wrapper"
+msgstr "definisci un nuovo wrapper di dati esterni"
+
+#: sql_help.c:5049
+msgid "define a new foreign table"
+msgstr "definisci una nuova tabella esterna"
+
+#: sql_help.c:5054
+msgid "define a new function"
+msgstr "definisci una nuova funzione"
+
+#: sql_help.c:5059 sql_help.c:5109 sql_help.c:5194
+msgid "define a new database role"
+msgstr "definisci un nuovo ruolo database"
+
+#: sql_help.c:5064
+msgid "define a new index"
+msgstr "crea un nuovo indice"
+
+#: sql_help.c:5069
+msgid "define a new procedural language"
+msgstr "definisci un nuovo linguaggio procedurale"
+
+#: sql_help.c:5074
+msgid "define a new materialized view"
+msgstr "definisci una nuova vista materializzata"
+
+#: sql_help.c:5079
+msgid "define a new operator"
+msgstr "definisci un nuovo operatore"
+
+#: sql_help.c:5084
+msgid "define a new operator class"
+msgstr "definisci una nuova classe di operatori"
+
+#: sql_help.c:5089
+msgid "define a new operator family"
+msgstr "definisci una nuova famiglia operatore"
+
+#: sql_help.c:5094
+msgid "define a new row level security policy for a table"
+msgstr "definisci una nuova regola di sicurezza per riga per una tabella"
+
+#: sql_help.c:5099
+msgid "define a new procedure"
+msgstr "definisci una nuova procedura"
+
+#: sql_help.c:5104
+msgid "define a new publication"
+msgstr "definisci una nuova pubblicazione"
+
+#: sql_help.c:5114
+msgid "define a new rewrite rule"
+msgstr "definisci una nuova regola di riscrittura"
+
+#: sql_help.c:5119
+msgid "define a new schema"
+msgstr "crea un nuovo schema"
+
+#: sql_help.c:5124
+msgid "define a new sequence generator"
+msgstr "definisci un nuovo generatore di sequenze"
+
+#: sql_help.c:5129
+msgid "define a new foreign server"
+msgstr "definisci un nuovo server esterno"
+
+#: sql_help.c:5134
+msgid "define extended statistics"
+msgstr "definisci una statistica estesa"
+
+#: sql_help.c:5139
+msgid "define a new subscription"
+msgstr "definisci una nuova sottoscrizione"
+
+#: sql_help.c:5144
+msgid "define a new table"
+msgstr "crea una nuova tabella"
+
+#: sql_help.c:5149 sql_help.c:5579
+msgid "define a new table from the results of a query"
+msgstr "crea una nuova tabella dai risultati di una query"
+
+#: sql_help.c:5154
+msgid "define a new tablespace"
+msgstr "crea un nuovo tablespace"
+
+#: sql_help.c:5159
+msgid "define a new text search configuration"
+msgstr "definisci una nuova configurazione di ricerca testo"
+
+#: sql_help.c:5164
+msgid "define a new text search dictionary"
+msgstr "definisci un nuovo dizionario di ricerca testo"
+
+#: sql_help.c:5169
+msgid "define a new text search parser"
+msgstr "definisci un nuovo analizzatore di ricerca testo"
+
+#: sql_help.c:5174
+msgid "define a new text search template"
+msgstr "definisci un nuovo modello di ricerca testo"
+
+#: sql_help.c:5179
+msgid "define a new transform"
+msgstr "definisci una nuova trasformazione"
+
+#: sql_help.c:5184
+msgid "define a new trigger"
+msgstr "definisci un nuovo trigger"
+
+#: sql_help.c:5189
+msgid "define a new data type"
+msgstr "definisci un nuovo tipo di dato"
+
+#: sql_help.c:5199
+msgid "define a new mapping of a user to a foreign server"
+msgstr "definisci una nuova mappatura di un utente ad un server esterno"
+
+#: sql_help.c:5204
+msgid "define a new view"
+msgstr "definisci una nuova vista"
+
+#: sql_help.c:5209
+msgid "deallocate a prepared statement"
+msgstr "dealloca una istruzione preparata"
+
+#: sql_help.c:5214
+msgid "define a cursor"
+msgstr "definisci un cursore"
+
+#: sql_help.c:5219
+msgid "delete rows of a table"
+msgstr "elimina le righe di una tabella"
+
+#: sql_help.c:5224
+msgid "discard session state"
+msgstr "cancella lo stato della sessione"
+
+#: sql_help.c:5229
+msgid "execute an anonymous code block"
+msgstr "esegui un blocco di codice anonimo"
+
+#: sql_help.c:5234
+msgid "remove an access method"
+msgstr "rimuovi un metodo di accesso"
+
+#: sql_help.c:5239
+msgid "remove an aggregate function"
+msgstr "elimina una funzione aggregata"
+
+#: sql_help.c:5244
+msgid "remove a cast"
+msgstr "elimina una conversione di tipi"
+
+#: sql_help.c:5249
+msgid "remove a collation"
+msgstr "elimina un ordinamento"
+
+#: sql_help.c:5254
+msgid "remove a conversion"
+msgstr "elimina una conversione"
+
+#: sql_help.c:5259
+msgid "remove a database"
+msgstr "elimina un database"
+
+#: sql_help.c:5264
+msgid "remove a domain"
+msgstr "elimina un dominio"
+
+#: sql_help.c:5269
+msgid "remove an event trigger"
+msgstr "elimina un trigger di evento"
+
+#: sql_help.c:5274
+msgid "remove an extension"
+msgstr "elimina una estensione"
+
+#: sql_help.c:5279
+msgid "remove a foreign-data wrapper"
+msgstr "elimina un wrapper di dati esterni"
+
+#: sql_help.c:5284
+msgid "remove a foreign table"
+msgstr "elimina una tabella esterna"
+
+#: sql_help.c:5289
+msgid "remove a function"
+msgstr "elimina una funzione"
+
+#: sql_help.c:5294 sql_help.c:5349 sql_help.c:5434
+msgid "remove a database role"
+msgstr "elimina un ruolo di database"
+
+#: sql_help.c:5299
+msgid "remove an index"
+msgstr "elimina un indice"
+
+#: sql_help.c:5304
+msgid "remove a procedural language"
+msgstr "elimina un linguaggio procedurale"
+
+#: sql_help.c:5309
+msgid "remove a materialized view"
+msgstr "elimina una vista materializzata"
+
+#: sql_help.c:5314
+msgid "remove an operator"
+msgstr "elimina un operatore"
+
+#: sql_help.c:5319
+msgid "remove an operator class"
+msgstr "elimina una classe di operatori"
+
+#: sql_help.c:5324
+msgid "remove an operator family"
+msgstr "elimina una famiglia operatore"
+
+#: sql_help.c:5329
+msgid "remove database objects owned by a database role"
+msgstr "elimina gli oggetti database di proprietà di un ruolo di database"
+
+#: sql_help.c:5334
+msgid "remove a row level security policy from a table"
+msgstr "rimuovi una regola di sicurezza per riga da una tabella"
+
+#: sql_help.c:5339
+msgid "remove a procedure"
+msgstr "rimuovi una procedura"
+
+#: sql_help.c:5344
+msgid "remove a publication"
+msgstr "rimuovi una pubblicazione"
+
+#: sql_help.c:5354
+msgid "remove a routine"
+msgstr "rimuovi una routine"
+
+#: sql_help.c:5359
+msgid "remove a rewrite rule"
+msgstr "elimina una regola di riscrittura"
+
+#: sql_help.c:5364
+msgid "remove a schema"
+msgstr "elimina uno schema"
+
+#: sql_help.c:5369
+msgid "remove a sequence"
+msgstr "elimina una sequenza"
+
+#: sql_help.c:5374
+msgid "remove a foreign server descriptor"
+msgstr "elimina una descrizione server esterno"
+
+#: sql_help.c:5379
+msgid "remove extended statistics"
+msgstr "rimuovi una statistica estesa"
+
+#: sql_help.c:5384
+msgid "remove a subscription"
+msgstr "rimuovi una sottoscrizione"
+
+#: sql_help.c:5389
+msgid "remove a table"
+msgstr "elimina una tabella"
+
+#: sql_help.c:5394
+msgid "remove a tablespace"
+msgstr "elimina un tablespace"
+
+#: sql_help.c:5399
+msgid "remove a text search configuration"
+msgstr "elimina una configurazione di ricerca testo"
+
+#: sql_help.c:5404
+msgid "remove a text search dictionary"
+msgstr "elimina un dizionario di ricerca testo"
+
+#: sql_help.c:5409
+msgid "remove a text search parser"
+msgstr "elimina un analizzatore di ricerca testo"
+
+#: sql_help.c:5414
+msgid "remove a text search template"
+msgstr "elimina un modello di ricerca testo"
+
+#: sql_help.c:5419
+msgid "remove a transform"
+msgstr "elimina una trasformazione"
+
+#: sql_help.c:5424
+msgid "remove a trigger"
+msgstr "elimina un trigger"
+
+#: sql_help.c:5429
+msgid "remove a data type"
+msgstr "elimina un tipo di dato"
+
+#: sql_help.c:5439
+msgid "remove a user mapping for a foreign server"
+msgstr "elimina la mappatura degli utenti per un server esterno"
+
+#: sql_help.c:5444
+msgid "remove a view"
+msgstr "elimina una vista"
+
+#: sql_help.c:5454
+msgid "execute a prepared statement"
+msgstr "esegui una istruzione preparata"
+
+#: sql_help.c:5459
+msgid "show the execution plan of a statement"
+msgstr "mostra il piano di esecuzione di una istruzione"
+
+#: sql_help.c:5464
+msgid "retrieve rows from a query using a cursor"
+msgstr "estrai delle righe da una query utilizzando un cursore"
+
+#: sql_help.c:5469
+msgid "define access privileges"
+msgstr "definisci i privilegi di accesso"
+
+#: sql_help.c:5474
+msgid "import table definitions from a foreign server"
+msgstr "importa le definizioni di tabella da un server remoto"
+
+#: sql_help.c:5479
+msgid "create new rows in a table"
+msgstr "crea nuove righe in una tabella"
+
+#: sql_help.c:5484
+msgid "listen for a notification"
+msgstr "attendi l'arrivo di notifiche"
+
+#: sql_help.c:5489
+msgid "load a shared library file"
+msgstr "carica un file di libreria condivisa"
+
+#: sql_help.c:5494
+msgid "lock a table"
+msgstr "blocca una tabella"
+
+#: sql_help.c:5499
+msgid "position a cursor"
+msgstr "posiziona un cursore"
+
+#: sql_help.c:5504
+msgid "generate a notification"
+msgstr "genera una notifica"
+
+#: sql_help.c:5509
+msgid "prepare a statement for execution"
+msgstr "prepara una istruzione per l'esecuzione"
+
+#: sql_help.c:5514
+msgid "prepare the current transaction for two-phase commit"
+msgstr "prepara la transazione corrente per un commit a due fasi"
+
+#: sql_help.c:5519
+msgid "change the ownership of database objects owned by a database role"
+msgstr "cambia il proprietario degli oggetti del database posseduti da un ruolo"
+
+#: sql_help.c:5524
+msgid "replace the contents of a materialized view"
+msgstr "sostituisci il contenuto di una vista materializzata"
+
+#: sql_help.c:5529
+msgid "rebuild indexes"
+msgstr "ricostruisci indici"
+
+#: sql_help.c:5534
+msgid "destroy a previously defined savepoint"
+msgstr "distruggi un punto di salvataggio precedentemente definito"
+
+#: sql_help.c:5539
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "ripristina un parametro di esecuzione al suo valore di predefinito"
+
+#: sql_help.c:5544
+msgid "remove access privileges"
+msgstr "elimina i privilegi di accesso"
+
+#: sql_help.c:5554
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "annulla una transazione che era stata preparata per un commit a due fasi"
+
+#: sql_help.c:5559
+msgid "roll back to a savepoint"
+msgstr "annulla le modifiche fino a un punto di salvataggio"
+
+#: sql_help.c:5564
+msgid "define a new savepoint within the current transaction"
+msgstr "definisci un nuovo punto di salvataggio per la transazione corrente"
+
+#: sql_help.c:5569
+msgid "define or change a security label applied to an object"
+msgstr "definisci o modifica un'etichetta di sicurezza applicata a un oggetto"
+
+#: sql_help.c:5574 sql_help.c:5619 sql_help.c:5649
+msgid "retrieve rows from a table or view"
+msgstr "estrai righe da una tabella o una vista"
+
+#: sql_help.c:5584
+msgid "change a run-time parameter"
+msgstr "modifica un parametro di esecuzione"
+
+#: sql_help.c:5589
+msgid "set constraint check timing for the current transaction"
+msgstr "imposta il momento del controllo dei vincoli per la transazione corrente"
+
+#: sql_help.c:5594
+msgid "set the current user identifier of the current session"
+msgstr "imposta l'identificativo utente della sessione corrente"
+
+#: sql_help.c:5599
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "imposta l'identificazione utente della sessione e l'identificazione utente corrente della sessione corrente"
+
+#: sql_help.c:5604
+msgid "set the characteristics of the current transaction"
+msgstr "imposta le caratteristiche della transazione corrente"
+
+#: sql_help.c:5609
+msgid "show the value of a run-time parameter"
+msgstr "mostra il valore di un parametro di esecuzione"
+
+#: sql_help.c:5624
+msgid "empty a table or set of tables"
+msgstr "svuota una tabella o una lista di tabelle"
+
+#: sql_help.c:5629
+msgid "stop listening for a notification"
+msgstr "termina l'attesa di notifiche"
+
+#: sql_help.c:5634
+msgid "update rows of a table"
+msgstr "modifica le righe di una tabella"
+
+#: sql_help.c:5639
+msgid "garbage-collect and optionally analyze a database"
+msgstr "pulisci ed eventualmente analizza il database"
+
+#: sql_help.c:5644
+msgid "compute a set of rows"
+msgstr "genera una sequenza di righe"
+
+#: startup.c:190
+#, c-format
+msgid "%s: -1 can only be used in non-interactive mode\n"
+msgstr "%s: -1 può essere usato solo in modalità non interattiva\n"
+
+#: startup.c:305
+#, c-format
+msgid "%s: could not open log file \"%s\": %s\n"
+msgstr "%s: apertura del file di log \"%s\" fallita: %s\n"
+
+#: startup.c:412
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Digita \"help\" per avere un aiuto.\n"
+"\n"
+
+#: startup.c:561
+#, c-format
+msgid "%s: could not set printing parameter \"%s\"\n"
+msgstr "%s: impostazione del parametro di stampa \"%s\" fallito\n"
+
+#: startup.c:663
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Prova \"%s --help\" per maggiori informazioni.\n"
+
+#: startup.c:680
+#, c-format
+msgid "%s: warning: extra command-line argument \"%s\" ignored\n"
+msgstr "%s: attenzione: parametro in eccesso \"%s\" nella riga di comando ignorato\n"
+
+#: startup.c:729
+#, c-format
+msgid "%s: could not find own program executable\n"
+msgstr "%s: il proprio programma eseguibile non è stato trovato\n"
+
+#: tab-complete.c:4497
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s\n"
+msgstr ""
+"query per il completamento tab fallita: %s\n"
+"La query era:\n"
+"%s\n"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected\n"
+msgstr "valore \"%s\" non valido per \"%s\": è necessario un booleano\n"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected\n"
+msgstr "valore \"%s\" non valido per \"%s\": è necessario un intero\n"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\"\n"
+msgstr "nome di variabile non valido: \"%s\"\n"
+
+#: variables.c:393
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s.\n"
+msgstr ""
+"valore \"%s\" non riconosciuto per \"%s\"\n"
+"I valori disponibili sono: %s.\n"
diff --git a/src/bin/psql/po/ja.po b/src/bin/psql/po/ja.po
new file mode 100644
index 0000000..f33e5e9
--- /dev/null
+++ b/src/bin/psql/po/ja.po
@@ -0,0 +1,6497 @@
+# Japanese message translation file for psql
+# Copyright (C) 2019 PostgreSQL Global Development Group
+# This file is distributed under the same license as the pg_archivecleanup (PostgreSQL) package.
+# Michihide Hotta <hotta@net-newbie.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psql (PostgreSQL 13)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-08-21 15:55+0900\n"
+"PO-Revision-Date: 2020-09-13 09:00+0200\n"
+"Last-Translator: Kyotaro Horiguchi <horikyota.ntt@gmail.com>\n"
+"Language-Team: Japan PostgreSQL Users Group <jpug-doc@ml.postgresql.jp>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 1.8.13\n"
+
+#: ../../../src/common/logging.c:241
+#, c-format
+msgid "fatal: "
+msgstr "致命的エラー: "
+
+#: ../../../src/common/logging.c:248
+#, c-format
+msgid "error: "
+msgstr "エラー: "
+
+#: ../../../src/common/logging.c:255
+#, c-format
+msgid "warning: "
+msgstr "警告: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "カレントディレクトリを識別できませんでした: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "無効なバイナリ\"%s\""
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "バイナリ\"%s\"を読み取ることができませんでした"
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "実行対象の\"%s\"が見つかりませんでした"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "ディレクトリ\"%s\"に移動できませんでした: %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "シンボリックリンク\"%s\"を読めませんでした: %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "pcloseが失敗しました: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1255 input.c:227 mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "メモリ不足です"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "メモリ不足です\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "null ポインターを複製することはできません(内部エラー) \n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "実効ユーザID %ld が見つかりませんでした: %s"
+
+#: ../../common/username.c:45 command.c:559
+msgid "user does not exist"
+msgstr "ユーザが存在しません"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "ユーザ名の検索に失敗: エラー コード %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "コマンドが実行形式ではありません"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "コマンドが見つかりません"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "子プロセスが終了コード %d で終了しました"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "子プロセスが例外 0x%X で強制終了しました"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "子プロセスはシグナル%dにより終了しました: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "子プロセスは認識できないステータス %d で終了しました"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "キャンセル要求を送信しました\n"
+
+#: ../../fe_utils/cancel.c:165
+msgid "Could not send cancel request: "
+msgstr "キャンセル要求を送信できませんでした: "
+
+#: ../../fe_utils/cancel.c:210
+#, c-format
+msgid "Could not send cancel request: %s"
+msgstr "キャンセル要求を送信できませんでした: %s"
+
+#: ../../fe_utils/print.c:336
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu 行)"
+
+#: ../../fe_utils/print.c:3039
+#, c-format
+msgid "Interrupted\n"
+msgstr "割り込み\n"
+
+#: ../../fe_utils/print.c:3103
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "テーブルの内容にヘッダーを追加できません: 列数 %d が制限値を超えています。\n"
+
+#: ../../fe_utils/print.c:3143
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "テーブルの内容にセルを追加できません: セルの合計数 %d が制限値を超えています。\n"
+
+#: ../../fe_utils/print.c:3398
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "出力フォーマットが無効(内部エラー):%d"
+
+#: command.c:224
+#, c-format
+msgid "invalid command \\%s"
+msgstr "不正なコマンド \\%s "
+
+#: command.c:226
+#, c-format
+msgid "Try \\? for help."
+msgstr " \\? でヘルプを表示します。"
+
+#: command.c:244
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: 余分な引数\"%s\"は無視されました"
+
+#: command.c:296
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "\\%s コマンドは無視されます; 現在の\\ifブロックを抜けるには\\endifまたはCtrl-Cを使用します"
+
+#: command.c:557
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "ユーザID %ldのホームディレクトリを取得できませんでした : %s"
+
+#: command.c:575
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: ディレクトリを\"%s\"に変更できませんでした: %m"
+
+#: command.c:600
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "現在データベースに接続していません。\n"
+
+#: command.c:613
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、ホスト\"%s\"上のポート\"%s\"で接続しています。\n"
+
+#: command.c:616
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、\"%s\"のソケットを介してポート\"%s\"で接続しています。\n"
+
+#: command.c:622
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、ホスト\"%s\"(アドレス\"%s\")上のポート\"%s\"で接続しています。\n"
+
+#: command.c:625
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、ホスト\"%s\"上のポート\"%s\"で接続しています。\n"
+
+#: command.c:965 command.c:1061 command.c:2550
+#, c-format
+msgid "no query buffer"
+msgstr "問い合わせバッファがありません"
+
+#: command.c:998 command.c:5061
+#, c-format
+msgid "invalid line number: %s"
+msgstr "不正な行番号です: %s"
+
+#: command.c:1052
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "このサーバ(バージョン%s)は関数ソースコードの編集をサポートしていません。"
+
+#: command.c:1055
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "このサーバ(バージョン%s)はビュー定義の編集をサポートしていません。"
+
+#: command.c:1137
+msgid "No changes"
+msgstr "変更されていません"
+
+#: command.c:1216
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: エンコーディング名が不正であるか、または変換プロシージャが見つかりません。"
+
+#: command.c:1251 command.c:1992 command.c:3253 command.c:5163 common.c:174
+#: common.c:223 common.c:388 common.c:1237 common.c:1265 common.c:1373
+#: common.c:1480 common.c:1518 copy.c:488 copy.c:707 help.c:62 large_obj.c:157
+#: large_obj.c:192 large_obj.c:254
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1258
+msgid "There is no previous error."
+msgstr "直前のエラーはありません。"
+
+#: command.c:1371
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: 右括弧がありません"
+
+#: command.c:1548 command.c:1853 command.c:1867 command.c:1884 command.c:2044
+#: command.c:2281 command.c:2517 command.c:2557
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: 必要な引数がありません"
+
+#: command.c:1679
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: \\else の後には置けません"
+
+#: command.c:1684
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: 対応する \\if がありません"
+
+#: command.c:1748
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: \\else の後には置けません"
+
+#: command.c:1753
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: 対応する \\if がありません"
+
+#: command.c:1793
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: 対応する \\if がありません"
+
+#: command.c:1948
+msgid "Query buffer is empty."
+msgstr "問い合わせバッファは空です。"
+
+#: command.c:1970
+msgid "Enter new password: "
+msgstr "新しいパスワードを入力してください: "
+
+#: command.c:1971
+msgid "Enter it again: "
+msgstr "もう一度入力してください: "
+
+#: command.c:1975
+#, c-format
+msgid "Passwords didn't match."
+msgstr "パスワードが一致しませんでした。"
+
+#: command.c:2074
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: 変数の値を読み取ることができませんでした"
+
+#: command.c:2177
+msgid "Query buffer reset (cleared)."
+msgstr "問い合わせバッファがリセット(クリア)されました。"
+
+#: command.c:2199
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "ファイル\"%s\"にヒストリーを出力しました。\n"
+
+#: command.c:2286
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: 環境変数名に\"=\"を含めることはできません"
+
+#: command.c:2347
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "このサーバ(バージョン%s)は関数ソースの表示をサポートしていません。"
+
+#: command.c:2350
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "このサーバ(バージョン%s)はビュー定義の表示をサポートしていません。"
+
+#: command.c:2357
+#, c-format
+msgid "function name is required"
+msgstr "関数名が必要です"
+
+#: command.c:2359
+#, c-format
+msgid "view name is required"
+msgstr "ビュー名が必要です"
+
+#: command.c:2489
+msgid "Timing is on."
+msgstr "タイミングは on です。"
+
+#: command.c:2491
+msgid "Timing is off."
+msgstr "タイミングは off です。"
+
+#: command.c:2576 command.c:2604 command.c:3661 command.c:3664 command.c:3667
+#: command.c:3673 command.c:3675 command.c:3683 command.c:3693 command.c:3702
+#: command.c:3716 command.c:3733 command.c:3791 common.c:70 copy.c:331
+#: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2988 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "パスワード: "
+
+#: command.c:2993 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "ユーザ %s のパスワード: "
+
+#: command.c:3064
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "既存のデータベース接続がないため、すべての接続パラメータを指定しなければなりません"
+
+#: command.c:3257
+#, c-format
+msgid "Previous connection kept"
+msgstr "以前の接続は保持されています"
+
+#: command.c:3261
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3310
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、ホスト\"%s\"のポート\"%s\"で接続しました。\n"
+
+#: command.c:3313
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、ソケット\"%s\"のポート\"%s\"を介して接続しました。\n"
+
+#: command.c:3319
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、ホスト\"%s\"(アドレス\"%s\")のポート\"%s\"で接続しました。\n"
+
+#: command.c:3322
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として、ホスト\"%s\"のポート\"%s\"を介して接続しました。\n"
+
+#: command.c:3327
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "データベース\"%s\"にユーザ\"%s\"として接続しました。\n"
+
+#: command.c:3360
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s、サーバ %s)\n"
+
+#: command.c:3368
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"警告: %s のメジャーバージョンは %s ですが、サーバのメジャーバージョンは %s です。\n"
+" psql の機能の中で、動作しないものがあるかもしれません。\n"
+
+#: command.c:3407
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL 接続 (プロトコル: %s、暗号化方式: %s、ビット長: %s、圧縮: %s)\n"
+
+#: command.c:3408 command.c:3409 command.c:3410
+msgid "unknown"
+msgstr "不明"
+
+#: command.c:3411 help.c:45
+msgid "off"
+msgstr "オフ"
+
+#: command.c:3411 help.c:45
+msgid "on"
+msgstr "オン"
+
+#: command.c:3425
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "GSSAPI暗号化接続\n"
+
+#: command.c:3445
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"警告:コンソールのコードページ(%u)がWindowsのコードページ(%u)と異なるため、\n"
+" 8ビット文字が正しく表示されない可能性があります。詳細はpsqlリファレンスマニュアルの\n"
+" \"Windowsユーザ向けの注意\" (Notes for Windows users)を参照してください。\n"
+
+#: command.c:3549
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "環境変数PSQL_EDITOR_LINENUMBER_ARGで行番号を指定する必要があります"
+
+#: command.c:3578
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "エディタ\"%s\"を起動できませんでした"
+
+#: command.c:3580
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "/bin/shを起動できませんでした"
+
+#: command.c:3618
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "一時ディレクトリが見つかりませんでした: %s"
+
+#: command.c:3645
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "一時ファイル\"%s\"をオープンできませんでした: %m"
+
+#: command.c:3950
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: 曖昧な短縮形\"%s\"が\"%s\"と\"%s\"のどちらにも合致します"
+
+#: command.c:3970
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: 有効なフォーマットはaligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:3989
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: 有効な線のスタイルは ascii, old-ascii, unicode"
+
+#: command.c:4004
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: 有効な Unicode 罫線のスタイルは single, double"
+
+#: command.c:4019
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: 有効な Unicode 列罫線のスタイルは single, double"
+
+#: command.c:4034
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: 有効な Unicode ヘッダー罫線のスタイルは single, double"
+
+#: command.c:4077
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsepは単一の1バイト文字でなければなりません"
+
+#: command.c:4082
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldsepはダブルクォート、改行(LF)または復帰(CR)にはできません"
+
+#: command.c:4219 command.c:4407
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: 未定義のオプション:%s"
+
+#: command.c:4239
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "罫線スタイルは %d です。\n"
+
+#: command.c:4245
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "ターゲットの幅が設定されていません。\n"
+
+#: command.c:4247
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "ターゲットの幅は %d です。\n"
+
+#: command.c:4254
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "拡張表示は on です。\n"
+
+#: command.c:4256
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "拡張表示が自動的に使われます。\n"
+
+#: command.c:4258
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "拡張表示は off です。\n"
+
+#: command.c:4264
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "CSVのフィールド区切り文字は\"%s\"です。\n"
+
+#: command.c:4272 command.c:4280
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "フィールド区切り文字はゼロバイトです。\n"
+
+#: command.c:4274
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "フィールド区切り文字は\"%s\"です。\n"
+
+#: command.c:4287
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "デフォルトフッター(行数の表示)は on です。\n"
+
+#: command.c:4289
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "デフォルトフッター(行数の表示)は off です。\n"
+
+#: command.c:4295
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "出力形式は %s です。\n"
+
+#: command.c:4301
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "線のスタイルは %s です。\n"
+
+#: command.c:4308
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null表示は\"%s\"です。\n"
+
+#: command.c:4316
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "『数値出力時のロケール調整』は on です。\n"
+
+#: command.c:4318
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "『数値出力時のロケール調整』は off です。\n"
+
+#: command.c:4325
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "表示が縦に長くなる場合はページャーを使います。\n"
+
+#: command.c:4327
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "常にページャーを使います。\n"
+
+#: command.c:4329
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "「ページャーを使う」は off です。\n"
+
+#: command.c:4335
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "%d 行未満の場合、ページャーは使われません。\n"
+
+#: command.c:4345 command.c:4355
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "レコードの区切り文字はゼロバイトです\n"
+
+#: command.c:4347
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "レコード区切り文字は<newline>です。\n"
+
+#: command.c:4349
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "レコード区切り記号は\"%s\"です。\n"
+
+#: command.c:4362
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "テーブル属性は\"%s\"です。\n"
+
+#: command.c:4365
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "テーブル属性は設定されていません。\n"
+
+#: command.c:4372
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "タイトルは\"%s\"です。\n"
+
+#: command.c:4374
+#, c-format
+msgid "Title is unset.\n"
+msgstr "タイトルは設定されていません。\n"
+
+#: command.c:4381
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "「タプルのみ表示」は on です。\n"
+
+#: command.c:4383
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "「タプルのみ表示」は off です。\n"
+
+#: command.c:4389
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Unicode の罫線スタイルは\"%s\"です。\n"
+
+#: command.c:4395
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Unicode 行罫線のスタイルは\"%s\"です。\n"
+
+#: command.c:4401
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Unicodeヘッダー行のスタイルは\"%s\"です。\n"
+
+#: command.c:4634
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: 失敗"
+
+#: command.c:4659 common.c:648
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watchは空の問い合わせでは使えません"
+
+#: command.c:4700
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (%g 秒毎)\n"
+
+#: command.c:4703
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (%g 秒毎)\n"
+
+#: command.c:4757 command.c:4764 common.c:548 common.c:555 common.c:1220
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"******** 問い合わせ ******\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:4956
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\"はビューではありません"
+
+#: command.c:4972
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "reloptions配列をパースできませんでした"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "有効な接続がないのでエスケープできません"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "シェルコマンドの引数に改行(LF)または復帰(CR)が含まれています: \"%s\""
+
+#: common.c:304
+#, c-format
+msgid "connection to server was lost"
+msgstr "サーバへの接続が失われました"
+
+#: common.c:308
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "サーバへの接続が失われました。リセットしています: "
+
+#: common.c:313
+#, c-format
+msgid "Failed.\n"
+msgstr "失敗。\n"
+
+#: common.c:326
+#, c-format
+msgid "Succeeded.\n"
+msgstr "成功。\n"
+
+#: common.c:378 common.c:938 common.c:1155
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "想定外のPQresultStatus: %d"
+
+#: common.c:487
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "時間: %.3f ミリ秒\n"
+
+#: common.c:502
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "時間: %.3f ミリ秒(%02d:%06.3f)\n"
+
+#: common.c:511
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "時間: %.3f ミリ秒 (%02d:%02d:%06.3f)\n"
+
+#: common.c:518
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "時間: %.3f ミリ秒 (%.0f 日 %02d:%02d:%06.3f)\n"
+
+#: common.c:542 common.c:600 common.c:1191
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "現在データベースに接続していません。"
+
+#: common.c:655
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watchはCOPYと一緒には使えません"
+
+#: common.c:660
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "\\watchで想定外の結果ステータス"
+
+#: common.c:690
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "PID %3$dのサーバプロセスから、ペイロード\"%2$s\"を持つ非同期通知\"%1$s\"を受信しました。\n"
+
+#: common.c:693
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "PID %2$dのサーバプロセスから非同期通知\"%1$s\"を受信しました。\n"
+
+#: common.c:726 common.c:743
+#, c-format
+msgid "could not print result table: %m"
+msgstr "結果テーブルを表示できませんでした: %m"
+
+#: common.c:764
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "\\gset に対して返すべき行がありません"
+
+#: common.c:769
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "\\gset に対して複数の行が返されました"
+
+#: common.c:1200
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(シングルステップモード: コマンドを確認してください)********\n"
+"%s\n"
+"***([Enter] を押して進むか、x [Enter] でキャンセル)**************\n"
+
+#: common.c:1255
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "このサーバ(バージョン%s)はON_ERROR_ROLLBACKのためのセーブポイントをサポートしていません。"
+
+#: common.c:1318
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "ステートメント: %s"
+
+#: common.c:1361
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "想定外のトランザクション状態(%d)"
+
+#: common.c:1502 describe.c:2001
+msgid "Column"
+msgstr "列"
+
+#: common.c:1503 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3719 describe.c:3929
+#: describe.c:4162 describe.c:5368
+msgid "Type"
+msgstr "タイプ"
+
+#: common.c:1552
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "このコマンドは結果を返却しないか、結果にカラムが含まれません。\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy: 引数が必要です"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: \"%s\"で構文解析エラー"
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: 行の末尾で構文解析エラー"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "コマンド\"%s\"を実行できませんでした: %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "ファイル\"%s\"のstatに失敗しました: %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: ディレクトリから/へのコピーはできません"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "外部コマンドに対するパイプをクローズできませんでした: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "COPY データを書き込めませんでした: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "COPY データの転送に失敗しました: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "ユーザによってキャンセルされました"
+
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"コピーするデータに続いて改行を入力してください。\n"
+"バックスラッシュとピリオドだけの行、もしくは EOF シグナルで終了します。"
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "読み取りエラーのため中止"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "コピーモードを終了しようとしています。"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: ステートメントは結果セットを返しませんでした"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: 問い合わせは、少なくとも3つの列を返す必要があります"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: 垂直方向と水平方向のヘッダーは異なった列にする必要があります"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: 問い合わせが 4 つ以上の列を返す場合、データ列を指定する必要があります"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "列数が制限値(%d)を超えています"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: 問い合わせ結果の中の\"%s\"行 \"%s\"列に複数のデータ値が含まれています"
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: 列番号%dが範囲外です(1..%d)"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: 列名があいまいです: \"%s\""
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: 列名が見つかりませんでした: \"%s\""
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3708 describe.c:3916
+#: describe.c:4160 describe.c:4251 describe.c:4518 describe.c:4678
+#: describe.c:4919 describe.c:4994 describe.c:5005 describe.c:5067
+#: describe.c:5492 describe.c:5575
+msgid "Schema"
+msgstr "スキーマ"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3709 describe.c:3917 describe.c:4083 describe.c:4161
+#: describe.c:4252 describe.c:4331 describe.c:4519 describe.c:4603
+#: describe.c:4679 describe.c:4920 describe.c:4995 describe.c:5006
+#: describe.c:5068 describe.c:5265 describe.c:5349 describe.c:5573
+#: describe.c:5745 describe.c:5985
+msgid "Name"
+msgstr "名前"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "結果のデータ型"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "引数のデータ型"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3496 describe.c:3769 describe.c:3963 describe.c:4114
+#: describe.c:4188 describe.c:4261 describe.c:4344 describe.c:4427
+#: describe.c:4546 describe.c:4612 describe.c:4680 describe.c:4821
+#: describe.c:4863 describe.c:4936 describe.c:4998 describe.c:5007
+#: describe.c:5069 describe.c:5291 describe.c:5371 describe.c:5506
+#: describe.c:5576 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "説明"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "集約関数一覧"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "このサーバ(バージョン%s)はアクセスメソッドをサポートしていません。"
+
+#: describe.c:175
+msgid "Index"
+msgstr "インデックス"
+
+#: describe.c:176 describe.c:3727 describe.c:3942 describe.c:5493
+msgid "Table"
+msgstr "テーブル"
+
+#: describe.c:184 describe.c:5270
+msgid "Handler"
+msgstr "ハンドラ"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "アクセスメソッド一覧"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "このサーバ(バージョン%s) はテーブル空間をサポートしていません。"
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3720 describe.c:3918 describe.c:4087
+#: describe.c:4333 describe.c:4604 describe.c:5266 describe.c:5350
+#: describe.c:5746 describe.c:5883 describe.c:5986 describe.c:6107
+#: describe.c:6186 large_obj.c:289
+msgid "Owner"
+msgstr "所有者"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "場所"
+
+#: describe.c:263 describe.c:3313
+msgid "Options"
+msgstr "オプション"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3761 describe.c:3765
+msgid "Size"
+msgstr "サイズ"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "テーブル空間一覧"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\dfで指定できるオプションは [anptwS+] のみです"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\dfはこのサーババージョン%2$sでは\"%1$c\"オプションは指定できません"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "集約"
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "ウィンドウ"
+
+#: describe.c:391
+msgid "proc"
+msgstr "プロシージャ"
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "関数"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "トリガー"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "IMMUTABLE"
+
+#: describe.c:484
+msgid "stable"
+msgstr "STABLE"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "VOLATILE"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "関数の変動性分類"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "制限付き"
+
+#: describe.c:495
+msgid "safe"
+msgstr "安全"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "危険"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "並列実行"
+
+#: describe.c:502
+msgid "definer"
+msgstr "定義ロール"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "起動ロール"
+
+#: describe.c:504
+msgid "Security"
+msgstr "セキュリティ"
+
+#: describe.c:511
+msgid "Language"
+msgstr "手続き言語"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "ソースコード"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "関数一覧"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "内部名"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "構成要素"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "データ型一覧"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "左辺の型"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "右辺の型"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "結果の型"
+
+#: describe.c:819 describe.c:4339 describe.c:4404 describe.c:4410
+#: describe.c:4820 describe.c:6358 describe.c:6362
+msgid "Function"
+msgstr "関数"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "演算子一覧"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "エンコーディング"
+
+#: describe.c:879 describe.c:4520
+msgid "Collate"
+msgstr "照合順序"
+
+#: describe.c:880 describe.c:4521
+msgid "Ctype"
+msgstr "Ctype(変換演算子)"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "テーブル空間"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "データベース一覧"
+
+#: describe.c:956 describe.c:1117 describe.c:3710
+msgid "table"
+msgstr "テーブル"
+
+#: describe.c:957 describe.c:3711
+msgid "view"
+msgstr "ビュー"
+
+#: describe.c:958 describe.c:3712
+msgid "materialized view"
+msgstr "マテリアライズドビュー"
+
+#: describe.c:959 describe.c:1119 describe.c:3714
+msgid "sequence"
+msgstr "シーケンス"
+
+#: describe.c:960 describe.c:3716
+msgid "foreign table"
+msgstr "外部テーブル"
+
+#: describe.c:961 describe.c:3717 describe.c:3927
+msgid "partitioned table"
+msgstr "パーティションテーブル"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "列の権限"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "ポリシー"
+
+#: describe.c:1070 describe.c:6048 describe.c:6052
+msgid "Access privileges"
+msgstr "アクセス権限"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "このサーバ(バージョン%s)はデフォルト権限の変更をサポートしていません。"
+
+#: describe.c:1121
+msgid "function"
+msgstr "関数"
+
+#: describe.c:1123
+msgid "type"
+msgstr "型"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "スキーマ"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "デフォルトのアクセス権限"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "オブジェクト"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "テーブル制約"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "ドメイン制約"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "演算子クラス"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "演算子族"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "ルール"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "オブジェクトの説明"
+
+#: describe.c:1402 describe.c:3833
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "\"%s\"という名前のリレーションは見つかりませんでした。"
+
+#: describe.c:1405 describe.c:3836
+#, c-format
+msgid "Did not find any relations."
+msgstr "リレーションが見つかりませんでした。"
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "OID %sを持つリレーションが見つかりませんでした。"
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "開始"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "最小"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "最大"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "増分"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4255
+#: describe.c:4421 describe.c:4535 describe.c:4540 describe.c:6095
+msgid "yes"
+msgstr "はい"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4255
+#: describe.c:4418 describe.c:4535 describe.c:6096
+msgid "no"
+msgstr "いいえ"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "循環?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "キャッシュ"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "所有者: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "識別列のシーケンス: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "シーケンス \"%s.%s\""
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "ログを取らないテーブル\"%s.%s\""
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "テーブル\"%s.%s\""
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "ビュー\"%s.%s\""
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "ログを取らないマテリアライズドビュー\"%s.%s\""
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "マテリアライズドビュー\"%s.%s\""
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "ログを取らないインデックス\"%s.%s\""
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "インデックス\"%s.%s\""
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "ログを取らないパーティションインデックス\"%s.%s\""
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "パーティションインデックス\"%s.%s\""
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "特殊なリレーション\"%s.%s\""
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "TOAST テーブル\"%s.%s\""
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "複合型\"%s.%s\""
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "外部テーブル\"%s.%s\""
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "ログを取らないパーティションテーブル\"%s.%s\""
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "パーティションテーブル\"%s.%s\""
+
+#: describe.c:2005 describe.c:4168
+msgid "Collation"
+msgstr "照合順序"
+
+#: describe.c:2006 describe.c:4175
+msgid "Nullable"
+msgstr "Null 値を許容"
+
+#: describe.c:2007 describe.c:4176
+msgid "Default"
+msgstr "デフォルト"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "キー?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "定義"
+
+#: describe.c:2014 describe.c:5286 describe.c:5370 describe.c:5441
+#: describe.c:5505
+msgid "FDW options"
+msgstr "FDW オプション"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "ストレージ"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "統計目標"
+
+#: describe.c:2131
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "パーティション: %s %s"
+
+#: describe.c:2143
+msgid "No partition constraint"
+msgstr "パーティション制約なし"
+
+#: describe.c:2145
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "パーティションの制約: %s"
+
+#: describe.c:2169
+#, c-format
+msgid "Partition key: %s"
+msgstr "パーティションキー: %s"
+
+#: describe.c:2195
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "所属先テーブル\"%s.%s\""
+
+#: describe.c:2266
+msgid "primary key, "
+msgstr "プライマリキー, "
+
+#: describe.c:2268
+msgid "unique, "
+msgstr "ユニーク,"
+
+#: describe.c:2274
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "テーブル\"%s.%s\"用"
+
+#: describe.c:2278
+#, c-format
+msgid ", predicate (%s)"
+msgstr "、述語 (%s)"
+
+#: describe.c:2281
+msgid ", clustered"
+msgstr "、クラスター化"
+
+#: describe.c:2284
+msgid ", invalid"
+msgstr "無効"
+
+#: describe.c:2287
+msgid ", deferrable"
+msgstr "、遅延可能"
+
+#: describe.c:2290
+msgid ", initially deferred"
+msgstr "、最初から遅延中"
+
+#: describe.c:2293
+msgid ", replica identity"
+msgstr "、レプリカの id"
+
+#: describe.c:2360
+msgid "Indexes:"
+msgstr "インデックス:"
+
+#: describe.c:2444
+msgid "Check constraints:"
+msgstr "Check 制約:"
+
+#: describe.c:2512
+msgid "Foreign-key constraints:"
+msgstr "外部キー制約:"
+
+#: describe.c:2575
+msgid "Referenced by:"
+msgstr "参照元:"
+
+#: describe.c:2625
+msgid "Policies:"
+msgstr "ポリシー:"
+
+#: describe.c:2628
+msgid "Policies (forced row security enabled):"
+msgstr "ポリシー(行セキュリティを強制的に有効化):"
+
+#: describe.c:2631
+msgid "Policies (row security enabled): (none)"
+msgstr "ポリシー(行セキュリティ有効化): (なし)"
+
+#: describe.c:2634
+msgid "Policies (forced row security enabled): (none)"
+msgstr "ポリシー(行セキュリティを強制的に有効化): (なし)"
+
+#: describe.c:2637
+msgid "Policies (row security disabled):"
+msgstr "ポリシー(行セキュリティを無効化):"
+
+#: describe.c:2700
+msgid "Statistics objects:"
+msgstr "統計オブジェクト:"
+
+#: describe.c:2809 describe.c:2913
+msgid "Rules:"
+msgstr "ルール:"
+
+#: describe.c:2812
+msgid "Disabled rules:"
+msgstr "無効化されたルール:"
+
+#: describe.c:2815
+msgid "Rules firing always:"
+msgstr "常に適用するルール:"
+
+#: describe.c:2818
+msgid "Rules firing on replica only:"
+msgstr "レプリカ上でのみ適用するルール:"
+
+#: describe.c:2858
+msgid "Publications:"
+msgstr "パブリケーション:"
+
+#: describe.c:2896
+msgid "View definition:"
+msgstr "ビューの定義:"
+
+#: describe.c:3043
+msgid "Triggers:"
+msgstr "トリガー:"
+
+#: describe.c:3047
+msgid "Disabled user triggers:"
+msgstr "無効化されたユーザトリガ:"
+
+#: describe.c:3049
+msgid "Disabled triggers:"
+msgstr "無効化されたトリガー:"
+
+#: describe.c:3052
+msgid "Disabled internal triggers:"
+msgstr "無効化された内部トリガー:"
+
+#: describe.c:3055
+msgid "Triggers firing always:"
+msgstr "常に適用するするトリガー:"
+
+#: describe.c:3058
+msgid "Triggers firing on replica only:"
+msgstr "レプリカ上でのみ適用するトリガー:"
+
+#: describe.c:3130
+#, c-format
+msgid "Server: %s"
+msgstr "サーバ: %s"
+
+#: describe.c:3138
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "FDW オプション: (%s)"
+
+#: describe.c:3159
+msgid "Inherits"
+msgstr "継承元"
+
+#: describe.c:3219
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "パーティション数: %d"
+
+#: describe.c:3228
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "パーティション数: %d (\\d+ で一覧を表示)。"
+
+#: describe.c:3230
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "子テーブル数: %d (\\d+ で一覧を表示)"
+
+#: describe.c:3237
+msgid "Child tables"
+msgstr "子テーブル"
+
+#: describe.c:3237
+msgid "Partitions"
+msgstr "パーティション"
+
+#: describe.c:3266
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "%s 型の型付きテーブル"
+
+#: describe.c:3282
+msgid "Replica Identity"
+msgstr "レプリカ識別"
+
+#: describe.c:3295
+msgid "Has OIDs: yes"
+msgstr "OID あり: はい"
+
+#: describe.c:3304
+#, c-format
+msgid "Access method: %s"
+msgstr "アクセスメソッド: %s"
+
+#: describe.c:3384
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "テーブル空間: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3396
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr "、テーブル空間\"%s\""
+
+#: describe.c:3489
+msgid "List of roles"
+msgstr "ロール一覧"
+
+#: describe.c:3491
+msgid "Role name"
+msgstr "ロール名"
+
+#: describe.c:3492
+msgid "Attributes"
+msgstr "属性"
+
+#: describe.c:3493
+msgid "Member of"
+msgstr "所属グループ"
+
+#: describe.c:3504
+msgid "Superuser"
+msgstr "スーパユーザ"
+
+#: describe.c:3507
+msgid "No inheritance"
+msgstr "継承なし"
+
+#: describe.c:3510
+msgid "Create role"
+msgstr "ロール作成可"
+
+#: describe.c:3513
+msgid "Create DB"
+msgstr "DB作成可"
+
+#: describe.c:3516
+msgid "Cannot login"
+msgstr "ログインできません"
+
+#: describe.c:3520
+msgid "Replication"
+msgstr "レプリケーション可"
+
+#: describe.c:3524
+msgid "Bypass RLS"
+msgstr "RLS のバイパス"
+
+#: describe.c:3533
+msgid "No connections"
+msgstr "接続なし"
+
+#: describe.c:3535
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d 個の接続"
+
+#: describe.c:3545
+msgid "Password valid until "
+msgstr "パスワードの有効期限 "
+
+#: describe.c:3595
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "このサーバ(バージョン%s)はデータベースごとのロール設定をサポートしていません。"
+
+#: describe.c:3608
+msgid "Role"
+msgstr "ロール"
+
+#: describe.c:3609
+msgid "Database"
+msgstr "データベース"
+
+#: describe.c:3610
+msgid "Settings"
+msgstr "設定"
+
+#: describe.c:3631
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "ロール\"%s\"とデータベース\"%s\"の設定が見つかりませんでした。"
+
+#: describe.c:3634
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "ロール\"%s\"の設定が見つかりませんでした。"
+
+#: describe.c:3637
+#, c-format
+msgid "Did not find any settings."
+msgstr "設定が見つかりませんでした。"
+
+#: describe.c:3642
+msgid "List of settings"
+msgstr "設定一覧"
+
+#: describe.c:3713
+msgid "index"
+msgstr "インデックス"
+
+#: describe.c:3715
+msgid "special"
+msgstr "特殊"
+
+#: describe.c:3718 describe.c:3928
+msgid "partitioned index"
+msgstr "パーティションインデックス"
+
+#: describe.c:3742
+msgid "permanent"
+msgstr "永続"
+
+#: describe.c:3743
+msgid "temporary"
+msgstr "一時"
+
+#: describe.c:3744
+msgid "unlogged"
+msgstr "ログなし"
+
+#: describe.c:3745
+msgid "Persistence"
+msgstr "永続性"
+
+#: describe.c:3841
+msgid "List of relations"
+msgstr "リレーション一覧"
+
+#: describe.c:3889
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "このサーバ(バージョン%s)は宣言的テーブルパーティショニングをサポートしていません。"
+
+#: describe.c:3900
+msgid "List of partitioned indexes"
+msgstr "パーティションインデックスの一覧"
+
+#: describe.c:3902
+msgid "List of partitioned tables"
+msgstr "パーティションテーブルの一覧"
+
+#: describe.c:3906
+msgid "List of partitioned relations"
+msgstr "パーティションリレーションの一覧"
+
+#: describe.c:3937
+msgid "Parent name"
+msgstr "親の名前"
+
+#: describe.c:3950
+msgid "Leaf partition size"
+msgstr "末端パーティションのサイズ"
+
+#: describe.c:3953 describe.c:3959
+msgid "Total size"
+msgstr "トータルサイズ"
+
+#: describe.c:4091
+msgid "Trusted"
+msgstr "信頼済み"
+
+#: describe.c:4099
+msgid "Internal language"
+msgstr "内部言語"
+
+#: describe.c:4100
+msgid "Call handler"
+msgstr "呼び出しハンドラー"
+
+#: describe.c:4101 describe.c:5273
+msgid "Validator"
+msgstr "バリデーター"
+
+#: describe.c:4104
+msgid "Inline handler"
+msgstr "インラインハンドラー"
+
+#: describe.c:4132
+msgid "List of languages"
+msgstr "手続き言語一覧"
+
+#: describe.c:4177
+msgid "Check"
+msgstr "CHECK制約"
+
+#: describe.c:4219
+msgid "List of domains"
+msgstr "ドメイン一覧"
+
+#: describe.c:4253
+msgid "Source"
+msgstr "変換元"
+
+#: describe.c:4254
+msgid "Destination"
+msgstr "変換先"
+
+#: describe.c:4256 describe.c:6097
+msgid "Default?"
+msgstr "デフォルト?"
+
+#: describe.c:4293
+msgid "List of conversions"
+msgstr "符号化方式一覧"
+
+#: describe.c:4332
+msgid "Event"
+msgstr "イベント"
+
+#: describe.c:4334
+msgid "enabled"
+msgstr "有効"
+
+#: describe.c:4335
+msgid "replica"
+msgstr "レプリカ"
+
+#: describe.c:4336
+msgid "always"
+msgstr "常時"
+
+#: describe.c:4337
+msgid "disabled"
+msgstr "無効"
+
+#: describe.c:4338 describe.c:5987
+msgid "Enabled"
+msgstr "有効状態"
+
+#: describe.c:4340
+msgid "Tags"
+msgstr "タグ"
+
+#: describe.c:4359
+msgid "List of event triggers"
+msgstr "イベントトリガー一覧"
+
+#: describe.c:4388
+msgid "Source type"
+msgstr "変換元の型"
+
+#: describe.c:4389
+msgid "Target type"
+msgstr "変換先の型"
+
+#: describe.c:4420
+msgid "in assignment"
+msgstr "代入時のみ"
+
+#: describe.c:4422
+msgid "Implicit?"
+msgstr "暗黙的に適用 ?"
+
+#: describe.c:4477
+msgid "List of casts"
+msgstr "キャスト一覧"
+
+#: describe.c:4505
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "このサーバ(バージョン%s)は照合順序をサポートしていません。"
+
+#: describe.c:4526 describe.c:4530
+msgid "Provider"
+msgstr "プロバイダー"
+
+#: describe.c:4536 describe.c:4541
+msgid "Deterministic?"
+msgstr "確定的?"
+
+#: describe.c:4576
+msgid "List of collations"
+msgstr "照合順序一覧"
+
+#: describe.c:4635
+msgid "List of schemas"
+msgstr "スキーマ一覧"
+
+#: describe.c:4660 describe.c:4907 describe.c:4978 describe.c:5049
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "このサーバ(バージョン%s)は全文検索をサポートしていません。"
+
+#: describe.c:4695
+msgid "List of text search parsers"
+msgstr "テキスト検索用パーサ一覧"
+
+#: describe.c:4740
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "テキスト検索用パーサ\"%s\"が見つかりませんでした。"
+
+#: describe.c:4743
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "テキスト検索パーサが見つかりませんでした。"
+
+#: describe.c:4818
+msgid "Start parse"
+msgstr "パース開始"
+
+#: describe.c:4819
+msgid "Method"
+msgstr "メソッド"
+
+#: describe.c:4823
+msgid "Get next token"
+msgstr "次のトークンを取得"
+
+#: describe.c:4825
+msgid "End parse"
+msgstr "パース終了"
+
+#: describe.c:4827
+msgid "Get headline"
+msgstr "見出しを取得"
+
+#: describe.c:4829
+msgid "Get token types"
+msgstr "トークンタイプを取得"
+
+#: describe.c:4840
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "テキスト検索パーサ\"%s.%s\""
+
+#: describe.c:4843
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "テキスト検索パーサ\"%s\""
+
+#: describe.c:4862
+msgid "Token name"
+msgstr "トークン名"
+
+#: describe.c:4873
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "パーサ\"%s.%s\"のトークンタイプ"
+
+#: describe.c:4876
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "パーサ\"%s\"のトークンタイプ"
+
+#: describe.c:4930
+msgid "Template"
+msgstr "テンプレート"
+
+#: describe.c:4931
+msgid "Init options"
+msgstr "初期化オプション"
+
+#: describe.c:4953
+msgid "List of text search dictionaries"
+msgstr "テキスト検索用辞書一覧"
+
+#: describe.c:4996
+msgid "Init"
+msgstr "初期化"
+
+#: describe.c:4997
+msgid "Lexize"
+msgstr "Lex 処理"
+
+#: describe.c:5024
+msgid "List of text search templates"
+msgstr "テキスト検索テンプレート一覧"
+
+#: describe.c:5084
+msgid "List of text search configurations"
+msgstr "テキスト検索設定一覧"
+
+#: describe.c:5130
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "テキスト検索用設定\"%s\"が見つかりませんでした。"
+
+#: describe.c:5133
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "テキスト検索設定が見つかりませんでした。"
+
+#: describe.c:5199
+msgid "Token"
+msgstr "トークン"
+
+#: describe.c:5200
+msgid "Dictionaries"
+msgstr "辞書"
+
+#: describe.c:5211
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "テキスト検索設定\"%s.%s\""
+
+#: describe.c:5214
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "テキスト検索設定\"%s\""
+
+#: describe.c:5218
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"パーサ: \"%s.%s\""
+
+#: describe.c:5221
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"パーサ: \"%s\""
+
+#: describe.c:5255
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "このサーバ(バージョン%s)は外部データラッパをサポートしていません。"
+
+#: describe.c:5313
+msgid "List of foreign-data wrappers"
+msgstr "外部データラッパ一覧"
+
+#: describe.c:5338
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "このサーバ(バージョン%s)は外部サーバをサポートしていません。"
+
+#: describe.c:5351
+msgid "Foreign-data wrapper"
+msgstr "外部データラッパ"
+
+#: describe.c:5369 describe.c:5574
+msgid "Version"
+msgstr "バージョン"
+
+#: describe.c:5395
+msgid "List of foreign servers"
+msgstr "外部サーバ一覧"
+
+#: describe.c:5420
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "このサーバ(バージョン%s)はユーザマッピングをサポートしていません。"
+
+#: describe.c:5430 describe.c:5494
+msgid "Server"
+msgstr "サーバ"
+
+#: describe.c:5431
+msgid "User name"
+msgstr "ユーザ名"
+
+#: describe.c:5456
+msgid "List of user mappings"
+msgstr "ユーザマッピング一覧"
+
+#: describe.c:5481
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "このサーバ(バージョン%s)は外部テーブルをサポートしていません。"
+
+#: describe.c:5534
+msgid "List of foreign tables"
+msgstr "外部テーブル一覧"
+
+#: describe.c:5559 describe.c:5616
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "このサーバ(バージョン%s)は機能拡張をサポートしていません。"
+
+#: describe.c:5591
+msgid "List of installed extensions"
+msgstr "インストール済みの拡張一覧"
+
+#: describe.c:5644
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "\"%s\"という名前の機能拡張が見つかりませんでした。"
+
+#: describe.c:5647
+#, c-format
+msgid "Did not find any extensions."
+msgstr "機能拡張が見つかりませんでした。"
+
+#: describe.c:5691
+msgid "Object description"
+msgstr "オブジェクトの説明"
+
+#: describe.c:5701
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "機能拡張\"%s\"内のオブジェクト"
+
+#: describe.c:5730 describe.c:5806
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "このサーバ(バージョン%s)はパブリケーションをサポートしていません。"
+
+#: describe.c:5747 describe.c:5884
+msgid "All tables"
+msgstr "全テーブル"
+
+#: describe.c:5748 describe.c:5885
+msgid "Inserts"
+msgstr "Insert文"
+
+#: describe.c:5749 describe.c:5886
+msgid "Updates"
+msgstr "Update文"
+
+#: describe.c:5750 describe.c:5887
+msgid "Deletes"
+msgstr "Delete文"
+
+#: describe.c:5754 describe.c:5889
+msgid "Truncates"
+msgstr "Truncate文"
+
+#: describe.c:5758 describe.c:5891
+msgid "Via root"
+msgstr "最上位パーティションテーブル経由"
+
+#: describe.c:5775
+msgid "List of publications"
+msgstr "パブリケーション一覧"
+
+#: describe.c:5848
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "\"%s\"という名前のパブリケーションが見つかりませんでした。"
+
+#: describe.c:5851
+#, c-format
+msgid "Did not find any publications."
+msgstr "パブリケーションが見つかりませんでした。"
+
+#: describe.c:5880
+#, c-format
+msgid "Publication %s"
+msgstr "パブリケーション %s"
+
+#: describe.c:5928
+msgid "Tables:"
+msgstr "テーブル:"
+
+#: describe.c:5972
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "このサーバ(バージョン%s)はサブスクリプションをサポートしていません。"
+
+#: describe.c:5988
+msgid "Publication"
+msgstr "パブリケーション"
+
+#: describe.c:5996
+msgid "Binary"
+msgstr "バイナリ"
+
+#: describe.c:6001
+msgid "Synchronous commit"
+msgstr "同期コミット"
+
+#: describe.c:6002
+msgid "Conninfo"
+msgstr "接続情報"
+
+#: describe.c:6024
+msgid "List of subscriptions"
+msgstr "サブスクリプション一覧"
+
+#: describe.c:6091 describe.c:6180 describe.c:6266 describe.c:6349
+msgid "AM"
+msgstr "AM"
+
+#: describe.c:6092
+msgid "Input type"
+msgstr "入力の型"
+
+#: describe.c:6093
+msgid "Storage type"
+msgstr "ストレージタイプ"
+
+#: describe.c:6094
+msgid "Operator class"
+msgstr "演算子クラス"
+
+#: describe.c:6106 describe.c:6181 describe.c:6267 describe.c:6350
+msgid "Operator family"
+msgstr "演算子族"
+
+#: describe.c:6139
+msgid "List of operator classes"
+msgstr "演算子クラス一覧"
+
+#: describe.c:6182
+msgid "Applicable types"
+msgstr "適用可能型"
+
+#: describe.c:6221
+msgid "List of operator families"
+msgstr "演算子族一覧"
+
+#: describe.c:6268
+msgid "Operator"
+msgstr "演算子"
+
+#: describe.c:6269
+msgid "Strategy"
+msgstr "ストラテジ"
+
+#: describe.c:6270
+msgid "ordering"
+msgstr "順序付け"
+
+#: describe.c:6271
+msgid "search"
+msgstr "検索"
+
+#: describe.c:6272
+msgid "Purpose"
+msgstr "目的"
+
+#: describe.c:6277
+msgid "Sort opfamily"
+msgstr "ソート演算子族"
+
+#: describe.c:6308
+msgid "List of operators of operator families"
+msgstr "演算子族の演算子一覧"
+
+#: describe.c:6351
+msgid "Registered left type"
+msgstr "登録左辺型"
+
+#: describe.c:6352
+msgid "Registered right type"
+msgstr "登録右辺型"
+
+#: describe.c:6353
+msgid "Number"
+msgstr "番号"
+
+#: describe.c:6389
+msgid "List of support functions of operator families"
+msgstr "演算子族のサポート関数一覧"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql は PostgreSQL の対話型ターミナルです。\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "使い方:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [オプション]... [データベース名 [ユーザ名]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "一般的なオプション:\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=コマンド 単一の(SQLまたは内部)コマンドを一つだけ実行して終了\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr " -d, --dbname=DB名 接続するデータベース名(デフォルト: \"%s\")\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=FILENAME ファイルからコマンドを読み込んで実行後、終了\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l(エル), --list 使用可能なデータベース一覧を表示して終了\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=名前=値\n"
+" psql 変数 '名前' に '値' をセット\n"
+" (例: -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version バージョン情報を表示して終了\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc 初期化ファイル (~/.psqlrc) を読み込まない\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (数字の1), --single-transaction\n"
+" (対話形式でない場合)単一のトランザクションとして実行\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] このヘルプを表示して終了\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands バックスラッシュコマンドの一覧を表示して終了\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables 特殊変数の一覧を表示して終了\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"入出力オプション:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all スクリプトから読み込んだ入力をすべて表示\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors 失敗したコマンドを表示\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries サーバへ送信したコマンドを表示\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden 内部コマンドが生成した問い合わせを表示\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=FILENAME セッションログをファイルに書き込む\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline 拡張コマンドライン編集機能(readline)を無効にする\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=FILENAME 問い合わせの結果をファイル (または |パイプ)に送る\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet 静かに実行 (メッセージなしで、問い合わせの出力のみ)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step シングルステップモード (各問い合わせごとに確認)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line 単一行モード (行末でSQLコマンドを終端)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"出力フォーマットのオプション\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align 桁揃えなしのテーブル出力モード\n"
+
+#: help.c:111
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv CSV(カンマ区切り)テーブル出力モード\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=文字列\n"
+" 桁揃えなし出力時のフィールド区切り文字\n"
+" (デフォルト: \"%s\")\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html HTML テーブル出力モード\n"
+
+#: help.c:116
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr ""
+" -P, --pset=変数[=値] 表示オプション '変数' を '値' にセット\n"
+" (\\pset コマンドを参照)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=文字列\n"
+" 桁揃えなし出力におけるレコード区切り文字\n"
+" (デフォルト: 改行)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only 行のみを表示\n"
+
+#: help.c:120
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr " -T, --table-attr=TEXT HTMLテーブルのタグ属性をセット (width, border等)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded 拡張テーブル出力に切り替える\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" 桁揃えなし出力のフィールド区切りをバイト値の0に設定\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" 桁揃えなし出力のレコード区切りをバイト値の0に設定\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"接続オプション:\n"
+
+#: help.c:130
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr ""
+" -h, --host=HOSTNAME データベースサーバのホストまたはソケットの\n"
+" ディレクトリ(デフォルト: \"%s\")\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "ローカルソケット"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORT データベースサーバのポート番号(デフォルト: \"%s\")\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=USERNAME データベースのユーザ名 (デフォルト: \"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password パスワード入力を要求しない\n"
+
+#: help.c:142
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr " -W, --password パスワードプロンプトの強制表示(本来は自動的に表示)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"詳細はpsqlの中で\"\\?\"(内部コマンドの場合)または\"\\help\"(SQLコマンドの場合)\n"
+"をタイプするか、またはPostgreSQLドキュメント中のpsqlのセクションを参照のこと。\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "バグは<%s>に報告してください。\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s ホームページ: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "一般\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright PostgreSQL の使い方と配布条件を表示\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [列] 問い合わせを実行し、結果をクロス表形式で出力\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose 最後のエラーメッセージを最大の冗長性で表示\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(OPTIONS)] [FILE] 問い合わせ実行 (と結果のファイルまたは |パイプ への\n"
+" 送出);\n"
+" \\g に引数を付加しない場合はセミコロンと同義\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc 問い合わせを実行せずに結果の説明を行う\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec 問い合わせを実行し、結果の中の個々の値を実行\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] 問い合わせを実行して結果を psql 変数に格納\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [ファイル名] \\g と同じ、ただし拡張出力モードを強制\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q psql を終了する\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [秒数] 指定した秒数ごとに問い合わせを実行\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "ヘルプ\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [コマンド] バックスラッシュコマンドのヘルプを表示\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? オプション psql のコマンドライン・オプションのヘルプを表示\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? 変数名 特殊変数のヘルプを表示\n"
+
+#: help.c:193
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr " \\h [名前] SQLコマンドの文法ヘルプの表示。* で全コマンドを表示\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "問い合わせバッファ\n"
+
+#: help.c:197
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr ""
+" \\e [ファイル] [行番号] 現在の問い合わせバッファ(やファイル)を外部エディタで\n"
+" 編集\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [関数名 [行番号]] 関数定義を外部エディタで編集\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [ビュー名 [行番号]] ビュー定義を外部エディタで編集\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p 問い合わせバッファの内容を表示\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r 問い合わせバッファをリセット(クリア)\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [ファイル] ヒストリを表示またはファイルに保存\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w ファイル 問い合わせバッファの内容をファイルに保存\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "入出力\n"
+
+#: help.c:209
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr ""
+" \\copy ... クライアントホストに対し、データストリームを使って\n"
+" SQL COPYを実行\n"
+
+#: help.c:210
+#, c-format
+msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"
+msgstr " \\echo [-n] [文字列] 文字列を標準出力に書き込む (-n で改行しない)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i ファイル ファイルからコマンドを読み込んで実行\n"
+
+#: help.c:212
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr ""
+" \\ir ファイル \\i と同じ。ただし現在のスクリプトの場所からの相対パス\n"
+" で指定\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [ファイル] 問い合わせ結果をすべてファイルまたは |パイプ へ送出\n"
+
+#: help.c:214
+#, c-format
+msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"
+msgstr ""
+" \\qecho [-n] [文字列] 文字列を\\oで指定した出力ストリームに書き込む(-n で改行\n"
+" しない)\n"
+
+#: help.c:215
+#, c-format
+msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"
+msgstr " \\warn [-n] [文字列] 文字列を標準エラー出力に書き込む (-n で改行しない)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "条件分岐\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR 条件分岐ブロックの開始\n"
+
+#: help.c:220
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR 現在の条件分岐ブロック内の選択肢\n"
+
+#: help.c:221
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else 現在の条件分岐ブロックにおける最後の選択肢\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif 条件分岐ブロックの終了\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "情報表示\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (オプション:S = システムオブジェクトを表示, + = 詳細表示)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] テーブル、ビュー、およびシーケンスの一覧を表示\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] 名前 テーブル、ビュー、シーケンス、またはインデックスの説明を表示\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [パターン] 集約関数の一覧を表示\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [パターン] アクセスメソッドの一覧を表示\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] 演算子クラスの一覧を表示\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] 演算子族の一覧を表示\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] 演算子族の演算子の一覧を表示\n"
+
+#: help.c:234
+#, c-format
+msgid " \\dAp [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr " \\dAp [AMPTRN [OPFPTRN]] 演算子族のサポート関数の一覧を表示\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [パターン] テーブル空間の一覧を表示\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [パターン] 符号化方式間の変換の一覧を表示\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [パターン] キャストの一覧を表示します。\n"
+
+#: help.c:238
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [パターン] 他では表示されないオブジェクトの説明を表示\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [パターン] ドメインの一覧を表示\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [パターン] デフォルト権限の一覧を表示\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [パターン] 外部テーブルの一覧を表示\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [パターン] 外部テーブルの一覧を表示\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [パターン] 外部サーバの一覧を表示\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [パターン] ユーザマッピングの一覧を表示\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [パターン] 外部データラッパの一覧を表示\n"
+
+#: help.c:246
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr ""
+" \\df[antw][S+] [パターン] 関数(集約/通常/プロシージャ/トリガー/ウィンドウ\n"
+" 関数のみ)の一覧を表示\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [パターン] テキスト検索設定の一覧を表示\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [パターン] テキスト検索辞書の一覧を表示\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [パターン] テキスト検索パーサの一覧を表示\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [パターン] テキスト検索テンプレートの一覧を表示\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [パターン] ロールの一覧を表示\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [パターン] インデックスの一覧を表示\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl ラージオブジェクトの一覧を表示、\\lo_list と同じ\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [パターン] 手続き言語の一覧を表示\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [パターン] 実体化ビューの一覧を表示\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [パターン] スキーマの一覧を表示\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [名前] 演算子の一覧を表示\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [パターン] 照合順序の一覧を表示\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [パターン] テーブル、ビュー、シーケンスのアクセス権の一覧を表示\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"
+msgstr ""
+" \\dP[itn+] [パターン] パーティションリレーション[テーブル/インデックスのみ]\n"
+" の一覧を表示 [n=入れ子]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [パターン1 [パターン2]] データベース毎のロール設定の一覧を表示\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [パターン] レプリケーションのパブリケーションの一覧を表示\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [パターン] レプリケーションのサブスクリプションの一覧を表示\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [パターン] シーケンスの一覧を表示\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [パターン] テーブルの一覧を表示\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [パターン] データ型の一覧を表示\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [パターン] ロールの一覧を表示\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [パターン] ビューの一覧を表示\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [パターン] 機能拡張の一覧を表示\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [パターン] イベントトリガーの一覧を表示\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [パターン] データベースの一覧を表示\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] 関数名 関数の定義を表示\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] ビュー名 ビューの定義を表示\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [パターン] \\dp と同じ\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "書式設定\n"
+
+#: help.c:278
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a 非整列と整列間の出力モードの切り替え\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [文字列] テーブルのタイトルを設定、値がなければ削除\n"
+
+#: help.c:280
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr ""
+" \\f [文字列] 問い合わせ結果の非整列出力時のフィールド区切り文字を\n"
+" 表示または設定\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H HTML出力モードの切り替え (現在値: %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [名前 [値]] テーブル出力のオプション設定\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] 結果行のみ表示 (現在値: %s)\n"
+
+#: help.c:292
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [文字列] HTMLの<table>タグ属性の設定、値がなければ解除\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] 拡張出力の切り替え (現在値: %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "接続\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[DB名|- ユーザ名|- ホスト名|- ポート番号|-] | 接続文字列}\n"
+" 新しいデータベースに接続 (現在: \"%s\")\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[DB名|- ユーザ名|- ホスト名|- ポート番号|-] | 接続文字列}\n"
+" 新しいデータベースに接続 (現在: 未接続)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo 現在の接続に関する情報を表示\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [エンコーディング] クライアントのエンコーディングを表示または設定\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [ユーザ名] ユーザのパスワードを安全に変更\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "オペレーティングシステム\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [DIR] カレントディレクトリを変更\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv 名前 [値] 環境変数を設定または解除\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] コマンドの実行時間表示の切り替え (現在値: %s)\n"
+
+#: help.c:315
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr ""
+" \\! [コマンド] シェルでコマンドを実行するか、もしくは対話型シェルを\n"
+" 起動します。\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "変数\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [テキスト] 変数名 ユーザに対して内部変数の設定を要求します\n"
+
+#: help.c:320
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr " \\set [変数名 [値]] 内部変数の値を設定、パラメータがなければ一覧を表示\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset 変数名 内部変数を削除\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "ラージ・オブジェクト\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID ファイル名\n"
+" \\lo_import ファイル名 [コメント]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID ラージオブジェクトの操作\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"特別に扱われる変数の一覧\n"
+"\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "psql変数:\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=名前=値\n"
+" またはpsql内で \\set 名前 値\n"
+"\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" セットされている場合、SQLコマンドが成功した際に自動的にコミット\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" SQLキーワードの補完に使う文字ケースを指定\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" 現在接続中のデータベース名\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" どの入力を標準出力への出力対象とするかを設定\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" セットされていれば、バックスラッシュコマンドで実行される内部問い合わせを\n"
+" 表示; \"noexec\"を設定した場合は実行せずに表示のみ\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" 現在のクライアント側の文字セットのエンコーディング\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" 最後の問い合わせが失敗であれば真、そうでなければ偽\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" 一度に取得および表示する結果の行数 (0 = 無制限)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" 設定すると、テーブルアクセスメソッドは表示されない\n"
+"\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" コマンド履歴の制御 [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" コマンド履歴を保存するファイルの名前\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" コマンド履歴で保存するコマンド数の上限\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" 現在接続中のデータベースサーバホスト\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" 対話形セッションを終わらせるのに必要なEOFの数\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" 最後の変更の影響を受けたOID\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" 最後のエラーのメッセージおよび SQLSTATE、\n"
+" なにもなければ空の文字列および\"00000\"\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" セットされている場合、エラーでトランザクションを停止しない (暗黙のセーブ\n"
+" ポイントを使用)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" エラー発生後にバッチ実行を停止\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" 現在の接続のサーバポート\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" psql の標準のプロンプトを指定\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" ステートメントが前行から継続する場合のプロンプトを指定\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" COPY ... FROM STDIN の最中に使われるプロンプトを指定\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" メッセージを表示しない (-q オプションと同じ)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" 最後の問い合わせで返却した、または影響を与えた行の数、または0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" サーバのバージョン(短い文字列または数値)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" メッセージコンテキストフィールドの表示を制御 [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" セットした場合、改行はSQLコマンドを終端する (-S オプションと同じ)\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" シングルステップモード (-s オプションと同じ)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" 最後の問い合わせの SQLSTATE、またはエラーでなければ\"00000\"\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" 現在接続中のデータベースユーザ\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" エラー報告の詳細度を制御 [default, verbose, terse, sqlstate]\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql のバージョン(長い文字列、短い文字列または数値)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"表示設定:\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=名前[=値]\n"
+" またはpsql内で \\pset 名前 [値]\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" 境界線のスタイル (番号)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" 折り返し形式で目標とする横幅\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (or x)\n"
+" 拡張出力 [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" 非整列出力でのフィールド区切り文字(デフォルトは \"%s\")\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" 非整列出力でのフィールド区切り文字をバイト値の0に設定\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" テーブルフッター出力の要否を設定 [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" 出力フォーマットを設定 [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" 境界線の描画スタイルを設定 [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" null 値の代わりに表示する文字列を設定\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" ロケール固有文字での桁区切りを表示するかどうかを指定\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" いつ外部ページャーを使うかを制御 [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" 非整列出力でのレコード(行)区切り\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" 非整列出力でレコード区切りにバイト値の0に設定\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (or T)\n"
+" HTMLフォーマット時のtableタグの属性、もしくは latex-longtable\n"
+" フォーマット時に左寄せするデータ型の相対カラム幅を指定\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" 以降に表示される表のタイトルを設定\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" セットされた場合、実際のテーブルデータのみを表示\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" Unicode による線描画時のスタイルを設定 [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"環境変数:\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" 名前=値 [名前=値] psql ...\n"
+" またはpsql内で \\setenv 名前 [値]\n"
+"\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set 名前=値\n"
+" psql ...\n"
+" またはpsq内で \\setenv 名前 [値]\n"
+"\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" 折り返し書式におけるカラム数\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" application_name 接続パラメータと同じ\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" dbname 接続パラメータと同じ\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" host 接続パラメータと同じ\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" 接続用パスワード (推奨されません)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" パスワードファイル名\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" port 接続パラメータと同じ\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" user 接続パラメータと同じ\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" \\e, \\ef, \\ev コマンドで使われるエディタ\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" エディタの起動時に行番号を指定する方法\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" コマンドライン履歴ファイルの代替の場所\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" 外部ページャープログラムの名前\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" ユーザの .psqlrc ファイルの代替の場所\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" \\! コマンドで使われるシェル\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" テンポラリファイル用ディレクトリ\n"
+
+#: help.c:554
+msgid "Available help:\n"
+msgstr "利用可能なヘルプ:\n"
+
+#: help.c:642
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"コマンド: %s\n"
+"説明: %s\n"
+"書式:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:661
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"\"%s\"のヘルプがありません。\n"
+"引数なしで \\h とタイプすると、ヘルプの一覧が表示されます。\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "入力ファイルから読み込めませんでした: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "ファイル\"%s\"にヒストリーを保存できませんでした: %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "この環境ではヒストリー機能がサポートされていません"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: データベースに接続していません"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: 現在のトランザクションは中断されました"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: 未知のトランザクション状態"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "ラージ オブジェクト"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: 脱出しました"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "\"\\q\"で%sを抜けます。\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"この入力データは PostgreSQL のカスタムフォーマットのダンプです。\n"
+"このダンプをデータベースにリストアするには pg_restore コマンドを使ってください。\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "\\? でヘルプの表示、control-C で入力バッファをクリアします。"
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr " \\? でヘルプを表示します。"
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "PostgreSQL へのコマンド ライン インターフェイス、psql を使用しています。"
+
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"ヒント: \\copyright とタイプすると、配布条件を表示します。\n"
+" \\h とタイプすると、SQLコマンドのヘルプを表示します。\n"
+" \\? とタイプすると、psqlコマンドのヘルプを表示します。\n"
+" \\g と打つかセミコロンで閉じると、問い合わせを実行します。\n"
+" \\q で終了します。\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "\\q で終了します。"
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "control-D で終了します。"
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "control-C で終了します。"
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "問い合わせは無視されました; \\endifかCtrl-Cで現在の\\ifブロックを抜けてください"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "ブロックを閉じる\\endifを検出中に、ファイルの終端(EOF)に達しました"
+
+#: psqlscan.l:693
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "変数\"%s\"の再帰展開をスキップしています"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "文字列の引用符が閉じていません"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: メモリ不足です"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "名前"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "集約関数のシグニチャー"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "新しい名前"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "新しい所有者"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "新しいスキーマ"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "集約関数のシグニチャーには以下のものがあります:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "引数のモード"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "引数の名前"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "引数の型"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "オプション"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "オプションには以下のものがあります:"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "接続の可否(真偽値)"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "最大同時接続数"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "テンプレートかどうか(真偽値)"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "新しいテーブル空間名"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "設定パラメータ"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "値"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "対象のロール"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "スキーマ名"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "GRANT/REVOKEの省略形"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "GRANT/REVOKEの省略形は以下のいずれかです:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "ロール名"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "評価式"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "ドメイン制約"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "制約名"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "新しい制約名"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "新しいバージョン"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "メンバーオブジェクト"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "メンバーオブジェクトは以下の通りです:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "オブジェクト名"
+
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "集約関数名"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "変換前の型"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "変換後の型"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "関数名"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "演算子名"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "左辺の型"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "右辺の型"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "インデックスメソッド"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "プロシージャ名"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "ルーチン名"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "型名"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "言語名"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "集約関数のシグニチャーは以下の通りです:"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "ハンドラー関数"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "バリデーター関数"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "アクション"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "列名"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "新しい列名"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "アクションは以下のいずれかです:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "データ型"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "照合順序"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "カラム制約"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "整数"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "属性オプション"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "テーブル制約"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "トリガー名"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "親テーブル"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "拡張名"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "実行コスト"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "結果の行数"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "サポート関数"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "ロールの指定"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "ユーザ名"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "ロール指定は以下の通りです:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "グループ名"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "テーブル空間名"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "インデックス名"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "ストレージパラメータ"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "列番号"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "ラージオブジェクトのOID"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr "制約選択評価関数"
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr "結合選択評価関数"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "戦略番号"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "演算子の型"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr "ソートファミリー名"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr "サポート番号"
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "引数の型"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "テーブル名"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr "USING表現"
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "CHECK表現"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "パブリケーションパラメータ"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "パスワード"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr "タイムスタンプ"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "データベース名"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr "増分値"
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "最小値"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "最大値"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "開始番号"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "再開始番号"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "キャッシュ割り当て数"
+
+#: sql_help.c:1097
+msgid "new_target"
+msgstr "新しいターゲット"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "接続文字列"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "パブリケーション名"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "{SET PUBLICATION の追加オプション}"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "{REFRESH PUBLICATION の追加オプション}"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "{SUBSCRIPTION パラメータ名}"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "パーティション名"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "パーティション境界の仕様"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "シーケンスオプション"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "シーケンスオプション"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr "インデックスを使うテーブルの制約"
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr "書き換えルール名"
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr "パーティション境界の仕様は以下の通りです:"
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "パーティション境界式"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr "数値定数"
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "そしてカラム制約は以下の通りです:"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "デフォルト表現"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr "生成式"
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "インデックスパラメータ"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "参照テーブル"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "参照列"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "参照動作"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "テーブル制約は以下の通りです:"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr "除外対象要素"
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "演算子"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "インデックスの述語"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr "テーブル制約は以下の通りです:"
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "UNIQUE, PRIMARY KEY, EXCLUDE 制約のインデックスパラメータは以下の通りです:"
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "EXCLUDE 制約の除外対象要素は以下の通りです:"
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "演算子クラス"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "テーブル空間のオプション"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "トークンの型"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "辞書名"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "元の辞書"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "新しい辞書"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "属性名"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "新しい属性名"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr "新しい列挙値"
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr "隣接した列挙値"
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr "既存の列挙値"
+
+#: sql_help.c:1537
+msgid "property"
+msgstr "プロパティ"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "サーバ名"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "ビューのオプション名"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr "ビューオプションの値"
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "テーブルおよび列"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "オプションには以下のうちのいずれかを指定します:"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr "真偽値"
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "そしてテーブルと列の指定は以下の通りです:"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "トランザクションのモード"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "トランザクションのモードは以下の通りです:"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "引数"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "リレーション名"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "ドメイン名"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "ポリシー名"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "ルール名"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr "コメント文字列"
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "トランザクションID"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "ファイル名"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "コマンド"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "条件"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "問い合わせ"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "フォーマット名"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "区切り文字"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "NULL文字列"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "引用符文字"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "エスケープ文字"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "エンコーディング名"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr "アクセスメソッドの型"
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "入力データ型"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr "状態遷移関数"
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr "状態データの型"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr "状態データのサイズ"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr "終了関数"
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr "結合関数"
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr "シリアライズ関数"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr "デシリアライズ関数"
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr "初期条件"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr "前方状態遷移関数"
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr "逆状態遷移関数"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr "移動集約モード時の状態値のデータ型"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr "移動集約モード時の状態値のデータサイズ"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr "移動集約モード時の終了関数"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr "移動集約モード時の初期条件"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "ソート演算子"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "または古い構文"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "基本の型"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "ロケール"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "照合順序"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "Ctype(変換演算子)"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "プロバイダ"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "バージョン"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr "既存の照合順序"
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "変換元のエンコーディング"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "変換先のエンコーディング"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "テンプレート"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "エンコード"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "制約条件"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "制約条件は以下の通りです:"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "イベント"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr "フィルター変数"
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "カラム制約は以下の通りです:"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr "戻り値の型"
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr "列の型"
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "定義"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "オブジェクトファイル名"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "リンクシンボル"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr "UID"
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "インデックスメソッド"
+
+#: sql_help.c:2371
+msgid "opclass_parameter"
+msgstr "演算子クラスパラメータ"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr "呼び出しハンドラー"
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr "インラインハンドラー"
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "バリデーション関数"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr "交代演算子"
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr "否定演算子"
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr "演算子族の名前"
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "ストレージタイプ"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "イベントは以下のいずれかです:"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr "スキーマ要素"
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "サーバのタイプ"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "サーバのバージョン"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "外部データラッパ名"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "統計オブジェクト名"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "統計種別"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "サブスクリプション名"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "コピー元のテーブル"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "LIKEオプション"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr "LIKE オプションは以下の通りです:"
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "ディレクトリ"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "パーサ名"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "複製元の設定"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "開始関数"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "トークン取得関数"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "終了関数"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "LEXTYPE関数"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "見出し関数"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "初期処理関数"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "LEXIZE関数"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr "{FROM SQL 関数名}"
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr "{TO SQL 関数名}"
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr "被参照テーブル名"
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "移行用リレーション名"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "引数"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr "ラベル"
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr "当該範囲のデータ型"
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr "当該範囲のデータ型の演算子クラス"
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr "正規化関数"
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr "当該範囲のデータ型の差分抽出関数"
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "入力関数"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "出力関数"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "受信関数"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "送信関数"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr "型修飾子の入力関数"
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr "型修飾子の出力関数"
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "分析関数"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr "内部長"
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "バイト境界"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "ストレージ"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr "LIKEの型"
+
+#: sql_help.c:3065
+msgid "category"
+msgstr "カテゴリー"
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr "優先データ型かどうか(真偽値)"
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "デフォルト"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "要素のデータ型"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "区切り記号"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr "照合可能"
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr "WITH問い合わせ"
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "エイリアス"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr "FROM項目"
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "カーソル名"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "出力表現"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr "出力名"
+
+#: sql_help.c:3190
+msgid "code"
+msgstr "コードブロック"
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "パラメータ"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "ステートメント"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "取り出す方向と行数"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "取り出す方向と行数は無指定もしくは以下のいずれかです:"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "取り出す位置や行数"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "シーケンス名"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "引数名"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "引数の型"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr "ラージオブジェクトid"
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "リモートスキーマ"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "ローカルスキーマ"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr "競合ターゲット"
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr "競合時アクション"
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "競合ターゲットは以下のいずれかです:"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "インデックスのカラム名"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "インデックス表現"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr "インデックスの述語"
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "競合時アクションは以下のいずれかです:"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr "副問い合わせ句"
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr "チャネル"
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr "ロックモード"
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "ロックモードは以下のいずれかです:"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr "ペイロード"
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "元のロール"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "新しいロール"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "セーブポイント名"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr "グルーピング要素"
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "ウィンドウ名"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "ウィンドウ定義"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr "SELECT句"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr "FROM項目は以下のいずれかです:"
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "行エイリアス"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "サンプリングメソッド"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr "乱数シード"
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr "WITH問い合わせ名"
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "カラム定義"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr "JOINタイプ"
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr "JOIN条件"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr "JOINカラム"
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr "グルーピング要素は以下のいずれかです:"
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr "WITH問い合わせは以下のいずれかです:"
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "VALUES句"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr "INSERT句"
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr "UPDATE句"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr "DELETE句"
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "新しいテーブル"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr "タイムゾーン"
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr "スナップショットID"
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr "ソート表現"
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "現在のトランザクションを中止します"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "集約関数の定義を変更します。"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "照合順序の定義を変更します。"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "エンコーディング変換ルールの定義を変更します。"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "データベースを変更します。"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "デフォルトのアクセス権限を定義します。"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "ドメインの定義を変更します。"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "イベントトリガーの定義を変更します。"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "拡張の定義を変更します。"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "外部データラッパの定義を変更します。"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "外部テーブルの定義を変更します。"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "関数の定義を変更します。"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "ロール名またはメンバーシップを変更します。"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "インデックスの定義を変更します。"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "手続き言語の定義を変更します。"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "ラージオブジェクトの定義を変更します。"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "マテリアライズドビューの定義を変更します。"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "演算子の定義を変更します。"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "演算子クラスの定義を変更します。"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "演算子族の定義を変更します。"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "行レベルのセキュリティ ポリシーの定義を変更します。"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "プロシージャの定義を変更します"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "パブリケーションの定義を変更します。"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "データベースロールを変更します。"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "ルーチンの定義を変更します。"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "ルールの定義を変更します。"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "スキーマの定義を変更します。"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "シーケンスジェネレーターの定義を変更します。"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "外部サーバの定義を変更します。"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "拡張統計情報オブジェクトの定義を変更します。"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "サブスクリプションの定義を変更します。"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "サーバの構成パラメータを変更します。"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "テーブルの定義を変更します。"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "テーブル空間の定義を変更します。"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "テキスト検索設定の定義を変更します。"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "テキスト検索辞書の定義を変更します。"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "テキスト検索パーサの定義を変更します。"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "テキスト検索テンプレートの定義を変更します。"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "トリガーの定義を変更します。"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "型の定義を変更します。"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "ユーザマッピングの定義を変更します。"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "ビューの定義を変更します。"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "データベースの統計情報を収集します。"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "トランザクションブロックを開始します。"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "プロシージャを実行します"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "先行書き込みログのチェックポイントを強制的に実行します。"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "カーソルを閉じます。"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "インデックスに従ってテーブルをクラスタ化します。"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "オブジェクトのコメントを定義または変更します。"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "現在のトランザクションをコミットします。"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "二相コミットのために事前に準備されたトランザクションをコミットします。"
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "ファイルとテーブル間でデータをコピーします。"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "新しいアクセスメソッドを定義します。"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "新しい集約関数を定義します。"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "新しいキャストを定義します。"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "新しい照合順序を定義します。"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "新しいエンコーディングの変換ルールを定義します。"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "新しいデータベースを作成します。"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "新しいドメインを定義します。"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "新しいイベントトリガーを定義します。"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "拡張をインストールします。"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "新しい外部データラッパを定義します。"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "新しい外部テーブルを定義します。"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "新しい関数を定義します。"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "新しいデータベースロールを定義します。"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "新しいインデックスを定義します。"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "新しい手続き言語を定義します。"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "新しいマテリアライズドビューを定義します。"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "新しい演算子を定義します。"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "新しい演算子クラスを定義します。"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "新しい演算子族を定義します。"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "テーブルに対して新しい行レベルのセキュリティポリシーを定義します。"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "新しいプロシージャを定義します"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "新しいパブリケーションを定義します。"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "新しい書き換えルールを定義します。"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "新しいスキーマを定義します。"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "新しいシーケンスジェネレーターを定義します。"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "新しい外部サーバを定義します。"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "拡張統計情報を定義します。"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "新しいサブスクリプションを定義します。"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "新しいテーブルを定義します。"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "問い合わせの結果から新しいテーブルを定義します。"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "新しいテーブル空間を定義します。"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "新しいテキスト検索設定を定義します。"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "新しいテキスト検索辞書を定義します。"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "新しいテキスト検索パーサを定義します。"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "新しいテキスト検索テンプレートを定義します。"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "新しい変換を定義します。"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "新しいトリガーを定義します。"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "新しいデータ型を定義します。"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "外部サーバに対するユーザの新しいマッピングを定義します。"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "新しいビューを定義します。"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "プリペアドステートメントを開放します。"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "カーソルを定義します。"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "テーブルの行を削除します。"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "セッション状態を破棄します。"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "無名コードブロックを実行します。"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "アクセスメソッドを削除します。"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "集約関数を削除します。"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "キャストを削除します。"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "照合順序を削除します。"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "符号化方式変換を削除します。"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "データベースを削除します。"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "ドメインを削除します。"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "イベントトリガーを削除します。"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "拡張を削除します。"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "外部データラッパを削除します。"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "外部テーブルを削除します。"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "関数を削除します。"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "データベースロールを削除します。"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "インデックスを削除します。"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "手続き言語を削除します。"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "マテリアライズドビューを削除します。"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "演算子を削除します。"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "演算子クラスを削除します。"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "演算子族を削除します。"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "データベースロールが所有するデータベースオブジェクトを削除します。"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "テーブルから行レベルのセキュリティポリシーを削除します。"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "プロシージャを削除します。"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "パブリケーションを削除します。"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "ルーチンを削除します。"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "書き換えルールを削除します。"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "スキーマを削除します。"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "シーケンスを削除します。"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "外部サーバ記述子を削除します。"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "拡張統計情報を削除します。"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "サブスクリプションを削除します。"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "テーブルを削除します。"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "テーブル空間を削除します。"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "テキスト検索設定を削除します。"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "テキスト検索辞書を削除します。"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "テキスト検索パーサを削除します。"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "テキスト検索テンプレートを削除します。"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "自動変換ルールを削除します。"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "トリガーを削除します。"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "データ型を削除します。"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "外部サーバのユーザマッピングを削除します。"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "ビューを削除します。"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "プリペアドステートメントを実行します。"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "ステートメントの実行計画を表示します。"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "カーソルを使って問い合わせから行を取り出します。"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "アクセス権限を定義します。"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "外部サーバからテーブル定義をインポートします。"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "テーブルに新しい行を作成します。"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "通知メッセージを監視します。"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "共有ライブラリファイルをロードします。"
+
+#: sql_help.c:5725
+msgid "lock a table"
+msgstr "テーブルをロックします。"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "カーソルを位置づけます。"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "通知を生成します。"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "実行に備えてステートメントを準備します。"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "二相コミットに備えて現在のトランザクションを準備します。"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "データベースロールが所有するデータベースオブジェクトの所有権を変更します。"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "マテリアライズドビューの内容を置き換えます。"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "インデックスを再構築します。"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "以前に定義されたセーブポイントを破棄します。"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "実行時パラメータの値をデフォルト値に戻します。"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "アクセス特権を削除します。"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "二相コミットのために事前に準備されたトランザクションをキャンセルします。"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "セーブポイントまでロールバックします。"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "現在のトランザクション内で新しいセーブポイントを定義します。"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "オブジェクトに適用されるセキュリティラベルを定義または変更します。"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "テーブルまたはビューから行を取得します。"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "実行時のパラメータを変更します。"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "現在のトランザクションについて、制約チェックのタイミングを設定します。"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "現在のセッションの現在のユーザ識別子を設定します。"
+
+#: sql_help.c:5851
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "セッションのユーザ識別子および現在のセッションの現在のユーザ識別子を設定します。"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "現在のトランザクションの特性を設定します。"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "実行時パラメータの値を表示します。"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "テーブルもしくはテーブルセットを0件に切り詰めます。"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "通知メッセージの監視を中止します。"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "テーブルの行を更新します。"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "ガーベッジコレクションを行い、また必要に応じてデータベースを分析します。"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "行セットを計算します。"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 は非対話モード時でのみ使用可能です"
+
+#: startup.c:299
+#, c-format
+msgid "could not connect to server: %s"
+msgstr "サーバに接続できませんでした: %s"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "ロックファイル\"%s\"をオープンできませんでした: %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"\"help\"でヘルプを表示します。\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "表示パラメータ\"%s\"を設定できませんでした"
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "詳細は\"%s --help\"をごらんください。\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "余分なコマンドライン引数\"%s\"は無視されました"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "実行可能ファイルが見つかりませんでした"
+
+#: tab-complete.c:4672
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"タブ補完の問い合わせに失敗しました: %s\n"
+"問い合わせ:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "\"%2$s\"の値\"%1$s\"が認識できません: 真偽値を指定してください"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "\"%2$s\"の値\"%1$s\"が不正です: 整数を指定してください"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "変数名が不正です: \"%s\""
+
+#: variables.c:393
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"\"%2$s\"の値\"%1$s\"が認識できません。\n"
+"有効な値は %3$s。"
+
+#~ msgid "could not identify current directory: %s"
+#~ msgstr "カレントディレクトリを特定できませんでした: %s"
+
+#~ msgid "could not change directory to \"%s\": %s"
+#~ msgstr "ディレクトリ\"%s\"に移動できませんでした: %s"
+
+#~ msgid "could not read symbolic link \"%s\""
+#~ msgstr "シンボリックリンク\"%s\"を読み取ることができませんでした"
+
+#~ msgid "pclose failed: %s"
+#~ msgstr "pcloseが失敗しました: %s"
+
+#~ msgid "child process was terminated by signal %s"
+#~ msgstr "子プロセスがシグナル %s で強制終了しました"
+
+#~ msgid "child process was terminated by signal %d"
+#~ msgstr "子プロセスがシグナル %d で強制終了しました"
+
+#~ msgid "Invalid command \\%s. Try \\? for help.\n"
+#~ msgstr "\\%s は無効なコマンドです。\\? でヘルプを参照してください。\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
+
+#~ msgid "could not open temporary file \"%s\": %s\n"
+#~ msgstr "一時ファイル\"%s\"を開けませんでした: %s\n"
+
+#~ msgid "could not execute command \"%s\": %s\n"
+#~ msgstr "コマンド\"%s\"を実行できませんでした: %s\n"
+
+#~ msgid "could not stat file \"%s\": %s\n"
+#~ msgstr "ファイル\"%s\"をstatできませんでした: %s\n"
+
+#~ msgid "could not close pipe to external command: %s\n"
+#~ msgstr "外部コマンドへのパイプを閉じることができませんでした: %s\n"
+
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid "unterminated quoted string\n"
+#~ msgstr "文字列の引用符が閉じていません。\n"
+
+#~ msgid "string_literal"
+#~ msgstr "文字列定数"
+
+#~ msgid "%s: could not open log file \"%s\": %s\n"
+#~ msgstr "%s: ログファイル\"%s\"を開くことができませんでした: %s\n"
+
+#~ msgid "attribute"
+#~ msgstr "属性"
+
+#~ msgid " VERSION_NUM psql's version (numeric format)\n"
+#~ msgstr " VERSION_NUM psql のバージョン (数値フォーマット)\n"
+
+#~ msgid " VERSION_NAME psql's version (short string)\n"
+#~ msgstr " VERSION_NAME psql のバージョン (短い文字列)\n"
+
+#~ msgid " VERSION psql's version (verbose string)\n"
+#~ msgstr " VERSION psql のバージョン (詳細な文字列)\n"
+
+#~ msgid " SERVER_VERSION_NAME server's version (short string)\n"
+#~ msgstr " SERVER_VERSION_NAME サーバのバージョン名 (短い文字列)\n"
+
+#~ msgid "normal"
+#~ msgstr "通常"
+
+#~ msgid "Procedure"
+#~ msgstr "プロシージャー名"
+
+#~ msgid "from_list"
+#~ msgstr "FROMリスト"
+
+#~ msgid "using_list"
+#~ msgstr "USINGリスト"
+
+#~ msgid "old_version"
+#~ msgstr "旧バージョン"
+
+#~ msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n"
+#~ msgstr " \\g [ファイル] または ; 問い合わせを実行(し、結果をファイルまたは |パイプ へ出力)します。\n"
diff --git a/src/bin/psql/po/ko.po b/src/bin/psql/po/ko.po
new file mode 100644
index 0000000..3d3da97
--- /dev/null
+++ b/src/bin/psql/po/ko.po
@@ -0,0 +1,6545 @@
+# Korean message translation file for psql
+# Ioseph Kim. <ioseph@uri.sarang.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psql (PostgreSQL) 13\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-10-12 22:13+0000\n"
+"PO-Revision-Date: 2020-10-27 14:28+0900\n"
+"Last-Translator: Ioseph Kim <ioseph@uri.sarang.net>\n"
+"Language-Team: Korean <kr@postgresql.org>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "심각: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "오류: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "경고: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "현재 디렉터리가 무엇인지 모르겠음: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "잘못된 바이너리 파일: \"%s\""
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "\"%s\" 바이너리 파일을 읽을 수 없음"
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "실행할 \"%s\" 파일 찾을 수 없음"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "\"%s\" 이름의 디렉터리로 이동할 수 없습니다: %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "\"%s\" 심볼릭 링크 파일을 읽을 수 없음: %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "pclose 실패: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1255 input.c:227 mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "메모리 부족"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "메모리 부족\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "null 포인터를 복제할 수 없음(내부 오류)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "UID %ld 해당하는 사용자를 찾을 수 없음: %s"
+
+#: ../../common/username.c:45 command.c:559
+msgid "user does not exist"
+msgstr "사용자 없음"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "사용자 이름 찾기 실패: 오류번호 %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "명령을 실행할 수 없음"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "명령어를 찾을 수 없음"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "하위 프로세스가 %d 코드로 종료했음"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "0x%X 예외처리에 의해 하위 프로세스가 종료되었음"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "하위 프로세스가 %d 신호를 받고 종료되었음: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "하위 프로세스가 알 수 없는 상태(%d)로 종료되었음"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "취소 요청 보냄\n"
+
+#: ../../fe_utils/cancel.c:165
+msgid "Could not send cancel request: "
+msgstr "취소 요청 보내기 실패: "
+
+#: ../../fe_utils/cancel.c:210
+#, c-format
+msgid "Could not send cancel request: %s"
+msgstr "취소 요청 보내기 실패: %s"
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu개 행)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "인트럽트발생\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "테이블 내용에 헤더를 추가할 수 없음: 열 수가 %d개를 초과했습니다.\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "테이블 내용에 셀을 추가할 수 없음: 총 셀 수가 %d개를 초과했습니다.\n"
+
+#: ../../fe_utils/print.c:3414
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "잘못된 출력 형식 (내부 오류): %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "\"%s\" 변수의 재귀적 확장을 건너뛰는 중"
+
+#: command.c:224
+#, c-format
+msgid "invalid command \\%s"
+msgstr "잘못된 명령: \\%s"
+
+#: command.c:226
+#, c-format
+msgid "Try \\? for help."
+msgstr "도움말을 보려면 \\?를 입력하십시오."
+
+#: command.c:244
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: \"%s\" 추가 인자가 무시되었음"
+
+#: command.c:296
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr ""
+"\\%s 명령은 무시함; 현재 \\if 블록을 중지하려면, \\endif 명령이나 Ctrl-C 키"
+"를 사용하세요."
+
+#: command.c:557
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "UID %ld 사용자의 홈 디렉터리를 찾을 수 없음: %s"
+
+#: command.c:575
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: \"%s\" 디렉터리로 이동할 수 없음: %m"
+
+#: command.c:600
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "현재 데이터베이스에 연결되어있지 않습니다.\n"
+
+#: command.c:613
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" on address \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 주소=\"%s\", 포트=\"%s\".\n"
+
+#: command.c:616
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 소켓=\"%s\", 포트=\"%s\".\n"
+
+#: command.c:622
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address "
+"\"%s\") at port \"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 호스트=\"%s\" (주소=\"%s\"), 포"
+"트=\"%s\".\n"
+
+#: command.c:625
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port "
+"\"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 호스트=\"%s\", 포트=\"%s\".\n"
+
+#: command.c:965 command.c:1061 command.c:2550
+#, c-format
+msgid "no query buffer"
+msgstr "쿼리 버퍼가 없음"
+
+#: command.c:998 command.c:5061
+#, c-format
+msgid "invalid line number: %s"
+msgstr "잘못된 줄 번호: %s"
+
+#: command.c:1052
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "이 서버(%s 버전)는 함수 소스 편집 기능을 제공하지 않습니다."
+
+#: command.c:1055
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "이 서버(%s 버전)는 뷰 정의 편집 기능을 제공하지 않습니다."
+
+#: command.c:1137
+msgid "No changes"
+msgstr "변경 내용 없음"
+
+#: command.c:1216
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: 잘못된 인코딩 이름 또는 문자셋 변환 프로시저 없음"
+
+#: command.c:1251 command.c:1992 command.c:3253 command.c:5163 common.c:174
+#: common.c:223 common.c:388 common.c:1237 common.c:1265 common.c:1373
+#: common.c:1480 common.c:1518 copy.c:488 copy.c:707 help.c:62 large_obj.c:157
+#: large_obj.c:192 large_obj.c:254
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1258
+msgid "There is no previous error."
+msgstr "이전 오류가 없습니다."
+
+#: command.c:1371
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: 오른쪽 괄호 빠졌음"
+
+#: command.c:1548 command.c:1853 command.c:1867 command.c:1884 command.c:2044
+#: command.c:2281 command.c:2517 command.c:2557
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: 필요한 인자가 빠졌음"
+
+#: command.c:1679
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: \\else 구문 뒤에 올 수 없음"
+
+#: command.c:1684
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: \\if 명령과 짝이 안맞음"
+
+#: command.c:1748
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: \\else 명령 뒤에 올 수 없음"
+
+#: command.c:1753
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: \\if 명령과 짝이 안맞음"
+
+#: command.c:1793
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: \\if 명령과 짝이 안맞음"
+
+#: command.c:1948
+msgid "Query buffer is empty."
+msgstr "쿼리 버퍼가 비었음."
+
+#: command.c:1970
+msgid "Enter new password: "
+msgstr "새 암호를 입력하세요:"
+
+#: command.c:1971
+msgid "Enter it again: "
+msgstr "다시 입력해 주세요:"
+
+#: command.c:1975
+#, c-format
+msgid "Passwords didn't match."
+msgstr "암호가 서로 틀립니다."
+
+#: command.c:2074
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: 변수 값을 읽을 수 없음"
+
+#: command.c:2177
+msgid "Query buffer reset (cleared)."
+msgstr "쿼리 버퍼 초기화 (비웠음)."
+
+#: command.c:2199
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "명령내역(history)을 \"%s\" 파일에 기록했습니다.\n"
+
+#: command.c:2286
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: OS 환경 변수 이름에는 \"=\" 문자가 없어야 함"
+
+#: command.c:2347
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "이 서버(%s 버전)는 함수 소스 보기 기능을 제공하지 않습니다."
+
+#: command.c:2350
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "이 서버(%s 버전)는 뷰 정의 보기 기능을 제공하지 않습니다."
+
+#: command.c:2357
+#, c-format
+msgid "function name is required"
+msgstr "함수 이름이 필요함"
+
+#: command.c:2359
+#, c-format
+msgid "view name is required"
+msgstr "뷰 이름이 필요함"
+
+#: command.c:2489
+msgid "Timing is on."
+msgstr "작업수행시간 보임"
+
+#: command.c:2491
+msgid "Timing is off."
+msgstr "작업수행시간 숨김"
+
+#: command.c:2576 command.c:2604 command.c:3661 command.c:3664 command.c:3667
+#: command.c:3673 command.c:3675 command.c:3683 command.c:3693 command.c:3702
+#: command.c:3716 command.c:3733 command.c:3791 common.c:70 copy.c:331
+#: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2988 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "암호: "
+
+#: command.c:2993 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "%s 사용자의 암호: "
+
+#: command.c:3064
+#, c-format
+msgid ""
+"All connection parameters must be supplied because no database connection "
+"exists"
+msgstr "현재 접속 정보가 없습니다. 접속을 위한 연결 관련 매개변수를 지정하세요"
+
+#: command.c:3257
+#, c-format
+msgid "Previous connection kept"
+msgstr "이전 연결이 유지되었음"
+
+#: command.c:3261
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\연결: %s"
+
+#: command.c:3310
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 주소=\"%s\", 포트=\"%s\".\n"
+
+#: command.c:3313
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" "
+"at port \"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 소켓=\"%s\", 포트=\"%s\".\n"
+
+#: command.c:3319
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" on host \"%s"
+"\" (address \"%s\") at port \"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 호스트=\"%s\" (주소 \"%s\"), 포"
+"트=\"%s\".\n"
+
+#: command.c:3322
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"접속정보: 데이터베이스=\"%s\", 사용자=\"%s\", 호스트=\"%s\", 포트=\"%s\".\n"
+
+#: command.c:3327
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "접속정보: 데이터베이스=\"%s\", 사용자=\"%s\".\n"
+
+#: command.c:3360
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s(%s, %s 서버)\n"
+
+#: command.c:3368
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"경고: %s 메이저 버전 %s, 서버 메이저 버전 %s.\n"
+" 일부 psql 기능이 작동하지 않을 수도 있습니다.\n"
+
+#: command.c:3407
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL 연결정보 (프로토콜: %s, 암호화기법: %s, 비트: %s, 압축: %s)\n"
+
+#: command.c:3408 command.c:3409 command.c:3410
+msgid "unknown"
+msgstr "알수없음"
+
+#: command.c:3411 help.c:45
+msgid "off"
+msgstr "off"
+
+#: command.c:3411 help.c:45
+msgid "on"
+msgstr "on"
+
+#: command.c:3425
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "암호화된 GSSAPI 연결\n"
+
+#: command.c:3445
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"경고: 콘솔 코드 페이지(%u)가 Windows 코드 페이지(%u)와 달라서\n"
+" 8비트 문자가 올바르게 표시되지 않을 수 있습니다. 자세한 내용은 psql "
+"참조\n"
+" 페이지 \"Notes for Windows users\"를 참조하십시오.\n"
+
+#: command.c:3549
+#, c-format
+msgid ""
+"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a "
+"line number"
+msgstr ""
+"지정한 줄번호를 사용하기 위해서는 PSQL_EDITOR_LINENUMBER_ARG 이름의 OS 환경변"
+"수가 설정되어 있어야 합니다."
+
+#: command.c:3578
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "\"%s\" 문서 편집기를 실행시킬 수 없음"
+
+#: command.c:3580
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "/bin/sh 명령을 실행할 수 없음"
+
+#: command.c:3618
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "임시 디렉터리 경로를 알 수 없음: %s"
+
+#: command.c:3645
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "\"%s\" 임시 파일을 열 수 없음: %m"
+
+#: command.c:3950
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: \"%s\" 생략형이 \"%s\" 또는 \"%s\" 값 모두 선택가능해서 모호함"
+
+#: command.c:3970
+#, c-format
+msgid ""
+"\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-"
+"longtable, troff-ms, unaligned, wrapped"
+msgstr ""
+"\\pset: 허용되는 출력 형식: aligned, asciidoc, csv, html, latex, latex-"
+"longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:3989
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: 사용할 수 있는 선 모양은 ascii, old-ascii, unicode"
+
+#: command.c:4004
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: 사용할 수 있는 유니코드 테두리 모양은 single, double"
+
+#: command.c:4019
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: 사용할 수 있는 유니코드 칼럼 선 모양은 single, double"
+
+#: command.c:4034
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: 사용할 수 있는 유니코드 헤더 선 모양은 single, double"
+
+#: command.c:4077
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep 문자는 1바이트의 단일 문자여야 함"
+
+#: command.c:4082
+#, c-format
+msgid ""
+"\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage "
+"return"
+msgstr ""
+"\\pset: csv_fieldsep 문자로 따옴표, 줄바꿈(\\n, \\r) 문자는 사용할 수 없음"
+
+#: command.c:4219 command.c:4407
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: 알 수 없는 옵션: %s"
+
+#: command.c:4239
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "html 테이블의 테두리를 %d로 지정했습니다.\n"
+
+#: command.c:4245
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "대상 너비 미지정.\n"
+
+#: command.c:4247
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "대상 너비는 %d입니다.\n"
+
+#: command.c:4254
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "칼럼 단위 보기 기능 켬.\n"
+
+#: command.c:4256
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "칼럼 단위 보기 기능을 자동으로 지정 함.\n"
+
+#: command.c:4258
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "칼럼 단위 보기 기능 끔.\n"
+
+#: command.c:4264
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "CSV용 필드 구분자: \"%s\".\n"
+
+#: command.c:4272 command.c:4280
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "필드 구분자가 0 바이트입니다.\n"
+
+#: command.c:4274
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "필드 구분자 \"%s\".\n"
+
+#: command.c:4287
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "기본 꼬릿말 보기 기능 켬.\n"
+
+#: command.c:4289
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "기본 꼬릿말 보기 기능 끔.\n"
+
+#: command.c:4295
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "현재 출력 형식: %s.\n"
+
+#: command.c:4301
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "선 모양: %s.\n"
+
+#: command.c:4308
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null 값은 \"%s\" 문자로 보여짐.\n"
+
+#: command.c:4316
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "로케일 맞춤 숫자 표기 기능 켬.\n"
+
+#: command.c:4318
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "로케일 맞춤 숫자 표기 기능 끔.\n"
+
+#: command.c:4325
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "긴 출력을 위해 페이저가 사용됨.\n"
+
+#: command.c:4327
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "항상 페이저가 사용됨.\n"
+
+#: command.c:4329
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "화면단위 보기 기능 끔(전체 자료 모두 보여줌).\n"
+
+#: command.c:4335
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "%d 줄보다 적은 경우는 페이지 단위 보기가 사용되지 않음\n"
+
+#: command.c:4345 command.c:4355
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "레코드 구분자가 0 바이트임.\n"
+
+#: command.c:4347
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "레코드 구분자는 줄바꿈 문자입니다.\n"
+
+#: command.c:4349
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "레코드 구분자 \"%s\".\n"
+
+#: command.c:4362
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "테이블 속성: \"%s\".\n"
+
+#: command.c:4365
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "테이블 속성 모두 지움.\n"
+
+#: command.c:4372
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "출력 테이블의 제목: \"%s\"\n"
+
+#: command.c:4374
+#, c-format
+msgid "Title is unset.\n"
+msgstr "출력 테이블의 제목을 지정하지 않았습니다.\n"
+
+#: command.c:4381
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "자료만 보기 기능 켬.\n"
+
+#: command.c:4383
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "자료만 보기 기능 끔.\n"
+
+#: command.c:4389
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "유니코드 테두리 선문자: \"%s\".\n"
+
+#: command.c:4395
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "유니코드 칼럼 선문자: \"%s\".\n"
+
+#: command.c:4401
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "유니코드 헤더 선문자: \"%s\".\n"
+
+#: command.c:4634
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: 실패"
+
+#: command.c:4659 common.c:648
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch 명령으로 수행할 쿼리가 없습니다."
+
+#: command.c:4700
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (%g초 간격)\n"
+
+#: command.c:4703
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (%g초 간격)\n"
+
+#: command.c:4757 command.c:4764 common.c:548 common.c:555 common.c:1220
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********** 쿼리 **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:4956
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\" 뷰(view)가 아님"
+
+#: command.c:4972
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "reloptions 배열을 분석할 수 없음"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "현재 접속한 연결 없이는 특수문자처리를 할 수 없음"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "쉘 명령의 인자에 줄바꿈 문자가 있음: \"%s\""
+
+#: common.c:304
+#, c-format
+msgid "connection to server was lost"
+msgstr "서버 접속 끊김"
+
+#: common.c:308
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "서버로부터 연결이 끊어졌습니다. 다시 연결을 시도합니다: "
+
+#: common.c:313
+#, c-format
+msgid "Failed.\n"
+msgstr "실패.\n"
+
+#: common.c:326
+#, c-format
+msgid "Succeeded.\n"
+msgstr "성공.\n"
+
+#: common.c:378 common.c:938 common.c:1155
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "PQresultStatus 반환값이 잘못됨: %d"
+
+#: common.c:487
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "작업시간: %.3f ms\n"
+
+#: common.c:502
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "작업시간: %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:511
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "작업시간: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:518
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "작업시간: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:542 common.c:600 common.c:1191
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "현재 데이터베이스에 연결되어있지 않습니다."
+
+#: common.c:655
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch 작업으로 COPY 명령은 사용할 수 없음"
+
+#: common.c:660
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "\\watch 쿼리 결과가 비정상적입니다."
+
+#: common.c:690
+#, c-format
+msgid ""
+"Asynchronous notification \"%s\" with payload \"%s\" received from server "
+"process with PID %d.\n"
+msgstr "\"%s\" 비동기 통지를 받음, 부가정보: \"%s\", 보낸 프로세스: %d.\n"
+
+#: common.c:693
+#, c-format
+msgid ""
+"Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "동기화 신호 \"%s\" 받음, 해당 서버 프로세스 PID %d.\n"
+
+#: common.c:726 common.c:743
+#, c-format
+msgid "could not print result table: %m"
+msgstr "결과 테이블을 출력할 수 없음: %m"
+
+#: common.c:764
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "\\gset 해당 자료 없음"
+
+#: common.c:769
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "\\gset 실행 결과가 단일 자료가 아님"
+
+#: common.c:1200
+#, c-format
+msgid ""
+"***(Single step mode: verify "
+"command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to "
+"cancel)********************\n"
+msgstr ""
+"***(단독 순차 모드: 쿼리 확인)*********************************************\n"
+"%s\n"
+"***(Enter: 계속 진행, x Enter: 중지)********************\n"
+
+#: common.c:1255
+#, c-format
+msgid ""
+"The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr ""
+"서버(%s 버전)에서 ON_ERROR_ROLLBACK에 사용할 savepoint를 지원하지 않습니다."
+
+#: common.c:1318
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "명령구문: %s"
+
+#: common.c:1361
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "알 수 없는 트랜잭션 상태 (%d)"
+
+#: common.c:1502 describe.c:2001
+msgid "Column"
+msgstr "필드명"
+
+#: common.c:1503 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3729 describe.c:3939
+#: describe.c:4172 describe.c:5378
+msgid "Type"
+msgstr "종류"
+
+#: common.c:1552
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "해당 명령 결과가 없거나, 그 결과에는 칼럼이 없습니다.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy: 인자가 필요함"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: 구문 오류: \"%s\""
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: 줄 끝에 구문 오류"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "\"%s\" 명령을 실행할 수 없음: %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "\"%s\" 파일의 상태값을 알 수 없음: %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: 디렉터리부터 또는 디렉터리로 복사할 수 없음"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "외부 명령으로 파이프를 닫을 수 없음: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "COPY 자료를 기록할 수 없음: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "COPY 자료 변환 실패: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "사용자에 의해서 취소됨"
+
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"한 줄에 한 레코드씩 데이터를 입력하고\n"
+"자료입력이 끝나면 backslash 점 (\\.) 마지막 줄 처음에 입력하는 EOF 시그널을 "
+"보내세요."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "읽기 실패로 중지됨"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "복사 모드를 종료하는 중"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: 구문 결과가 집합을 반환하지 않았음"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: 쿼리 결과는 적어도 세 개의 칼럼은 반환 해야 함"
+
+#: crosstabview.c:156
+#, c-format
+msgid ""
+"\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: 행과 열의 칼럼이 각각 다른 칼럼이어야 함"
+
+#: crosstabview.c:172
+#, c-format
+msgid ""
+"\\crosstabview: data column must be specified when query returns more than "
+"three columns"
+msgstr ""
+"\\crosstabview: 처리할 칼럼이 세개보다 많을 때는 자료로 사용할 칼럼을 지정해"
+"야 함"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: 최대 칼럼 수 (%d) 초과"
+
+#: crosstabview.c:397
+#, c-format
+msgid ""
+"\\crosstabview: query result contains multiple data values for row \"%s\", "
+"column \"%s\""
+msgstr ""
+"\\crosstabview: \"%s\" 로우, \"%s\" 칼럼에 대해 쿼리 결과는 다중값이어야 함"
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: %d 번째 열은 1..%d 범위를 벗어났음"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: 칼럼 이름이 모호함: \"%s\""
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: 칼럼 이름 없음: \"%s\""
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3718 describe.c:3926
+#: describe.c:4170 describe.c:4261 describe.c:4528 describe.c:4688
+#: describe.c:4929 describe.c:5004 describe.c:5015 describe.c:5077
+#: describe.c:5502 describe.c:5585
+msgid "Schema"
+msgstr "스키마"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3719 describe.c:3927 describe.c:4093 describe.c:4171
+#: describe.c:4262 describe.c:4341 describe.c:4529 describe.c:4613
+#: describe.c:4689 describe.c:4930 describe.c:5005 describe.c:5016
+#: describe.c:5078 describe.c:5275 describe.c:5359 describe.c:5583
+#: describe.c:5755 describe.c:5995
+msgid "Name"
+msgstr "이름"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "반환 자료형"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "인자 자료형"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3506 describe.c:3779 describe.c:3973 describe.c:4124
+#: describe.c:4198 describe.c:4271 describe.c:4354 describe.c:4437
+#: describe.c:4556 describe.c:4622 describe.c:4690 describe.c:4831
+#: describe.c:4873 describe.c:4946 describe.c:5008 describe.c:5017
+#: describe.c:5079 describe.c:5301 describe.c:5381 describe.c:5516
+#: describe.c:5586 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "설명"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "통계 함수 목록"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "서버(%s 버전)에서 접근 방법을 지원하지 않습니다."
+
+#: describe.c:175
+msgid "Index"
+msgstr "인덱스"
+
+#: describe.c:176 describe.c:3737 describe.c:3952 describe.c:5503
+msgid "Table"
+msgstr "테이블"
+
+#: describe.c:184 describe.c:5280
+msgid "Handler"
+msgstr "핸들러"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "접근 방법 목록"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "서버(%s 버전)에서 테이블스페이스를 지원하지 않습니다."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3730 describe.c:3928 describe.c:4097
+#: describe.c:4343 describe.c:4614 describe.c:5276 describe.c:5360
+#: describe.c:5756 describe.c:5893 describe.c:5996 describe.c:6111
+#: describe.c:6190 large_obj.c:289
+msgid "Owner"
+msgstr "소유주"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "위치"
+
+#: describe.c:263 describe.c:3323
+msgid "Options"
+msgstr "옵션"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3771 describe.c:3775
+msgid "Size"
+msgstr "크기"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "테이블스페이스 목록"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df 명령은 [anptwS+]만 추가로 사용함"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df 명령은 \"%c\" 옵션을 %s 버전 서버에서는 사용할 수 없음"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "집계"
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "창"
+
+#: describe.c:391
+msgid "proc"
+msgstr ""
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "함수"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "트리거"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "immutable"
+
+#: describe.c:484
+msgid "stable"
+msgstr "stable"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "volatile"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "휘발성"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "엄격함"
+
+#: describe.c:495
+msgid "safe"
+msgstr "safe"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "unsafe"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "병렬처리"
+
+#: describe.c:502
+msgid "definer"
+msgstr "definer"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "invoker"
+
+#: describe.c:504
+msgid "Security"
+msgstr "보안"
+
+#: describe.c:511
+msgid "Language"
+msgstr "언어"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "소스 코드"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "함수 목록"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "내부 이름"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "요소"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "자료형 목록"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "왼쪽 인수 자료형"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "오른쪽 인수 자료형"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "반환 자료형"
+
+#: describe.c:819 describe.c:4349 describe.c:4414 describe.c:4420
+#: describe.c:4830 describe.c:6362 describe.c:6366
+msgid "Function"
+msgstr "함수"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "연산자 목록"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "인코딩"
+
+#: describe.c:879 describe.c:4530
+msgid "Collate"
+msgstr "Collate"
+
+#: describe.c:880 describe.c:4531
+msgid "Ctype"
+msgstr "Ctype"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "테이블스페이스"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "데이터베이스 목록"
+
+#: describe.c:956 describe.c:1117 describe.c:3720
+msgid "table"
+msgstr "테이블"
+
+#: describe.c:957 describe.c:3721
+msgid "view"
+msgstr "뷰(view)"
+
+#: describe.c:958 describe.c:3722
+msgid "materialized view"
+msgstr "구체화된 뷰"
+
+#: describe.c:959 describe.c:1119 describe.c:3724
+msgid "sequence"
+msgstr "시퀀스"
+
+#: describe.c:960 describe.c:3726
+msgid "foreign table"
+msgstr "외부 테이블"
+
+#: describe.c:961 describe.c:3727 describe.c:3937
+msgid "partitioned table"
+msgstr "파티션 테이블"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "칼럼 접근권한"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "정책"
+
+#: describe.c:1070 describe.c:6052 describe.c:6056
+msgid "Access privileges"
+msgstr "액세스 권한"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "이 서버(%s 버전)는 ALTER DEFAULT PRIVILEGES 기능을 지원하지 않습니다."
+
+#: describe.c:1121
+msgid "function"
+msgstr "함수"
+
+#: describe.c:1123
+msgid "type"
+msgstr "type"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "스키마"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "기본 접근권한"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "개체"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "테이블 제약 조건"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "도메인 제약조건"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "연산자 클래스"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "연산자 부류"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "룰(rule)"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "개체 설명"
+
+#: describe.c:1402 describe.c:3843
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "\"%s\" 이름을 릴레이션(relation) 없음."
+
+#: describe.c:1405 describe.c:3846
+#, c-format
+msgid "Did not find any relations."
+msgstr "관련 릴레이션 찾을 수 없음."
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "%s oid의 어떤 릴레이션(relation)도 찾을 수 없음."
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "시작"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "최소값"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "최대값"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "증가값"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4265
+#: describe.c:4431 describe.c:4545 describe.c:4550 describe.c:6099
+msgid "yes"
+msgstr "예"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4265
+#: describe.c:4428 describe.c:4545 describe.c:6100
+msgid "no"
+msgstr "아니오"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "순환?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "캐쉬"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "소유주: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "식별 칼럼용 시퀀스: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "\"%s.%s\" 시퀀스"
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "로그 미사용 테이블 \"%s.%s\""
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "\"%s.%s\" 테이블"
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "\"%s.%s\" 뷰(view)"
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "트랜잭션 로그를 남기지 않은 구체화된 뷰 \"%s.%s\""
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Materialized 뷰 \"%s.%s\""
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "\"%s.%s\" 로그 미사용 인덱스"
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "\"%s.%s\" 인덱스"
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "\"%s.%s\" 로그 미사용 파티션 인덱스"
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "\"%s.%s\" 파티션 인덱스"
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "\"%s.%s\" 특수 릴레이션(relation)"
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "\"%s.%s\" TOAST 테이블"
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "\"%s.%s\" 복합자료형"
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "\"%s.%s\" 외부 테이블"
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "로그 미사용 파티션 테이블 \"%s.%s\""
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "\"%s.%s\" 파티션 테이블"
+
+#: describe.c:2005 describe.c:4178
+msgid "Collation"
+msgstr "Collation"
+
+#: describe.c:2006 describe.c:4185
+msgid "Nullable"
+msgstr "NULL허용"
+
+#: describe.c:2007 describe.c:4186
+msgid "Default"
+msgstr "초기값"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr ""
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "정의"
+
+#: describe.c:2014 describe.c:5296 describe.c:5380 describe.c:5451
+#: describe.c:5515
+msgid "FDW options"
+msgstr "FDW 옵션"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "스토리지"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "통계수집량"
+
+#: describe.c:2131
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "소속 파티션: %s %s"
+
+#: describe.c:2143
+msgid "No partition constraint"
+msgstr "파티션 제약 조건 없음"
+
+#: describe.c:2145
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "파티션 제약조건: %s"
+
+#: describe.c:2169
+#, c-format
+msgid "Partition key: %s"
+msgstr "파티션 키: %s"
+
+#: describe.c:2195
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "소속 테이블: \"%s.%s\""
+
+#: describe.c:2266
+msgid "primary key, "
+msgstr "기본키, "
+
+#: describe.c:2268
+msgid "unique, "
+msgstr "고유, "
+
+#: describe.c:2274
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "적용테이블: \"%s.%s\""
+
+#: describe.c:2278
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", predicate (%s)"
+
+#: describe.c:2281
+msgid ", clustered"
+msgstr ", 클러스됨"
+
+#: describe.c:2284
+msgid ", invalid"
+msgstr ", 잘못됨"
+
+#: describe.c:2287
+msgid ", deferrable"
+msgstr ", 지연가능"
+
+#: describe.c:2290
+msgid ", initially deferred"
+msgstr ", 트랜잭션단위지연"
+
+#: describe.c:2293
+msgid ", replica identity"
+msgstr ", 복제 식별자"
+
+#: describe.c:2360
+msgid "Indexes:"
+msgstr "인덱스들:"
+
+#: describe.c:2444
+msgid "Check constraints:"
+msgstr "체크 제약 조건:"
+
+#: describe.c:2512
+msgid "Foreign-key constraints:"
+msgstr "참조키 제약 조건:"
+
+#: describe.c:2575
+msgid "Referenced by:"
+msgstr "다음에서 참조됨:"
+
+#: describe.c:2625
+msgid "Policies:"
+msgstr "정책:"
+
+#: describe.c:2628
+msgid "Policies (forced row security enabled):"
+msgstr "정책 (로우단위 보안정책 강제 활성화):"
+
+#: describe.c:2631
+msgid "Policies (row security enabled): (none)"
+msgstr "정책 (로우단위 보안정책 활성화): (없음)"
+
+#: describe.c:2634
+msgid "Policies (forced row security enabled): (none)"
+msgstr "정책 (로우단위 보안정책 강제 활성화): (없음)"
+
+#: describe.c:2637
+msgid "Policies (row security disabled):"
+msgstr "정책 (로우단위 보안정책 비활성화):"
+
+#: describe.c:2705
+msgid "Statistics objects:"
+msgstr "통계정보 객체:"
+
+#: describe.c:2819 describe.c:2923
+msgid "Rules:"
+msgstr "룰(rule)들:"
+
+#: describe.c:2822
+msgid "Disabled rules:"
+msgstr "사용중지된 규칙:"
+
+#: describe.c:2825
+msgid "Rules firing always:"
+msgstr "항상 발생하는 규칙:"
+
+#: describe.c:2828
+msgid "Rules firing on replica only:"
+msgstr "복제본에서만 발생하는 규칙:"
+
+#: describe.c:2868
+msgid "Publications:"
+msgstr "발행자:"
+
+#: describe.c:2906
+msgid "View definition:"
+msgstr "뷰 정의:"
+
+#: describe.c:3053
+msgid "Triggers:"
+msgstr "트리거들:"
+
+#: describe.c:3057
+msgid "Disabled user triggers:"
+msgstr "사용중지된 사용자 트리거:"
+
+#: describe.c:3059
+msgid "Disabled triggers:"
+msgstr "사용중지된 트리거:"
+
+#: describe.c:3062
+msgid "Disabled internal triggers:"
+msgstr "사용중지된 내부 트리거:"
+
+#: describe.c:3065
+msgid "Triggers firing always:"
+msgstr "항상 발생하는 트리거:"
+
+#: describe.c:3068
+msgid "Triggers firing on replica only:"
+msgstr "복제본에서만 발생하는 트리거:"
+
+#: describe.c:3140
+#, c-format
+msgid "Server: %s"
+msgstr "서버: %s"
+
+#: describe.c:3148
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "FDW 옵션들: (%s)"
+
+#: describe.c:3169
+msgid "Inherits"
+msgstr "상속"
+
+#: describe.c:3229
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "파티션 테이블 수: %d"
+
+#: describe.c:3238
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "파티션 테이블 수: %d (\\d+ 명령으로 볼 수 있음)"
+
+#: describe.c:3240
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "하위 테이블 수: %d (\\d+ 명령으로 볼 수 있음)"
+
+#: describe.c:3247
+msgid "Child tables"
+msgstr "하위 테이블"
+
+#: describe.c:3247
+msgid "Partitions"
+msgstr "파티션들"
+
+#: describe.c:3276
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "자료형의 typed 테이블: %s"
+
+#: describe.c:3292
+msgid "Replica Identity"
+msgstr "복제 식별자"
+
+#: describe.c:3305
+msgid "Has OIDs: yes"
+msgstr "OID 사용: yes"
+
+#: describe.c:3314
+#, c-format
+msgid "Access method: %s"
+msgstr "접근 방법: %s"
+
+#: describe.c:3394
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "테이블스페이스: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3406
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", \"%s\" 테이블스페이스"
+
+#: describe.c:3499
+msgid "List of roles"
+msgstr "롤 목록"
+
+#: describe.c:3501
+msgid "Role name"
+msgstr "롤 이름"
+
+#: describe.c:3502
+msgid "Attributes"
+msgstr "속성"
+
+#: describe.c:3503
+msgid "Member of"
+msgstr "소속 그룹:"
+
+#: describe.c:3514
+msgid "Superuser"
+msgstr "슈퍼유저"
+
+#: describe.c:3517
+msgid "No inheritance"
+msgstr "상속 없음"
+
+#: describe.c:3520
+msgid "Create role"
+msgstr "롤 만들기"
+
+#: describe.c:3523
+msgid "Create DB"
+msgstr "DB 만들기"
+
+#: describe.c:3526
+msgid "Cannot login"
+msgstr "로그인할 수 없음"
+
+#: describe.c:3530
+msgid "Replication"
+msgstr "복제"
+
+#: describe.c:3534
+msgid "Bypass RLS"
+msgstr "RLS 통과"
+
+#: describe.c:3543
+msgid "No connections"
+msgstr "연결 없음"
+
+#: describe.c:3545
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d개 연결"
+
+#: describe.c:3555
+msgid "Password valid until "
+msgstr "비밀번호 만료기한: "
+
+#: describe.c:3605
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "이 서버(%s 버전)는 데이터베이스 개별 롤 설정을 지원하지 않습니다."
+
+#: describe.c:3618
+msgid "Role"
+msgstr "롤"
+
+#: describe.c:3619
+msgid "Database"
+msgstr "데이터베이스"
+
+#: describe.c:3620
+msgid "Settings"
+msgstr "설정"
+
+#: describe.c:3641
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "\"%s\" 롤과 \"%s\" 데이터베이스에 대한 특정 설정이 없습니다."
+
+#: describe.c:3644
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "\"%s\" 롤용 특정 설정이 없음."
+
+#: describe.c:3647
+#, c-format
+msgid "Did not find any settings."
+msgstr "추가 설정 없음."
+
+#: describe.c:3652
+msgid "List of settings"
+msgstr "설정 목록"
+
+#: describe.c:3723
+msgid "index"
+msgstr "인덱스"
+
+#: describe.c:3725
+msgid "special"
+msgstr "특수"
+
+#: describe.c:3728 describe.c:3938
+msgid "partitioned index"
+msgstr "파티션_인덱스"
+
+#: describe.c:3752
+msgid "permanent"
+msgstr ""
+
+#: describe.c:3753
+msgid "temporary"
+msgstr ""
+
+#: describe.c:3754
+msgid "unlogged"
+msgstr ""
+
+#: describe.c:3755
+msgid "Persistence"
+msgstr ""
+
+#: describe.c:3851
+msgid "List of relations"
+msgstr "릴레이션(relation) 목록"
+
+#: describe.c:3899
+#, c-format
+msgid ""
+"The server (version %s) does not support declarative table partitioning."
+msgstr "이 서버(%s 버전)는 파티션 테이블 기능을 지원하지 않습니다."
+
+#: describe.c:3910
+msgid "List of partitioned indexes"
+msgstr "파티션 인덱스 목록"
+
+#: describe.c:3912
+msgid "List of partitioned tables"
+msgstr "파티션 테이블 목록"
+
+#: describe.c:3916
+msgid "List of partitioned relations"
+msgstr "파티션 릴레이션(relation) 목록"
+
+#: describe.c:3947
+msgid "Parent name"
+msgstr "상위 이름"
+
+#: describe.c:3960
+msgid "Leaf partition size"
+msgstr "하위 파티션 크기"
+
+#: describe.c:3963 describe.c:3969
+msgid "Total size"
+msgstr "전체 크기"
+
+#: describe.c:4101
+msgid "Trusted"
+msgstr "신뢰됨"
+
+#: describe.c:4109
+msgid "Internal language"
+msgstr "내부 언어"
+
+#: describe.c:4110
+msgid "Call handler"
+msgstr "호출 핸들러"
+
+#: describe.c:4111 describe.c:5283
+msgid "Validator"
+msgstr "유효성 검사기"
+
+#: describe.c:4114
+msgid "Inline handler"
+msgstr "인라인 핸들러"
+
+#: describe.c:4142
+msgid "List of languages"
+msgstr "언어 목록"
+
+#: describe.c:4187
+msgid "Check"
+msgstr "체크"
+
+#: describe.c:4229
+msgid "List of domains"
+msgstr "도메인(domain) 목록"
+
+#: describe.c:4263
+msgid "Source"
+msgstr "소스"
+
+#: describe.c:4264
+msgid "Destination"
+msgstr "설명"
+
+#: describe.c:4266 describe.c:6101
+msgid "Default?"
+msgstr "초기값?"
+
+#: describe.c:4303
+msgid "List of conversions"
+msgstr "문자코드변환규칙(conversion) 목록"
+
+#: describe.c:4342
+msgid "Event"
+msgstr "이벤트"
+
+#: describe.c:4344
+msgid "enabled"
+msgstr "활성화"
+
+#: describe.c:4345
+msgid "replica"
+msgstr "replica"
+
+#: describe.c:4346
+msgid "always"
+msgstr "항상"
+
+#: describe.c:4347
+msgid "disabled"
+msgstr "비활성화"
+
+#: describe.c:4348 describe.c:5997
+msgid "Enabled"
+msgstr "활성화"
+
+#: describe.c:4350
+msgid "Tags"
+msgstr "태그"
+
+#: describe.c:4369
+msgid "List of event triggers"
+msgstr "이벤트 트리거 목록"
+
+#: describe.c:4398
+msgid "Source type"
+msgstr "Source 자료형"
+
+#: describe.c:4399
+msgid "Target type"
+msgstr "Target 자료형"
+
+#: describe.c:4430
+msgid "in assignment"
+msgstr "in assignment"
+
+#: describe.c:4432
+msgid "Implicit?"
+msgstr "Implicit?"
+
+#: describe.c:4487
+msgid "List of casts"
+msgstr "형변환자 목록"
+
+#: describe.c:4515
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "이 서버(%s 버전)는 문자 정렬(collation) 기능을 지원하지 않습니다."
+
+#: describe.c:4536 describe.c:4540
+msgid "Provider"
+msgstr "제공자"
+
+#: describe.c:4546 describe.c:4551
+msgid "Deterministic?"
+msgstr ""
+
+#: describe.c:4586
+msgid "List of collations"
+msgstr "문자 정렬 목록"
+
+#: describe.c:4645
+msgid "List of schemas"
+msgstr "스키마(schema) 목록"
+
+#: describe.c:4670 describe.c:4917 describe.c:4988 describe.c:5059
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "이 서버(%s 버전)에서 전문 검색을 지원하지 않습니다."
+
+#: describe.c:4705
+msgid "List of text search parsers"
+msgstr "텍스트 검색 파서 목록"
+
+#: describe.c:4750
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "\"%s\"(이)라는 전문 검색 분석기를 찾지 못했습니다."
+
+#: describe.c:4753
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "특정 전문 검색 분석기를 찾지 못했습니다."
+
+#: describe.c:4828
+msgid "Start parse"
+msgstr "구문 분석 시작"
+
+#: describe.c:4829
+msgid "Method"
+msgstr "방법"
+
+#: describe.c:4833
+msgid "Get next token"
+msgstr "다음 토큰 가져오기"
+
+#: describe.c:4835
+msgid "End parse"
+msgstr "구문 분석 종료"
+
+#: describe.c:4837
+msgid "Get headline"
+msgstr "헤드라인 가져오기"
+
+#: describe.c:4839
+msgid "Get token types"
+msgstr "토큰 형식 가져오기"
+
+#: describe.c:4850
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "\"%s.%s\" 텍스트 검색 파서"
+
+#: describe.c:4853
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "\"%s\" 텍스트 검색 파서"
+
+#: describe.c:4872
+msgid "Token name"
+msgstr "토큰 이름"
+
+#: describe.c:4883
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "\"%s.%s\" 파서의 토큰 형식"
+
+#: describe.c:4886
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "\"%s\" 파서의 토큰 형식"
+
+#: describe.c:4940
+msgid "Template"
+msgstr "템플릿"
+
+#: describe.c:4941
+msgid "Init options"
+msgstr "초기화 옵션"
+
+#: describe.c:4963
+msgid "List of text search dictionaries"
+msgstr "텍스트 검색 사전 목록"
+
+#: describe.c:5006
+msgid "Init"
+msgstr "초기화"
+
+#: describe.c:5007
+msgid "Lexize"
+msgstr "Lexize"
+
+#: describe.c:5034
+msgid "List of text search templates"
+msgstr "텍스트 검색 템플릿 목록"
+
+#: describe.c:5094
+msgid "List of text search configurations"
+msgstr "텍스트 검색 구성 목록"
+
+#: describe.c:5140
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "\"%s\"(이)라는 텍스트 검색 구성을 찾지 못했습니다."
+
+#: describe.c:5143
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "특정 텍스트 검색 구성을 찾지 못했습니다."
+
+#: describe.c:5209
+msgid "Token"
+msgstr "토큰"
+
+#: describe.c:5210
+msgid "Dictionaries"
+msgstr "사전"
+
+#: describe.c:5221
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "텍스트 검색 구성 \"%s.%s\""
+
+#: describe.c:5224
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "텍스트 검색 구성 \"%s\""
+
+#: describe.c:5228
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"파서: \"%s.%s\""
+
+#: describe.c:5231
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"파서: \"%s\""
+
+#: describe.c:5265
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "이 서버(%s 버전)에서 외부 데이터 래퍼를 지원하지 않습니다."
+
+#: describe.c:5323
+msgid "List of foreign-data wrappers"
+msgstr "외부 데이터 래퍼 목록"
+
+#: describe.c:5348
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "이 서버(%s 버전)에서 외부 서버를 지원하지 않습니다."
+
+#: describe.c:5361
+msgid "Foreign-data wrapper"
+msgstr "외부 데이터 래퍼"
+
+#: describe.c:5379 describe.c:5584
+msgid "Version"
+msgstr "버전"
+
+#: describe.c:5405
+msgid "List of foreign servers"
+msgstr "외부 서버 목록"
+
+#: describe.c:5430
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "이 서버(%s 버전)에서 사용자 매핑을 지원하지 않습니다."
+
+#: describe.c:5440 describe.c:5504
+msgid "Server"
+msgstr "서버"
+
+#: describe.c:5441
+msgid "User name"
+msgstr "사용자 이름"
+
+#: describe.c:5466
+msgid "List of user mappings"
+msgstr "사용자 매핑 목록"
+
+#: describe.c:5491
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "이 서버(%s 버전)에서 외부 테이블을 지원하지 않습니다."
+
+#: describe.c:5544
+msgid "List of foreign tables"
+msgstr "외부 테이블 목록"
+
+#: describe.c:5569 describe.c:5626
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "이 서버(%s 버전)에서 확장기능을 지원하지 않습니다."
+
+#: describe.c:5601
+msgid "List of installed extensions"
+msgstr "설치된 확장기능 목록"
+
+#: describe.c:5654
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "\"%s\" 이름의 확장 기능 모듈을 찾을 수 없습니다."
+
+#: describe.c:5657
+#, c-format
+msgid "Did not find any extensions."
+msgstr "추가할 확장 기능 모듈이 없음."
+
+#: describe.c:5701
+msgid "Object description"
+msgstr "개체 설명"
+
+#: describe.c:5711
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "\"%s\" 확장 기능 안에 포함된 객체들"
+
+#: describe.c:5740 describe.c:5816
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "이 서버(%s 버전)는 논리 복제 발행 기능을 지원하지 않습니다."
+
+#: describe.c:5757 describe.c:5894
+msgid "All tables"
+msgstr "모든 테이블"
+
+#: describe.c:5758 describe.c:5895
+msgid "Inserts"
+msgstr "Inserts"
+
+#: describe.c:5759 describe.c:5896
+msgid "Updates"
+msgstr "Updates"
+
+#: describe.c:5760 describe.c:5897
+msgid "Deletes"
+msgstr "Deletes"
+
+#: describe.c:5764 describe.c:5899
+msgid "Truncates"
+msgstr ""
+
+#: describe.c:5768 describe.c:5901
+msgid "Via root"
+msgstr ""
+
+#: describe.c:5785
+msgid "List of publications"
+msgstr "발행 목록"
+
+#: describe.c:5858
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "\"%s\" 이름의 발행 없음."
+
+#: describe.c:5861
+#, c-format
+msgid "Did not find any publications."
+msgstr "발행 없음."
+
+#: describe.c:5890
+#, c-format
+msgid "Publication %s"
+msgstr "%s 발행"
+
+#: describe.c:5938
+msgid "Tables:"
+msgstr "테이블"
+
+#: describe.c:5982
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "이 서버(%s 버전)는 구독 기능을 지원하지 않습니다."
+
+#: describe.c:5998
+msgid "Publication"
+msgstr "발행"
+
+#: describe.c:6005
+msgid "Synchronous commit"
+msgstr "동기식 커밋"
+
+#: describe.c:6006
+msgid "Conninfo"
+msgstr "연결정보"
+
+#: describe.c:6028
+msgid "List of subscriptions"
+msgstr "구독 목록"
+
+#: describe.c:6095 describe.c:6184 describe.c:6270 describe.c:6353
+msgid "AM"
+msgstr ""
+
+#: describe.c:6096
+msgid "Input type"
+msgstr "입력 자료형"
+
+#: describe.c:6097
+msgid "Storage type"
+msgstr "스토리지 유형"
+
+#: describe.c:6098
+msgid "Operator class"
+msgstr "연산자 클래스"
+
+#: describe.c:6110 describe.c:6185 describe.c:6271 describe.c:6354
+msgid "Operator family"
+msgstr "연산자 부류"
+
+#: describe.c:6143
+msgid "List of operator classes"
+msgstr "연산자 클래스 목록"
+
+#: describe.c:6186
+msgid "Applicable types"
+msgstr ""
+
+#: describe.c:6225
+msgid "List of operator families"
+msgstr "연산자 부류 목록"
+
+#: describe.c:6272
+msgid "Operator"
+msgstr "연산자"
+
+#: describe.c:6273
+msgid "Strategy"
+msgstr "전략번호"
+
+#: describe.c:6274
+msgid "ordering"
+msgstr ""
+
+#: describe.c:6275
+msgid "search"
+msgstr ""
+
+#: describe.c:6276
+msgid "Purpose"
+msgstr ""
+
+#: describe.c:6281
+msgid "Sort opfamily"
+msgstr "정렬 연산자 부류"
+
+#: describe.c:6312
+msgid "List of operators of operator families"
+msgstr "연산자 부류 소속 연산자 목록"
+
+#: describe.c:6355
+msgid "Registered left type"
+msgstr "등록된 왼쪽 자료형"
+
+#: describe.c:6356
+msgid "Registered right type"
+msgstr "등록된 오른쪽 자료형"
+
+#: describe.c:6357
+msgid "Number"
+msgstr ""
+
+#: describe.c:6393
+msgid "List of support functions of operator families"
+msgstr "연산자 부류 소속 지원 함수 목록"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql은 PostgreSQL 대화식 터미널입니다.\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "사용법:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "일반 옵션:\n"
+
+#: help.c:82
+#, c-format
+msgid ""
+" -c, --command=COMMAND run only single command (SQL or internal) and "
+"exit\n"
+msgstr ""
+" -c, --command=COMMAND 하나의 명령(SQL 또는 내부 명령)만 실행하고 끝냄\n"
+
+#: help.c:83
+#, c-format
+msgid ""
+" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr " -d, --dbname=DBNAME 연결할 데이터베이스 이름(기본 값: \"%s\")\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=FILENAME 파일 안에 지정한 명령을 실행하고 끝냄\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr ""
+" -l, --list 사용 가능한 데이터베이스 목록을 표시하고 끝냄\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" psql 변수 NAME을 VALUE로 설정\n"
+" (예, -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version 버전 정보를 보여주고 마침\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc 시작 파일(~/.psqlrc)을 읽지 않음\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-"
+"interactive)\n"
+msgstr ""
+" -1 (\"one\"), --single-transaction\n"
+" 명령 파일을 하나의 트랜잭션으로 실행\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] 이 도움말을 표시하고 종료\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr ""
+" --help=commands psql 내장명령어(\\문자로 시작하는)를 표시하고 종"
+"료\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables 특별 변수들 보여주고, 종료\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"입출력 옵션:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all 스크립트의 모든 입력 표시\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors 실패한 명령들 출력\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries 서버로 보낸 명령 표시\n"
+
+#: help.c:101
+#, c-format
+msgid ""
+" -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden 내부 명령이 생성하는 쿼리 표시\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=FILENAME 세션 로그를 파일로 보냄\n"
+
+#: help.c:103
+#, c-format
+msgid ""
+" -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr ""
+" -n, --no-readline 확장된 명령행 편집 기능을 사용중지함(readline)\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=FILENAME 쿼리 결과를 파일(또는 |파이프)로 보냄\n"
+
+#: help.c:105
+#, c-format
+msgid ""
+" -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet 자동 실행(메시지 없이 쿼리 결과만 표시)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step 단독 순차 모드(각 쿼리 확인)\n"
+
+#: help.c:107
+#, c-format
+msgid ""
+" -S, --single-line single-line mode (end of line terminates SQL "
+"command)\n"
+msgstr " -S, --single-line 한 줄 모드(줄 끝에서 SQL 명령이 종료됨)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"출력 형식 옵션:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align 정렬되지 않은 표 형태의 출력 모드\n"
+
+#: help.c:111
+#, c-format
+msgid ""
+" --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv CSV (쉼표-분리 자료) 테이블 출력 모드\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: "
+"\"%s\")\n"
+msgstr ""
+" -F, --field-separator=STRING\n"
+" unaligned 출력용 필드 구분자 설정(기본 값: \"%s"
+"\")\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html HTML 표 형태 출력 모드\n"
+
+#: help.c:116
+#, c-format
+msgid ""
+" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset "
+"command)\n"
+msgstr ""
+" -P, --pset=VAR[=ARG] 인쇄 옵션 VAR을 ARG로 설정(\\pset 명령 참조)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: "
+"newline)\n"
+msgstr ""
+" -R, --record-separator=STRING\n"
+" unaligned 출력용 레코드 구분자 설정\n"
+" (기본 값: 줄바꿈 문자)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only 행만 인쇄\n"
+
+#: help.c:120
+#, c-format
+msgid ""
+" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, "
+"border)\n"
+msgstr ""
+" -T, --table-attr=TEXT HTML table 태그 속성 설정(예: width, border)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded 확장된 표 형태로 출력\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero "
+"byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" unaligned 출력용 필드 구분자를 0 바이트로 지정\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero "
+"byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" unaligned 출력용 레코드 구분자를 0 바이트로 지정\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"연결 옵션들:\n"
+
+#: help.c:130
+#, c-format
+msgid ""
+" -h, --host=HOSTNAME database server host or socket directory "
+"(default: \"%s\")\n"
+msgstr ""
+" -h, --host=HOSTNAME 데이터베이스 서버 호스트 또는 소켓 디렉터리\n"
+" (기본값: \"%s\")\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "로컬 소켓"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORT 데이터베이스 서버 포트(기본 값: \"%s\")\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=USERNAME 데이터베이스 사용자 이름(기본 값: \"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password 암호 프롬프트 표시 안 함\n"
+
+#: help.c:142
+#, c-format
+msgid ""
+" -W, --password force password prompt (should happen "
+"automatically)\n"
+msgstr " -W, --password 암호 입력 프롬프트 보임(자동으로 처리함)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help"
+"\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"자세한 내용을 보려면 psql 내에서 \"\\?\"(내부 명령) 또는 \"\\help\"(SQL\n"
+"명령)를 입력하거나 PostgreSQL\n"
+"설명서에서 psql 섹션을 참조하십시오.\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "문제점 보고 주소: <%s>\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s 홈페이지: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "일반\n"
+
+#: help.c:175
+#, c-format
+msgid ""
+" \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright PostgreSQL 사용법 및 저작권 정보 표시\n"
+
+#: help.c:176
+#, c-format
+msgid ""
+" \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr ""
+" \\crosstabview [칼럼들] 쿼리를 실행하고, 피봇 테이블 형태로 자료를 보여줌\n"
+
+#: help.c:177
+#, c-format
+msgid ""
+" \\errverbose show most recent error message at maximum "
+"verbosity\n"
+msgstr ""
+" \\errverbose 최대 자세히 보기 상태에서 최근 오류를 다 보여줌\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |"
+"pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(OPTIONS)] [FILE] 쿼리 실행 (결과는 지정한 파일로, 또는 | 파이프로);\n"
+" \\g 명령에서 인자가 없으면 세미콜론과 같음\n"
+
+#: help.c:180
+#, c-format
+msgid ""
+" \\gdesc describe result of query, without executing it\n"
+msgstr ""
+" \\gdesc 쿼리를 실행하지 않고 그 결과 칼럼과 자료형을 출력\n"
+
+#: help.c:181
+#, c-format
+msgid ""
+" \\gexec execute query, then execute each value in its "
+"result\n"
+msgstr " \\gexec 쿼리를 실행하고, 그 결과를 각각 실행 함\n"
+
+#: help.c:182
+#, c-format
+msgid ""
+" \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] 쿼리 실행 뒤 그 결과를 psql 변수로 저장\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [(OPTIONS)] [FILE] \\g 명령과 같으나, 출력을 확장 모드로 강제함\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q psql 종료\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEC] 매 초마다 쿼리 실행\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "도움말\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] psql 역슬래시 명령어 설명\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options psql 명령행 옵션 도움말 보기\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables psql 환경 설정 변수들에 설명 보기\n"
+
+#: help.c:193
+#, c-format
+msgid ""
+" \\h [NAME] help on syntax of SQL commands, * for all "
+"commands\n"
+msgstr ""
+" \\h [NAME] SQL 명령 구문 도움말, 모든 명령을 표시하려면 * 입"
+"력\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "쿼리 버퍼\n"
+
+#: help.c:197
+#, c-format
+msgid ""
+" \\e [FILE] [LINE] edit the query buffer (or file) with external "
+"editor\n"
+msgstr " \\e [FILE] [LINE] 외부 편집기로 쿼리 버퍼(또는 파일) 편집\n"
+
+#: help.c:198
+#, c-format
+msgid ""
+" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [FUNCNAME [LINE]] 외부 편집기로 해당 함수 내용 편집\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [VIEWNAME [LINE]] 외부 편집기로 해당 뷰 정의 편집\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p 쿼리 버퍼의 내용 표시\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r 쿼리 버퍼 초기화(모두 지움)\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [FILE] 기록 표시 또는 파일에 저장\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w FILE 쿼리 버퍼를 파일에 기록\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "입력/출력\n"
+
+#: help.c:209
+#, c-format
+msgid ""
+" \\copy ... perform SQL COPY with data stream to the client "
+"host\n"
+msgstr ""
+" \\copy ... 클라이언트 호스트에 있는 자료를 SQL COPY 명령 실"
+"행\n"
+
+#: help.c:210
+#, c-format
+msgid ""
+" \\echo [-n] [STRING] write string to standard output (-n for no "
+"newline)\n"
+msgstr " \\echo [-n] [STRING] 문자열을 표준 출력에 기록 (-n 줄바꿈 없음)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i FILE 파일에서 명령 실행\n"
+
+#: help.c:212
+#, c-format
+msgid ""
+" \\ir FILE as \\i, but relative to location of current "
+"script\n"
+msgstr ""
+" \\ir FILE \\i 명령과 같으나, 경로가 현재 위치 기준 상대적\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [FILE] 모든 쿼리 결과를 파일 또는 |파이프로 보냄\n"
+
+#: help.c:214
+#, c-format
+msgid ""
+" \\qecho [-n] [STRING] write string to \\o output stream (-n for no "
+"newline)\n"
+msgstr " \\qecho [-n] [STRING] 문자열을 \\o 출력 스트림에 기록 (-n 줄바꿈 없음)\n"
+
+#: help.c:215
+#, c-format
+msgid ""
+" \\warn [-n] [STRING] write string to standard error (-n for no "
+"newline)\n"
+msgstr " \\warn [-n] [STRING] 문자열을 stderr에 기록 (-n 줄바꿈 없음)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "조건문\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR 조건문 시작\n"
+
+#: help.c:220
+#, c-format
+msgid ""
+" \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR else if 구문 시작\n"
+
+#: help.c:221
+#, c-format
+msgid ""
+" \\else final alternative within current conditional "
+"block\n"
+msgstr " \\else 조건문의 그 외 조건\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif 조건문 끝\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "정보보기\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (옵션: S = 시스템 개체 표시, + = 추가 상세 정보)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] 테이블, 뷰 및 시퀀스 목록\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] NAME 테이블, 뷰, 시퀀스 또는 인덱스 설명\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [PATTERN] 집계 함수 목록\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [PATTERN] 접근 방법 목록\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] 연산자 클래스 목록\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] 연산자 부류 목록\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] 연산자 부류 소속 연산자 목록\n"
+
+#: help.c:234
+#, c-format
+msgid ""
+" \\dAp [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr ""
+" \\dAp [AMPTRN [OPFPTRN]] 연산자 가족에 포함된 지원 함수 목록\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [PATTERN] 테이블스페이스 목록\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [PATTERN] 문자셋 변환자 목록\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [PATTERN] 자료형 변환자 목록\n"
+
+#: help.c:238
+#, c-format
+msgid ""
+" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr ""
+" \\dd[S] [PATTERN] 다른 곳에서는 볼 수 없는 객체 설명을 보여줌\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [PATTERN] 도메인 목록\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [PATTERN] 기본 접근권한 목록\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [PATTERN] 외부 테이블 목록\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [PATTERN] 외부 테이블 목록\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [PATTERN] 외부 서버 목록\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [PATTERN] 사용자 매핑 목록\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [PATTERN] 외부 데이터 래퍼 목록\n"
+
+#: help.c:246
+#, c-format
+msgid ""
+" \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] "
+"functions\n"
+msgstr ""
+" \\df[anptw][S+] [PATRN] [agg/normal/procedures/trigger/window] 함수 목록\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [PATTERN] 텍스트 검색 구성 목록\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [PATTERN] 텍스트 검색 사전 목록\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [PATTERN] 텍스트 검색 파서 목록\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [PATTERN] 텍스트 검색 템플릿 목록\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [PATTERN] 롤 목록\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [PATTERN] 인덱스 목록\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl 큰 개체 목록, \\lo_list 명령과 같음\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [PATTERN] 프로시져 언어 목록\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [PATTERN] materialized 뷰 목록\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [PATTERN] 스키마 목록\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [PATTERN] 연산자 목록\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [PATTERN] collation 목록\n"
+
+#: help.c:259
+#, c-format
+msgid ""
+" \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [PATTERN] 테이블, 뷰 및 시퀀스 액세스 권한 목록\n"
+
+#: help.c:260
+#, c-format
+msgid ""
+" \\dP[itn+] [PATTERN] list [only index/table] partitioned relations "
+"[n=nested]\n"
+msgstr ""
+" \\dP[itn+] [PATTERN] 파티션 릴레이션 목록 [인덱스/테이블만] [n=nested]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [PATRN1 [PATRN2]] 데이터베이스별 롤 설정 목록\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [PATTERN] 복제 발행 목록\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [PATTERN] 복제 구독 목록\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [PATTERN] 시퀀스 목록\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [PATTERN] 테이블 목록\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [PATTERN] 데이터 형식 목록\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [PATTERN] 롤 목록\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [PATTERN] 뷰 목록\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [PATTERN] 확장 모듈 목록\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [PATTERN] 이벤트 트리거 목록\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [PATTERN] 데이터베이스 목록\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] 함수이름 함수 정의 보기\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] 뷰이름 뷰 정의 보기\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [PATTERN] \\dp와 같음\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "출력 형식\n"
+
+#: help.c:278
+#, c-format
+msgid ""
+" \\a toggle between unaligned and aligned output mode\n"
+msgstr ""
+" \\a 정렬되지 않은 출력 모드와 정렬된 출력 모드 전환\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr ""
+" \\C [STRING] 테이블 제목 설정 또는 값이 없는 경우 설정 안 함\n"
+
+#: help.c:280
+#, c-format
+msgid ""
+" \\f [STRING] show or set field separator for unaligned query "
+"output\n"
+msgstr ""
+" \\f [STRING] unaligned 출력에 대해 필드 구분자 표시 또는 설정\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H HTML 출력 모드 전환(현재 %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [이름 [값]] 테이블 출력 옵션 설정\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] 행만 표시(현재 %s)\n"
+
+#: help.c:292
+#, c-format
+msgid ""
+" \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr ""
+" \\T [STRING] HTML <table> 태그 속성 설정 또는 비었는 경우 설정 "
+"안 함\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] 확장된 출력 전환 (현재 %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "연결\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" 새 데이터베이스에 접속 (현재 \"%s\")\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" 새 데이터베이스에 접속 (현재 접속해 있지 않음)\n"
+
+#: help.c:305
+#, c-format
+msgid ""
+" \\conninfo display information about current connection\n"
+msgstr " \\conninfo 현재 데이터베이스 접속 정보 보기\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [ENCODING] 클라이언트 인코딩 표시 또는 설정\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [USERNAME] 사용자 암호를 안전하게 변경\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "운영 체제\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [DIR] 현재 작업 디렉터리 변경\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NAME [VALUE] 환경 변수 지정 및 해제\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] 명령 실행 시간 전환(현재 %s)\n"
+
+#: help.c:315
+#, c-format
+msgid ""
+" \\! [COMMAND] execute command in shell or start interactive "
+"shell\n"
+msgstr " \\! [COMMAND] 셸 명령 실행 또는 대화식 셸 시작\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "변수\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr ""
+" \\prompt [TEXT] NAME 사용자에게 내부 변수를 설정하라는 메시지 표시\n"
+
+#: help.c:320
+#, c-format
+msgid ""
+" \\set [NAME [VALUE]] set internal variable, or list all if no "
+"parameters\n"
+msgstr ""
+" \\set [NAME [VALUE]] 내부 변수 설정 또는 미지정 경우 모든 변수 목록 표"
+"시\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset NAME 내부 변수 설정 해제(삭제)\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "큰 개체\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID 큰 개체 작업\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr "특별한 기능 설정 변수 목록\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "psql 변수들:\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NAME=VALUE\n"
+" 또는 psql 명령 모드에서는 \\set NAME VALUE\n"
+"\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" 설정 되면, SQL 명령이 정상 실행 되면 자동 커밋 함\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" SQL 키워드 자동완성에서 대소문자 처리\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" 현재 접속한 데이터베이스 이름\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" 입력을 표준 출력으로 보낼 종류\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" 지정 되면 psql 내장 명령어의 내부 쿼리를 출력함;\n"
+" \"noexec\" 값으로 설정하면, 실행되지 않고 쿼리만 보여줌\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" 현재 클라이언트 인코딩 지정\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" 마지막 쿼리가 실패했으면 true, 아니면 false\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = "
+"unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" 쿼리 결과에 대해서 출력할 최대 로우 개수 (0=제한없음)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" 지정하면 테이블 접근 방법을 보여주지 않음\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" 명령 내역 처리 방법 [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" 명령 내역을 저장할 파일 이름\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" 명령 내역 최대 보관 개수\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" 현재 접속한 데이터베이스 서버 호스트\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" 대화형 세션 종료를 위한 EOF 개수\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" 마지막 영향 받은 OID 값\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if "
+"none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" 마지막 오류 메시지와 SQLSTATE, 정상이면, 빈 문자열과 \"00000\"\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" 설정하면 오류 발생시에도 트랜잭션 중지 안함 (savepoint 암묵적 사용)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" 배치 작업 시 오류가 발생하면 중지함\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" 현재 접속한 서버 포트\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" 기본 psql 프롬프트 정의\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous "
+"line\n"
+msgstr ""
+" PROMPT2\n"
+" 아직 구문이 덜 끝난 명령행의 프롬프트\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" COPY ... FROM STDIN 작업시 보일 프롬프트\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" 조용히 실행 (-q 옵션과 같음)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" 마지막 쿼리 작업 대상 로우 수, 또는 0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" 문자열 버전 정보나, 숫자 형식 버전 정보\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" 상황별 자세한 메시지 내용 출력 제어 [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" 한 줄에 하나의 SQL 명령 실행 (-S 옵션과 같음)\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" 각 명령을 확인하며 실행 (-s 옵션과 같음)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" 마지막 쿼리의 SQLSTATE 값, 오류가 없으면 \"00000\"\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" 현재 접속한 데이터베이스 사용자\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" 오류 출력시 자세히 볼 내용 범위 [default, verbose, terse, sqlstate]\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql 버전 (자세한 버전, 단순한 버전, 숫자형 버전)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"출력 설정들:\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NAME[=VALUE]\n"
+" 또는 psql 명령 모드에서는 \\pset NAME [VALUE]\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" 테두리 모양 (숫자)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" 줄바꿈을 위한 너비 지정\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (또는 x)\n"
+" 확장된 출력 전환 [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" unaligned 출력용 필드 구분자 (초기값 \"%s\"')\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" unaligned 출력용 필드 구분자를 0 바이트로 지정\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" 테이블 꼬리말 보이기 전환 [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" 출력 양식 지정 [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" 테두리 선 모양 지정 [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" null 값 출력 방법\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of "
+"digits\n"
+msgstr ""
+" numericlocale\n"
+" 숫자 출력에서 로케일 기반 천자리 분리 문자 활성화 [on, off]\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" 외부 페이지 단위 보기 도구 사용 여부 [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" unaligned 출력용 레코드(줄) 구분자\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" unaligned 출력용 레코드 구분자를 0 바이트로 지정\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (또는 T)\n"
+" html 테이블 태그에 대한 속성이나,\n"
+" latex-longtable 양식에서 왼쪽 정렬 자료용 칼럼 넓이 지정\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" 테이블 제목 지정\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" 지정되면, 자료만 보임\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" 유니코드 선 종류 [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"OS 환경 변수들:\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" 또는 psql 명령 모드에서는 \\setenv NAME [VALUE]\n"
+"\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" 또는 psql 명령 모드에서는 \\setenv NAME [VALUE]\n"
+"\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" 다음 줄로 넘어갈 칼럼 수\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" application_name 변수값으로 사용됨\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" 접속할 데이터베이스 이름\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" 서버 접속용 호스트 이름\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" 서버 접속 비밀번호 (보안에 취약함)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" 서버 접속용 비밀번호가 저장된 파일 이름\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" 서버 접속용 포트\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" 서버 접속용 데이터베이스 사용자 이름\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" \\e, \\ef, \\ev 명령에서 사용할 외부 편집기 경로\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" 외부 편집기 호출 시 사용할 줄번호 선택 옵션\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" 사용자 .psql_history 파일 임의 지정\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PAGER\n"
+" 페이지 단위 보기에서 사용할 프로그램\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" 사용자 .psqlrc 파일의 임의 지정\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" \\! 명령에서 사용할 쉘\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" 임시 파일을 사용할 디렉터리\n"
+
+#: help.c:554
+msgid "Available help:\n"
+msgstr "사용 가능한 도움말:\n"
+
+#: help.c:642
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"명령: %s\n"
+"설명: %s\n"
+"문법:\n"
+"%s\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:661
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"\"%s\" 명령에 대한 도움말 없음.\n"
+"\\h 명령을 인자 없이 호출 하면 사용 가능한 모든 명령 보여줌.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "입력 파일을 읽을 수 없음: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "history를 \"%s\" 파일로 저장할 수 없음: %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "히스토리 기능은 이 설치본에서는 지원하지 않음"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: 데이터베이스에 연되어있지 않음"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: 현재 트랜잭션 중지됨"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: 알 수 없는 트랜잭션 상태"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "대형 객체들"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: escaped"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "마치려면 \"\\q\"를 입력하세요: %s\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"이 입력은 PostgreSQL 사용자양식 덤프 내용입니다.\n"
+"이 덤프 내용을 데이터베이스에 반영하려면,\n"
+"pg_restore 명령행 클라이언트를 사용하세요.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "\\? 도움말, Ctrl-C 입력 버퍼 비우기"
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "도움말을 보려면 \\?를 입력하십시오."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "PostgreSQL에 대한 명령행 인터페이스인 psql을 사용하고 있습니다."
+
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"사용법: \\copyright 저작권 정보\n"
+" \\h SQL 명령 도움말\n"
+" \\? psql 명령 도움말\n"
+" \\g 또는 명령 끝에 세미콜론(;) 쿼리 실행\n"
+" \\q 마침\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "\\q 마침"
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "마침은 Ctrl-D"
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "마침은 Ctrl-C"
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr ""
+"쿼리 무시됨; 현재 \\if 블록을 끝내려면 \\endif 또는 Ctrl-C 키를 사용하세요."
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "\\endif 없이 EOF 도달"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "마무리 안된 따옴표 안의 문자열"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: 메모리 부족"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "이름"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "집계함수_식별구문"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "새이름"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "새사용자"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "새스키마"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "집계함수_식별구문 사용법:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "인자모드"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "인자이름"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "인자자료형"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "옵션"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "옵션 사용법:"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "접속허용"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "접속제한"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "템플릿?"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "새테이블스페이스"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "환경설정_매개변수"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "값"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "대상롤"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "스키마이름"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "grant_또는_revoke_내용"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "grant_또는_revoke_내용에 사용되는 구문:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "롤이름"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "표현식"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "도메인_제약조건"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "제약조건_이름"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "새제약조건_이름"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "새버전"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "맴버_객체"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "맴버_객체 사용법:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "객체이름"
+
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "집계함수이름"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "기존자료형"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "대상자료형"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "함수이름"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "연산자이름"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "왼쪽인자_자료형"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "오른쪽인자_자료형"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "색인방법"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "프로시져_이름"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "루틴_이름"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "자료형이름"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "언어_이름"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "집계함수_식별구문 사용법:"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "핸들러_함수"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "유효성검사_함수"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "동작"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "칼럼이름"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "새칼럼이름"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "동작 사용법:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "자료형"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "collation"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "칼럼_제약조건"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "정수"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "속성_옵션"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "테이블_제약조건"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "트리거이름"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "상위_테이블"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "확장모듈이름"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "실행비용"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "반환자료수"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "지원_함수"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "롤_명세"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "사용자이름"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "롤_명세 사용법:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "그룹이름"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "테이블스페이스이름"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "인덱스이름"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "스토리지_매개변수"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "칼럼번호"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "대형_객체_oid"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr ""
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr ""
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "전략_번호"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "연산자자료형"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr ""
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr ""
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "인자자료형"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "테이블이름"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr ""
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "체크_표현식"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "발행_매개변수"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "암호"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr ""
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "데이터베이스이름"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr ""
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "최소값"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "최대값"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "시작"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "재시작"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "캐쉬"
+
+#: sql_help.c:1097
+msgid "new_target"
+msgstr "새대상"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "접속정보"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "발행_이름"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "발행_옵션_설정"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "새로고침_옵션"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "구독_매개변수"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "파티션_이름"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "파티션_범위_정의"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "시퀀스_옵션"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "시퀀스_옵션"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr ""
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr ""
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr ""
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "파티션_범위_정의"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr ""
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "칼럼_제약조건 사용법:"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "초기값_표현식"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr ""
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "색인매개변수"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "참조테이블"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "참조칼럼"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "참조_방식"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "테이블_제약조건 사용법:"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr ""
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "연산자"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "범위한정구문"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr ""
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr ""
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr ""
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "연산자클래스"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "테이블스페이스_옵션"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "토큰_종류"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "사전이름"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "옛사전"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "새사전"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "속성이름"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "새속성이름"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr ""
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr ""
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr ""
+
+#: sql_help.c:1537
+msgid "property"
+msgstr "속성"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "서버이름"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "뷰_옵션이름"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr ""
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "테이블과_칼럼"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "옵션 사용법:"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr ""
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "테이블과_칼럼 사용법:"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "트랜잭션모드"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "트랜잭션모드 사용법:"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "인자"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "릴레이션이름"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "도메인이름"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "정책이름"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "룰이름"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr ""
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "트랜잭션_id"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "파일이름"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "명령어"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "조건"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "쿼리문"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "입출력양식이름"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "구분문자"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "널문자열"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "인용부호"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "이스케이프 문자"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "인코딩이름"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr ""
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "인자자료형"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr ""
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr ""
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr ""
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr ""
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr ""
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr ""
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr ""
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr ""
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr ""
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr ""
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr ""
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr ""
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr ""
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr ""
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "정렬연산자"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "또는 옛날 구문"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "기본자료형"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "로케일"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "제공자"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "버전"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr ""
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "원래인코딩"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "대상인코딩"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "템플릿"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "인코딩"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "제약조건"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "제약조건 사용법:"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "이벤트"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr ""
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "칼럼_제약조건 사용법:"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr ""
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr ""
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "함수정의"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "오브젝트파일"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "연결할_함수명"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr ""
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "색인방법"
+
+#: sql_help.c:2371
+msgid "opclass_parameter"
+msgstr "opclass_매개변수"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr ""
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr ""
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "구문검사함수"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr ""
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr ""
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr ""
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "스토리지_유형"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "이벤트 사용법:"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr ""
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "서버_종류"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "서버_버전"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "fdw_이름"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "통계정보_이름"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "통계정보_종류"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "구독_이름"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "원본테이블"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "LIKE구문옵션"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr ""
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "디렉터리"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "구문분석기_이름"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "원본_설정"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "시작_함수"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "gettoken함수"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "종료_함수"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "lextypes함수"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "headline함수"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "init함수"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "lexize함수"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr ""
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr ""
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr ""
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "전달_릴레이션이름"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "인자들"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr ""
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr ""
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr ""
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr ""
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr ""
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "입력함수"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "출력함수"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "받는함수"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "주는함수"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr ""
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr ""
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "분석함수"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr ""
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "정렬"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "스토리지"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr ""
+
+#: sql_help.c:3065
+msgid "category"
+msgstr ""
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr ""
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "기본값"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "요소"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "구분자"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr ""
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr ""
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "별칭"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr ""
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "커서이름"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "출력표현식"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr ""
+
+#: sql_help.c:3190
+msgid "code"
+msgstr ""
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "매개변수"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "명령구문"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "방향"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "방향 자리는 비워두거나 다음 중 하나:"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "출력개수"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "시퀀스이름"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "인자이름"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "인자자료형"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr ""
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "원격_스키마"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "로컬_스키마"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr ""
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr ""
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "conflict_target 사용법:"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "인덱스칼럼이름"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "인덱스표현식"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr ""
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "conflict_action 사용법:"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr ""
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr ""
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr ""
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "lockmode 사용법:"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr ""
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "기존롤"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "새롤"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "savepoint_name"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr ""
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "윈도우이름"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "원도우정의"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr ""
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr ""
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "칼럼별칭"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "표본추출방법"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr ""
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr ""
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "칼럼정의"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr ""
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr ""
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr ""
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr ""
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr ""
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "값"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr ""
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr ""
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr ""
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "새테이블"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr ""
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr ""
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr ""
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "현재 트랜잭션 중지함"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "집계함수 정보 바꾸기"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "collation 정의 바꾸기"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "문자코드 변환규칙(conversion) 정보 바꾸기"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "데이터베이스 변경"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "기본 접근 권한 정의"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "도메인 정보 바꾸기"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "트리거 정보 바꾸기"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "확장모듈 정의 바꾸기"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "외부 데이터 래퍼 정의 바꾸기"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "외부 테이블 정의 바꾸기"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "함수 정보 바꾸기"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "롤 이름이나 맴버쉽 바꾸기"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "인덱스 정의 바꾸기"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "procedural language 정보 바꾸기"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "대형 객체 정의 바꾸기"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "materialized 뷰 정의 바꾸기"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "연산자 정의 바꾸기"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "연산자 클래스 정보 바꾸기"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "연산자 부류의 정의 바꾸기"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "로우 단위 보안 정책의 정의 바꾸기"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "프로시져 정의 바꾸기"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "발행 정보 바꾸기"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "데이터베이스 롤 변경"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "루틴 정의 바꾸기"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "룰 정의 바꾸기"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "스키마 이름 바꾸기"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "시퀀스 정보 바꾸기"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "외부 서버 정의 바꾸기"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "확장 통계정보 객체 정의 바꾸기"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "구독 정보 바꾸기"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "서버 환경 설정 매개 변수 바꾸기"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "테이블 정보 바꾸기"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "테이블스페이스 정의 바꾸기"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "텍스트 검색 구성 정의 바꾸기"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "텍스트 검색 사전 정의 바꾸기"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "텍스트 검색 파서 정의 바꾸기"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "텍스트 검색 템플릿 정의 바꾸기"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "트리거 정보 바꾸기"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "자료형 정의 바꾸기"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "사용자 매핑 정의 바꾸기"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "뷰 정의 바꾸기"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "데이터베이스 사용 통계 정보를 갱신함"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "트랜잭션 블럭을 시작함"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "프로시져 호출"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "트랜잭션 로그를 강제로 체크포인트 함"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "커서 닫기"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "지정한 인덱스 기준으로 테이블 자료를 다시 저장함"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "해당 개체의 코멘트를 지정하거나 수정함"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "현재 트랜잭션 commit"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "two-phase 커밋을 위해 먼저 준비된 트랜잭션을 커밋하세요."
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "테이블과 파일 사이 자료를 복사함"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "새 접속 방법 정의"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "새 집계합수 만들기"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "새 형변환자 만들기"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "새 collation 만들기"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "새 문자코드변환규칙(conversion) 만들기"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "데이터베이스 생성"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "새 도메인 만들기"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "새 이벤트 트리거 만들기"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "확장 모듈 설치"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "새 외부 데이터 래퍼 정의"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "새 외부 테이블 정의"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "새 함수 만들기"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "새 데이터베이스 롤 만들기"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "새 인덱스 만들기"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "새 프로시주얼 언어 만들기"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "새 materialized 뷰 만들기"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "새 연산자 만들기"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "새 연잔자 클래스 만들기"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "새 연산자 부류 만들기"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "특정 테이블에 로우 단위 보안 정책 정의"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "새 프로시져 만들기"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "새 발행 만들기"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "새 룰(rule) 만들기"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "새 스키마(schema) 만들기"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "새 시퀀스 만들기"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "새 외부 서버 정의"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "새 확장 통계정보 만들기"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "새 구독 만들기"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "새 테이블 만들기"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "쿼리 결과를 새 테이블로 만들기"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "새 테이블스페이스 만들기"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "새 텍스트 검색 구성 정의"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "새 텍스트 검색 사전 정의"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "새 텍스트 검색 파서 정의"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "새 텍스트 검색 템플릿 정의"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "새 transform 만들기"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "새 트리거 만들기"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "새 자료형 만들기"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "사용자와 외부 서버 간의 새 매핑 정의"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "새 view 만들기"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "준비된 구문(prepared statement) 지우기"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "커서 지정"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "테이블의 자료 삭제"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "세션 상태 삭제"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "임의 코드 블록 실행"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "접근 방법 삭제"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "집계 함수 삭제"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "형변환자 삭제"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "collation 삭제"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "문자코드 변환규칙(conversion) 삭제"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "데이터베이스 삭제"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "도메인 삭제"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "이벤트 트리거 삭제"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "확장 모듈 삭제"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "외부 데이터 래퍼 제거"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "외부 테이블 삭제"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "함수 삭제"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "데이터베이스 롤 삭제"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "인덱스 삭제"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "프로시주얼 언어 삭제"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "materialized 뷰 삭제"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "연산자 삭제"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "연산자 클래스 삭제"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "연산자 부류 삭제"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "데이터베이스 롤로 권한이 부여된 데이터베이스 개체들을 삭제하세요"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "특정 테이블에 정의된 로우 단위 보안 정책 삭제"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "프로시져 삭제"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "발행 삭제"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "루틴 삭제"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "룰(rule) 삭제"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "스키마(schema) 삭제"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "시퀀스 삭제"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "외부 서버 설명자 제거"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "확장 통계정보 삭제"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "구독 삭제"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "테이블 삭제"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "테이블스페이스 삭제"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "텍스트 검색 구성 제거"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "텍스트 검색 사전 제거"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "텍스트 검색 파서 제거"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "텍스트 검색 템플릿 제거"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "transform 삭제"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "트리거 삭제"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "자료형 삭제"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "외부 서버에 대한 사용자 매핑 제거"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "뷰(view) 삭제"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "준비된 구문(prepared statement) 실행"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "쿼리 실행계획 보기"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "해당 커서에서 자료 뽑기"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "액세스 권한 지정하기"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "외부 서버로부터 테이블 정의 가져오기"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "테이블 자료 삽입"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "특정 서버 메시지 수신함"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "공유 라이브러리 파일 로드"
+
+#: sql_help.c:5725
+msgid "lock a table"
+msgstr "테이블 잠금"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "커서 위치 옮기기"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "특정 서버 메시지 발생"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "준비된 구문(prepared statement) 만들기"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "two-phase 커밋을 위해 현재 트랜잭션을 준비함"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "데이터베이스 롤로 권한이 부여된 데이터베이스 개체들의 소유주 바꾸기"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "구체화된 뷰의 내용 수정"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "인덱스 다시 만들기"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "이전 정의된 savepoint를 파기함"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "실시간 환경 변수값을 초기값으로 다시 지정"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "액세스 권한 해제하기"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "two-phase 커밋을 위해 먼저 준비되었던 트랜잭션 실행취소하기"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "savepoint 파기하기"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "현재 트랜잭션에서 새로운 savepoint 만들기"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "해당 개체에 보안 라벨을 정의하거나 변경"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "테이블이나 뷰의 자료를 출력"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "실시간 환경 변수값 바꾸기"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "현재 트랜잭션에서 제약조건 설정"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "현재 세션의 현재 사용자 식별자를 지정"
+
+#: sql_help.c:5851
+msgid ""
+"set the session user identifier and the current user identifier of the "
+"current session"
+msgstr "현재 세션의 사용자 인증을 지정함 - 사용자 지정"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "현재 트랜잭션의 성질을 지정함"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "실시간 환경 변수값들을 보여줌"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "하나 또는 지정한 여러개의 테이블에서 모든 자료 지움"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "특정 서버 메시지 수신 기능 끔"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "테이블 자료 갱신"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "물리적인 자료 정리 작업 - 쓰레기값 청소"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "compute a set of rows"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 옵션은 비대화형 모드에서만 사용할 수 있음"
+
+#: startup.c:299
+#, c-format
+msgid "could not connect to server: %s"
+msgstr "서버 접속 실패: %s"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "\"%s\" 잠금파일을 열 수 없음: %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"도움말을 보려면 \"help\"를 입력하십시오.\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "출력 매개 변수 \"%s\" 지정할 수 없음"
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "자세한 도움말은 \"%s --help\"\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "추가 명령행 인자 \"%s\" 무시됨"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "실행 가능한 프로그램을 찾을 수 없음"
+
+#: tab-complete.c:4640
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"탭 자동완성용 쿼리 실패: %s\n"
+"사용한 쿼리:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "잘못된 \"%s\" 값을 \"%s\" 변수값으로 사용함: 불린형이어야 함"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "\"%s\" 값은 \"%s\" 변수값으로 사용할 수 없음; 정수형이어야 함"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "잘못된 변수 이름: \"%s\""
+
+#: variables.c:393
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"\"%s\" 값은 \"%s\" 변수값으로 사용할 수 없음\n"
+"사용할 수 있는 변수값: %s"
diff --git a/src/bin/psql/po/ru.po b/src/bin/psql/po/ru.po
new file mode 100644
index 0000000..5e6303c
--- /dev/null
+++ b/src/bin/psql/po/ru.po
@@ -0,0 +1,6933 @@
+# Russian message translation file for psql
+# Copyright (C) 2001-2016 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Serguei A. Mokhov <mokhov@cs.concordia.ca>, 2001-2005.
+# Oleg Bartunov <oleg@sai.msu.su>, 2004-2005.
+# Sergey Burladyan <eshkinkot@gmail.com>, 2012.
+# Alexander Lakhin <exclusion@gmail.com>, 2012-2017, 2018, 2019, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: psql (PostgreSQL current)\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2021-02-08 07:28+0300\n"
+"PO-Revision-Date: 2020-11-20 15:23+0300\n"
+"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
+"Language-Team: Russian <pgsql-ru-general@postgresql.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "важно: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "ошибка: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "предупреждение: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "не удалось определить текущий каталог: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "неверный исполняемый файл \"%s\""
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "не удалось прочитать исполняемый файл \"%s\""
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "не удалось найти запускаемый файл \"%s\""
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "не удалось перейти в каталог \"%s\": %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "не удалось прочитать символическую ссылку \"%s\": %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "ошибка pclose: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1255 command.c:3173 command.c:3222 command.c:3339 input.c:227
+#: mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "нехватка памяти"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "нехватка памяти\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "попытка дублирования нулевого указателя (внутренняя ошибка)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "выяснить эффективный идентификатор пользователя (%ld) не удалось: %s"
+
+#: ../../common/username.c:45 command.c:559
+msgid "user does not exist"
+msgstr "пользователь не существует"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "распознать имя пользователя не удалось (код ошибки: %lu)"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "неисполняемая команда"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "команда не найдена"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "дочерний процесс завершился с кодом возврата %d"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "дочерний процесс прерван исключением 0x%X"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "дочерний процесс завершён по сигналу %d: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "дочерний процесс завершился с нераспознанным состоянием %d"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "Сигнал отмены отправлен\n"
+
+#: ../../fe_utils/cancel.c:165 ../../fe_utils/cancel.c:210
+msgid "Could not send cancel request: "
+msgstr "Отправить сигнал отмены не удалось: "
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu строка)"
+msgstr[1] "(%lu строки)"
+msgstr[2] "(%lu строк)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "Прервано\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr ""
+"Ошибка добавления заголовка таблицы: превышен предел числа столбцов (%d).\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr ""
+"Ошибка добавления ячейки в таблицу: превышен предел числа ячеек (%d).\n"
+
+#: ../../fe_utils/print.c:3414
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "неверный формат вывода (внутренняя ошибка): %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "рекурсивное расширение переменной \"%s\" пропускается"
+
+#: command.c:224
+#, c-format
+msgid "invalid command \\%s"
+msgstr "неверная команда \\%s"
+
+#: command.c:226
+#, c-format
+msgid "Try \\? for help."
+msgstr "Введите \\? для получения справки."
+
+#: command.c:244
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: лишний аргумент \"%s\" пропущен"
+
+#: command.c:296
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr ""
+"команда \\%s игнорируется; добавьте \\endif или нажмите Ctrl-C для "
+"завершения текущего блока \\if"
+
+#: command.c:557
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "не удалось получить домашний каталог пользователя c ид. %ld: %s"
+
+#: command.c:575
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: не удалось перейти в каталог \"%s\": %m"
+
+#: command.c:600
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "В данный момент вы не подключены к базе данных.\n"
+
+#: command.c:613
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" on address \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"Вы подключены к базе данных \"%s\" как пользователь \"%s\" (адрес сервера "
+"\"%s\", порт \"%s\").\n"
+
+#: command.c:616
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"Вы подключены к базе данных \"%s\" как пользователь \"%s\" через сокет в \"%s"
+"\", порт \"%s\".\n"
+
+#: command.c:622
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address "
+"\"%s\") at port \"%s\".\n"
+msgstr ""
+"Вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер \"%s\": "
+"адрес \"%s\", порт \"%s\").\n"
+
+#: command.c:625
+#, c-format
+msgid ""
+"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port "
+"\"%s\".\n"
+msgstr ""
+"Вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер \"%s\", "
+"порт \"%s\").\n"
+
+#: command.c:965 command.c:1061 command.c:2550
+#, c-format
+msgid "no query buffer"
+msgstr "нет буфера запросов"
+
+#: command.c:998 command.c:5171
+#, c-format
+msgid "invalid line number: %s"
+msgstr "неверный номер строки: %s"
+
+#: command.c:1052
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr ""
+"Сервер (версия %s) не поддерживает редактирование исходного кода функции."
+
+#: command.c:1055
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr ""
+"Сервер (версия %s) не поддерживает редактирование определения представления."
+
+#: command.c:1137
+msgid "No changes"
+msgstr "Изменений нет"
+
+#: command.c:1216
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr ""
+"%s: неверное название кодировки символов или не найдена процедура "
+"перекодировки"
+
+#: command.c:1251 command.c:1992 command.c:3169 command.c:3361 command.c:5273
+#: common.c:174 common.c:223 common.c:388 common.c:1244 common.c:1272
+#: common.c:1380 common.c:1487 common.c:1525 copy.c:488 copy.c:707 help.c:62
+#: large_obj.c:157 large_obj.c:192 large_obj.c:254 startup.c:299
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1258
+msgid "There is no previous error."
+msgstr "Ошибки не было."
+
+#: command.c:1371
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: отсутствует правая скобка"
+
+#: command.c:1548 command.c:1853 command.c:1867 command.c:1884 command.c:2044
+#: command.c:2281 command.c:2517 command.c:2557
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "отсутствует необходимый аргумент \\%s"
+
+#: command.c:1679
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif не может находиться после \\else"
+
+#: command.c:1684
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif без соответствующего \\if"
+
+#: command.c:1748
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else не может находиться после \\else"
+
+#: command.c:1753
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else без соответствующего \\if"
+
+#: command.c:1793
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif без соответствующего \\if"
+
+#: command.c:1948
+msgid "Query buffer is empty."
+msgstr "Буфер запроса пуст."
+
+#: command.c:1970
+msgid "Enter new password: "
+msgstr "Введите новый пароль: "
+
+#: command.c:1971
+msgid "Enter it again: "
+msgstr "Повторите его: "
+
+#: command.c:1975
+#, c-format
+msgid "Passwords didn't match."
+msgstr "Пароли не совпадают."
+
+#: command.c:2074
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: не удалось прочитать значение переменной"
+
+#: command.c:2177
+msgid "Query buffer reset (cleared)."
+msgstr "Буфер запроса сброшен (очищен)."
+
+#: command.c:2199
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "История записана в файл \"%s\".\n"
+
+#: command.c:2286
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: имя переменной окружения не может содержать знак \"=\""
+
+#: command.c:2347
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "Сервер (версия %s) не поддерживает вывод исходного кода функции."
+
+#: command.c:2350
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "Сервер (версия %s) не поддерживает вывод определения представлений."
+
+#: command.c:2357
+#, c-format
+msgid "function name is required"
+msgstr "требуется имя функции"
+
+#: command.c:2359
+#, c-format
+msgid "view name is required"
+msgstr "требуется имя представления"
+
+#: command.c:2489
+msgid "Timing is on."
+msgstr "Секундомер включён."
+
+#: command.c:2491
+msgid "Timing is off."
+msgstr "Секундомер выключен."
+
+#: command.c:2576 command.c:2604 command.c:3771 command.c:3774 command.c:3777
+#: command.c:3783 command.c:3785 command.c:3793 command.c:3803 command.c:3812
+#: command.c:3826 command.c:3843 command.c:3901 common.c:70 copy.c:331
+#: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2988 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "Пароль: "
+
+#: command.c:2993 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "Пароль пользователя %s: "
+
+#: command.c:3047
+#, c-format
+msgid ""
+"All connection parameters must be supplied because no database connection "
+"exists"
+msgstr ""
+"Без подключения к базе данных необходимо указывать все параметры подключения"
+
+#: command.c:3367
+#, c-format
+msgid "Previous connection kept"
+msgstr "Сохранено предыдущее подключение"
+
+#: command.c:3373
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3420
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"Сейчас вы подключены к базе данных \"%s\" как пользователь \"%s\" (адрес "
+"сервера \"%s\", порт \"%s\").\n"
+
+#: command.c:3423
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" "
+"at port \"%s\".\n"
+msgstr ""
+"Вы подключены к базе данных \"%s\" как пользователь \"%s\" через сокет в \"%s"
+"\", порт \"%s\".\n"
+
+#: command.c:3429
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" on host \"%s"
+"\" (address \"%s\") at port \"%s\".\n"
+msgstr ""
+"Сейчас вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер "
+"\"%s\": адрес \"%s\", порт \"%s\").\n"
+
+#: command.c:3432
+#, c-format
+msgid ""
+"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at "
+"port \"%s\".\n"
+msgstr ""
+"Вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер \"%s\", "
+"порт \"%s\").\n"
+
+#: command.c:3437
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Вы подключены к базе данных \"%s\" как пользователь \"%s\".\n"
+
+#: command.c:3470
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, сервер %s)\n"
+
+#: command.c:3478
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: %s имеет базовую версию %s, а сервер - %s.\n"
+" Часть функций psql может не работать.\n"
+
+#: command.c:3517
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL-соединение (протокол: %s, шифр: %s, бит: %s, сжатие: %s)\n"
+
+#: command.c:3518 command.c:3519 command.c:3520
+msgid "unknown"
+msgstr "неизвестно"
+
+#: command.c:3521 help.c:45
+msgid "off"
+msgstr "выкл."
+
+#: command.c:3521 help.c:45
+msgid "on"
+msgstr "вкл."
+
+#: command.c:3535
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "Соединение зашифровано GSSAPI\n"
+
+#: command.c:3555
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: Кодовая страница консоли (%u) отличается от основной\n"
+" страницы Windows (%u).\n"
+" 8-битовые (русские) символы могут отображаться некорректно.\n"
+" Подробнее об этом смотрите документацию psql, раздел\n"
+" \"Notes for Windows users\".\n"
+
+#: command.c:3659
+#, c-format
+msgid ""
+"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a "
+"line number"
+msgstr ""
+"в переменной окружения PSQL_EDITOR_LINENUMBER_ARG должен быть указан номер "
+"строки"
+
+#: command.c:3688
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "не удалось запустить редактор \"%s\""
+
+#: command.c:3690
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "не удалось запустить /bin/sh"
+
+#: command.c:3728
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "не удалось найти временный каталог: %s"
+
+#: command.c:3755
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "не удалось открыть временный файл \"%s\": %m"
+
+#: command.c:4060
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr ""
+"\\pset: неоднозначному сокращению \"%s\" соответствует и \"%s\", и \"%s\""
+
+#: command.c:4080
+#, c-format
+msgid ""
+"\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-"
+"longtable, troff-ms, unaligned, wrapped"
+msgstr ""
+"\\pset: допустимые форматы: aligned, asciidoc, csv, html, latex, latex-"
+"longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:4099
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: допустимые стили линий: ascii, old-ascii, unicode"
+
+#: command.c:4114
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: допустимые стили Unicode-линий границ: single, double"
+
+#: command.c:4129
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: допустимые стили Unicode-линий столбцов: single, double"
+
+#: command.c:4144
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: допустимые стили Unicode-линий заголовков: single, double"
+
+#: command.c:4187
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: символ csv_fieldsep должен быть однобайтовым"
+
+#: command.c:4192
+#, c-format
+msgid ""
+"\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage "
+"return"
+msgstr ""
+"\\pset: в качестве csv_fieldsep нельзя выбрать символ кавычек, новой строки "
+"или возврата каретки"
+
+#: command.c:4329 command.c:4517
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "неизвестный параметр \\pset: %s"
+
+#: command.c:4349
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Стиль границ: %d.\n"
+
+#: command.c:4355
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "Ширина вывода сброшена.\n"
+
+#: command.c:4357
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "Ширина вывода: %d.\n"
+
+#: command.c:4364
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Расширенный вывод включён.\n"
+
+#: command.c:4366
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "Расширенный вывод применяется автоматически.\n"
+
+#: command.c:4368
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Расширенный вывод выключен.\n"
+
+#: command.c:4374
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "Разделитель полей для CSV: \"%s\".\n"
+
+#: command.c:4382 command.c:4390
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Разделитель полей - нулевой байт.\n"
+
+#: command.c:4384
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Разделитель полей: \"%s\".\n"
+
+#: command.c:4397
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Строка итогов включена.\n"
+
+#: command.c:4399
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Строка итогов выключена.\n"
+
+#: command.c:4405
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Формат вывода: %s.\n"
+
+#: command.c:4411
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Установлен стиль линий: %s.\n"
+
+#: command.c:4418
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null выводится как: \"%s\".\n"
+
+#: command.c:4426
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "Локализованный вывод чисел включён.\n"
+
+#: command.c:4428
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "Локализованный вывод чисел выключен.\n"
+
+#: command.c:4435
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Постраничник используется для вывода длинного текста.\n"
+
+#: command.c:4437
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Постраничник используется всегда.\n"
+
+#: command.c:4439
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "Постраничник выключен.\n"
+
+#: command.c:4445
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "Постраничник не будет использоваться, если строк меньше %d\n"
+msgstr[1] "Постраничник не будет использоваться, если строк меньше %d\n"
+msgstr[2] "Постраничник не будет использоваться, если строк меньше %d\n"
+
+#: command.c:4455 command.c:4465
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Разделитель записей - нулевой байт.\n"
+
+#: command.c:4457
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Разделитель записей: <новая строка>.\n"
+
+#: command.c:4459
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Разделитель записей: \"%s\".\n"
+
+#: command.c:4472
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Атрибуты HTML-таблицы: \"%s\".\n"
+
+#: command.c:4475
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Атрибуты HTML-таблицы не заданы.\n"
+
+#: command.c:4482
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Заголовок: \"%s\".\n"
+
+#: command.c:4484
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Заголовок не задан.\n"
+
+#: command.c:4491
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "Режим вывода только кортежей включён.\n"
+
+#: command.c:4493
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "Режим вывода только кортежей выключен.\n"
+
+#: command.c:4499
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Стиль Unicode-линий границ: \"%s\".\n"
+
+#: command.c:4505
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Стиль Unicode-линий столбцов: \"%s\".\n"
+
+#: command.c:4511
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Стиль Unicode-линий границ: \"%s\".\n"
+
+#: command.c:4744
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: ошибка"
+
+#: command.c:4769 common.c:648
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch нельзя использовать с пустым запросом"
+
+#: command.c:4810
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (обновление: %g с)\n"
+
+#: command.c:4813
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (обновление: %g с)\n"
+
+#: command.c:4867 command.c:4874 common.c:548 common.c:555 common.c:1227
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********* ЗАПРОС *********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:5066
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\" — не представление"
+
+#: command.c:5082
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "не удалось разобрать массив reloptions"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "экранирование строк не работает без подключения к БД"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr ""
+"аргумент команды оболочки содержит символ новой строки или перевода каретки: "
+"\"%s\""
+
+#: common.c:304
+#, c-format
+msgid "connection to server was lost"
+msgstr "подключение к серверу было потеряно"
+
+#: common.c:308
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "Подключение к серверу потеряно. Попытка восстановления "
+
+#: common.c:313
+#, c-format
+msgid "Failed.\n"
+msgstr "неудачна.\n"
+
+#: common.c:326
+#, c-format
+msgid "Succeeded.\n"
+msgstr "удачна.\n"
+
+#: common.c:378 common.c:945 common.c:1162
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "неожиданное значение PQresultStatus: %d"
+
+#: common.c:487
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Время: %.3f мс\n"
+
+#: common.c:502
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Время: %.3f мс (%02d:%06.3f)\n"
+
+#: common.c:511
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Время: %.3f мс (%02d:%02d:%06.3f)\n"
+
+#: common.c:518
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Время: %.3f мс (%.0f д. %02d:%02d:%06.3f)\n"
+
+#: common.c:542 common.c:600 common.c:1198
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "В данный момент вы не подключены к базе данных."
+
+#: common.c:655
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch нельзя использовать с COPY"
+
+#: common.c:660
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "неожиданное состояние результата для \\watch"
+
+#: common.c:690
+#, c-format
+msgid ""
+"Asynchronous notification \"%s\" with payload \"%s\" received from server "
+"process with PID %d.\n"
+msgstr ""
+"Получено асинхронное уведомление \"%s\" с сообщением-нагрузкой \"%s\" от "
+"серверного процесса с PID %d.\n"
+
+#: common.c:693
+#, c-format
+msgid ""
+"Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr ""
+"Получено асинхронное уведомление \"%s\" от серверного процесса с PID %d.\n"
+
+#: common.c:726 common.c:743
+#, c-format
+msgid "could not print result table: %m"
+msgstr "не удалось вывести таблицу результатов: %m"
+
+#: common.c:764
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "сервер не возвратил строк для \\gset"
+
+#: common.c:769
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "сервер возвратил больше одной строки для \\gset"
+
+#: common.c:787
+#, c-format
+msgid "attempt to \\gset into specially treated variable \"%s\" ignored"
+msgstr "попытка выполнить \\gset со специальной переменной \"%s\" игнорируется"
+
+#: common.c:1207
+#, c-format
+msgid ""
+"***(Single step mode: verify "
+"command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to "
+"cancel)********************\n"
+msgstr ""
+"***(Пошаговый режим: проверка "
+"команды)******************************************\n"
+"%s\n"
+"***(Enter - выполнение; x и Enter - отмена)**************\n"
+
+#: common.c:1262
+#, c-format
+msgid ""
+"The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr ""
+"Сервер (версия %s) не поддерживает точки сохранения для ON_ERROR_ROLLBACK."
+
+#: common.c:1325
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "ОПЕРАТОР: %s"
+
+#: common.c:1368
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "неожиданное состояние транзакции (%d)"
+
+#: common.c:1509 describe.c:2001
+msgid "Column"
+msgstr "Столбец"
+
+#: common.c:1510 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3733 describe.c:3943
+#: describe.c:4176 describe.c:5382
+msgid "Type"
+msgstr "Тип"
+
+#: common.c:1559
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "Команда не выдала результат, либо в результате нет столбцов.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "укажите аргументы \\copy"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: ошибка разбора аргумента \"%s\""
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: ошибка разбора в конце строки"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "не удалось выполнить команду \"%s\": %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "не удалось получить информацию о файле \"%s\": %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "COPY FROM/TO не может работать с каталогом (%s)"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "не удалось закрыть канал сообщений с внешней командой: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "не удалось записать данные COPY: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "ошибка передачи данных COPY: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "отменено пользователем"
+
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Вводите данные для копирования, разделяя строки переводом строки.\n"
+"Закончите ввод строкой '\\.' или сигналом EOF."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "прерывание из-за ошибки чтения"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "попытка выйти из режима копирования"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: оператор не возвратил результирующий набор"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: запрос должен возвращать минимум три столбца"
+
+#: crosstabview.c:156
+#, c-format
+msgid ""
+"\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr ""
+"\\crosstabview: для вертикальных и горизонтальных заголовков должны "
+"задаваться разные столбцы"
+
+#: crosstabview.c:172
+#, c-format
+msgid ""
+"\\crosstabview: data column must be specified when query returns more than "
+"three columns"
+msgstr ""
+"\\crosstabview: когда запрос возвращает больше трёх столбцов, необходимо "
+"указать столбец данных"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: превышен максимум числа столбцов (%d)"
+
+#: crosstabview.c:397
+#, c-format
+msgid ""
+"\\crosstabview: query result contains multiple data values for row \"%s\", "
+"column \"%s\""
+msgstr ""
+"\\crosstabview: в результатах запроса содержится несколько значений данных "
+"для строки \"%s\", столбца \"%s\""
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: номер столбца %d выходит за рамки диапазона 1..%d"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: неоднозначное имя столбца: \"%s\""
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: имя столбца не найдено: \"%s\""
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3722 describe.c:3930
+#: describe.c:4174 describe.c:4265 describe.c:4532 describe.c:4692
+#: describe.c:4933 describe.c:5008 describe.c:5019 describe.c:5081
+#: describe.c:5506 describe.c:5589
+msgid "Schema"
+msgstr "Схема"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3723 describe.c:3931 describe.c:4097 describe.c:4175
+#: describe.c:4266 describe.c:4345 describe.c:4533 describe.c:4617
+#: describe.c:4693 describe.c:4934 describe.c:5009 describe.c:5020
+#: describe.c:5082 describe.c:5279 describe.c:5363 describe.c:5587
+#: describe.c:5759 describe.c:5999
+msgid "Name"
+msgstr "Имя"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "Тип данных результата"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "Типы данных аргументов"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3510 describe.c:3783 describe.c:3977 describe.c:4128
+#: describe.c:4202 describe.c:4275 describe.c:4358 describe.c:4441
+#: describe.c:4560 describe.c:4626 describe.c:4694 describe.c:4835
+#: describe.c:4877 describe.c:4950 describe.c:5012 describe.c:5021
+#: describe.c:5083 describe.c:5305 describe.c:5385 describe.c:5520
+#: describe.c:5590 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Описание"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Список агрегатных функций"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "Сервер (версия %s) не поддерживает методы доступа."
+
+#: describe.c:175
+msgid "Index"
+msgstr "Индекс"
+
+#: describe.c:176 describe.c:3741 describe.c:3956 describe.c:5507
+msgid "Table"
+msgstr "Таблица"
+
+#: describe.c:184 describe.c:5284
+msgid "Handler"
+msgstr "Обработчик"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "Список методов доступа"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "Сервер (версия %s) не поддерживает табличные пространства."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3734 describe.c:3932 describe.c:4101
+#: describe.c:4347 describe.c:4618 describe.c:5280 describe.c:5364
+#: describe.c:5760 describe.c:5897 describe.c:6000 describe.c:6115
+#: describe.c:6194 large_obj.c:289
+msgid "Owner"
+msgstr "Владелец"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "Расположение"
+
+#: describe.c:263 describe.c:3327
+msgid "Options"
+msgstr "Параметры"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3775 describe.c:3779
+msgid "Size"
+msgstr "Размер"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "Список табличных пространств"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df принимает в качестве параметров только [anptwS+]"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df не поддерживает параметр \"%c\" с сервером версии %s"
+
+# well-spelled: агр
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "агр."
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "оконная"
+
+#: describe.c:391
+msgid "proc"
+msgstr "проц."
+
+# well-spelled: функ
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "функ."
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "триггерная"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "постоянная"
+
+#: describe.c:484
+msgid "stable"
+msgstr "стабильная"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "изменчивая"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "Изменчивость"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "ограниченная"
+
+#: describe.c:495
+msgid "safe"
+msgstr "безопасная"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "небезопасная"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "Параллельность"
+
+#: describe.c:502
+msgid "definer"
+msgstr "определившего"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "вызывающего"
+
+#: describe.c:504
+msgid "Security"
+msgstr "Безопасность"
+
+#: describe.c:511
+msgid "Language"
+msgstr "Язык"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "Исходный код"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "Список функций"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "Внутреннее имя"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "Элементы"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "Список типов данных"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "Тип левого аргумента"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "Тип правого аргумента"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "Результирующий тип"
+
+#: describe.c:819 describe.c:4353 describe.c:4418 describe.c:4424
+#: describe.c:4834 describe.c:6366 describe.c:6370
+msgid "Function"
+msgstr "Функция"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "Список операторов"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "Кодировка"
+
+#: describe.c:879 describe.c:4534
+msgid "Collate"
+msgstr "LC_COLLATE"
+
+#: describe.c:880 describe.c:4535
+msgid "Ctype"
+msgstr "LC_CTYPE"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "Табл. пространство"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "Список баз данных"
+
+#: describe.c:956 describe.c:1117 describe.c:3724
+msgid "table"
+msgstr "таблица"
+
+#: describe.c:957 describe.c:3725
+msgid "view"
+msgstr "представление"
+
+#: describe.c:958 describe.c:3726
+msgid "materialized view"
+msgstr "материализованное представление"
+
+#: describe.c:959 describe.c:1119 describe.c:3728
+msgid "sequence"
+msgstr "последовательность"
+
+#: describe.c:960 describe.c:3730
+msgid "foreign table"
+msgstr "сторонняя таблица"
+
+#: describe.c:961 describe.c:3731 describe.c:3941
+msgid "partitioned table"
+msgstr "секционированная таблица"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "Права для столбцов"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "Политики"
+
+#: describe.c:1070 describe.c:6056 describe.c:6060
+msgid "Access privileges"
+msgstr "Права доступа"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "Сервер (версия %s) не поддерживает изменение прав по умолчанию."
+
+#: describe.c:1121
+msgid "function"
+msgstr "функция"
+
+#: describe.c:1123
+msgid "type"
+msgstr "тип"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "схема"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "Права доступа по умолчанию"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "Объект"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "ограничение таблицы"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "ограничение домена"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "класс операторов"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "семейство операторов"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "правило"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "Описание объекта"
+
+#: describe.c:1402 describe.c:3847
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "Отношение \"%s\" не найдено."
+
+#: describe.c:1405 describe.c:3850
+#, c-format
+msgid "Did not find any relations."
+msgstr "Отношения не найдены."
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "Отношение с OID %s не найдено."
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "Начальное_значение"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "Минимум"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "Максимум"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "Шаг"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4269
+#: describe.c:4435 describe.c:4549 describe.c:4554 describe.c:6103
+msgid "yes"
+msgstr "да"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4269
+#: describe.c:4432 describe.c:4549 describe.c:6104
+msgid "no"
+msgstr "нет"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "Зацикливается?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "Кешируется"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "Владелец: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Последовательность для столбца идентификации: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Последовательность \"%s.%s\""
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Нежурналируемая таблица \"%s.%s\""
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Таблица \"%s.%s\""
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Представление \"%s.%s\""
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Нежурналируемое материализованное представление \"%s.%s\""
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Материализованное представление \"%s.%s\""
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Нежурналируемый индекс \"%s.%s\""
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Индекс \"%s.%s\""
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Нежурналируемый секционированный индекс \"%s.%s\""
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "Секционированный индекс \"%s.%s\""
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Специальное отношение \"%s.%s\""
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "TOAST-таблица \"%s.%s\""
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Составной тип \"%s.%s\""
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Сторонняя таблица \"%s.%s\""
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Нежурналируемая секционированная таблица \"%s.%s\""
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "Секционированная таблица \"%s.%s\""
+
+#: describe.c:2005 describe.c:4182
+msgid "Collation"
+msgstr "Правило сортировки"
+
+#: describe.c:2006 describe.c:4189
+msgid "Nullable"
+msgstr "Допустимость NULL"
+
+#: describe.c:2007 describe.c:4190
+msgid "Default"
+msgstr "По умолчанию"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "Ключевой?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "Определение"
+
+# well-spelled: ОСД
+#: describe.c:2014 describe.c:5300 describe.c:5384 describe.c:5455
+#: describe.c:5519
+msgid "FDW options"
+msgstr "Параметры ОСД"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "Хранилище"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "Цель для статистики"
+
+#: describe.c:2135
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Секция из: %s %s"
+
+#: describe.c:2147
+msgid "No partition constraint"
+msgstr "Нет ограничения секции"
+
+#: describe.c:2149
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Ограничение секции: %s"
+
+#: describe.c:2173
+#, c-format
+msgid "Partition key: %s"
+msgstr "Ключ разбиения: %s"
+
+#: describe.c:2199
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "Принадлежит таблице: \"%s.%s\""
+
+#: describe.c:2270
+msgid "primary key, "
+msgstr "первичный ключ, "
+
+#: describe.c:2272
+msgid "unique, "
+msgstr "уникальный, "
+
+#: describe.c:2278
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "для таблицы \"%s.%s\""
+
+#: describe.c:2282
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", предикат (%s)"
+
+#: describe.c:2285
+msgid ", clustered"
+msgstr ", кластеризованный"
+
+#: describe.c:2288
+msgid ", invalid"
+msgstr ", нерабочий"
+
+#: describe.c:2291
+msgid ", deferrable"
+msgstr ", откладываемый"
+
+#: describe.c:2294
+msgid ", initially deferred"
+msgstr ", изначально отложенный"
+
+#: describe.c:2297
+msgid ", replica identity"
+msgstr ", репликационный"
+
+#: describe.c:2364
+msgid "Indexes:"
+msgstr "Индексы:"
+
+#: describe.c:2448
+msgid "Check constraints:"
+msgstr "Ограничения-проверки:"
+
+# TO REWVIEW
+#: describe.c:2516
+msgid "Foreign-key constraints:"
+msgstr "Ограничения внешнего ключа:"
+
+#: describe.c:2579
+msgid "Referenced by:"
+msgstr "Ссылки извне:"
+
+#: describe.c:2629
+msgid "Policies:"
+msgstr "Политики:"
+
+#: describe.c:2632
+msgid "Policies (forced row security enabled):"
+msgstr "Политики (усиленная защита строк включена):"
+
+#: describe.c:2635
+msgid "Policies (row security enabled): (none)"
+msgstr "Политики (защита строк включена): (Нет)"
+
+#: describe.c:2638
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Политики (усиленная защита строк включена): (Нет)"
+
+#: describe.c:2641
+msgid "Policies (row security disabled):"
+msgstr "Политики (защита строк выключена):"
+
+#: describe.c:2709
+msgid "Statistics objects:"
+msgstr "Объекты статистики:"
+
+#: describe.c:2823 describe.c:2927
+msgid "Rules:"
+msgstr "Правила:"
+
+#: describe.c:2826
+msgid "Disabled rules:"
+msgstr "Отключённые правила:"
+
+#: describe.c:2829
+msgid "Rules firing always:"
+msgstr "Правила, срабатывающие всегда:"
+
+#: describe.c:2832
+msgid "Rules firing on replica only:"
+msgstr "Правила, срабатывающие только в реплике:"
+
+#: describe.c:2872
+msgid "Publications:"
+msgstr "Публикации:"
+
+#: describe.c:2910
+msgid "View definition:"
+msgstr "Определение представления:"
+
+#: describe.c:3057
+msgid "Triggers:"
+msgstr "Триггеры:"
+
+#: describe.c:3061
+msgid "Disabled user triggers:"
+msgstr "Отключённые пользовательские триггеры:"
+
+#: describe.c:3063
+msgid "Disabled triggers:"
+msgstr "Отключённые триггеры:"
+
+#: describe.c:3066
+msgid "Disabled internal triggers:"
+msgstr "Отключённые внутренние триггеры:"
+
+#: describe.c:3069
+msgid "Triggers firing always:"
+msgstr "Триггеры, срабатывающие всегда:"
+
+#: describe.c:3072
+msgid "Triggers firing on replica only:"
+msgstr "Триггеры, срабатывающие только в реплике:"
+
+#: describe.c:3144
+#, c-format
+msgid "Server: %s"
+msgstr "Сервер: %s"
+
+# well-spelled: ОСД
+#: describe.c:3152
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "Параметр ОСД: (%s)"
+
+#: describe.c:3173
+msgid "Inherits"
+msgstr "Наследует"
+
+#: describe.c:3233
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Число секций: %d"
+
+#: describe.c:3242
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Число секций: %d (чтобы просмотреть их, введите \\d+)"
+
+#: describe.c:3244
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Дочерних таблиц: %d (чтобы просмотреть и их, воспользуйтесь \\d+)"
+
+#: describe.c:3251
+msgid "Child tables"
+msgstr "Дочерние таблицы"
+
+#: describe.c:3251
+msgid "Partitions"
+msgstr "Секции"
+
+#: describe.c:3280
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Типизированная таблица типа: %s"
+
+#: describe.c:3296
+msgid "Replica Identity"
+msgstr "Идентификация реплики"
+
+#: describe.c:3309
+msgid "Has OIDs: yes"
+msgstr "Содержит OID: да"
+
+#: describe.c:3318
+#, c-format
+msgid "Access method: %s"
+msgstr "Метод доступа: %s"
+
+#: describe.c:3398
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Табличное пространство: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3410
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", табл. пространство \"%s\""
+
+#: describe.c:3503
+msgid "List of roles"
+msgstr "Список ролей"
+
+#: describe.c:3505
+msgid "Role name"
+msgstr "Имя роли"
+
+#: describe.c:3506
+msgid "Attributes"
+msgstr "Атрибуты"
+
+#: describe.c:3507
+msgid "Member of"
+msgstr "Член ролей"
+
+#: describe.c:3518
+msgid "Superuser"
+msgstr "Суперпользователь"
+
+#: describe.c:3521
+msgid "No inheritance"
+msgstr "Не наследуется"
+
+#: describe.c:3524
+msgid "Create role"
+msgstr "Создаёт роли"
+
+#: describe.c:3527
+msgid "Create DB"
+msgstr "Создаёт БД"
+
+#: describe.c:3530
+msgid "Cannot login"
+msgstr "Вход запрещён"
+
+#: describe.c:3534
+msgid "Replication"
+msgstr "Репликация"
+
+#: describe.c:3538
+msgid "Bypass RLS"
+msgstr "Пропускать RLS"
+
+#: describe.c:3547
+msgid "No connections"
+msgstr "Нет подключений"
+
+#: describe.c:3549
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d подключение"
+msgstr[1] "%d подключения"
+msgstr[2] "%d подключений"
+
+#: describe.c:3559
+msgid "Password valid until "
+msgstr "Пароль действует до "
+
+#: describe.c:3609
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr ""
+"Сервер (версия %s) не поддерживает назначение параметров ролей для баз "
+"данных."
+
+#: describe.c:3622
+msgid "Role"
+msgstr "Роль"
+
+#: describe.c:3623
+msgid "Database"
+msgstr "БД"
+
+#: describe.c:3624
+msgid "Settings"
+msgstr "Параметры"
+
+#: describe.c:3645
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "Параметры для роли \"%s\" и базы данных \"%s\" не найдены."
+
+#: describe.c:3648
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "Параметры для роли \"%s\" не найдены."
+
+#: describe.c:3651
+#, c-format
+msgid "Did not find any settings."
+msgstr "Никакие параметры не найдены."
+
+#: describe.c:3656
+msgid "List of settings"
+msgstr "Список параметров"
+
+#: describe.c:3727
+msgid "index"
+msgstr "индекс"
+
+# skip-rule: capital-letter-first
+#: describe.c:3729
+msgid "special"
+msgstr "спец. отношение"
+
+#: describe.c:3732 describe.c:3942
+msgid "partitioned index"
+msgstr "секционированный индекс"
+
+#: describe.c:3756
+msgid "permanent"
+msgstr "постоянное"
+
+#: describe.c:3757
+msgid "temporary"
+msgstr "временное"
+
+#: describe.c:3758
+msgid "unlogged"
+msgstr "нежурналируемое"
+
+#: describe.c:3759
+msgid "Persistence"
+msgstr "Хранение"
+
+#: describe.c:3855
+msgid "List of relations"
+msgstr "Список отношений"
+
+#: describe.c:3903
+#, c-format
+msgid ""
+"The server (version %s) does not support declarative table partitioning."
+msgstr ""
+"Сервер (версия %s) не поддерживает декларативное секционирование таблиц."
+
+#: describe.c:3914
+msgid "List of partitioned indexes"
+msgstr "Список секционированных индексов"
+
+#: describe.c:3916
+msgid "List of partitioned tables"
+msgstr "Список секционированных таблиц"
+
+#: describe.c:3920
+msgid "List of partitioned relations"
+msgstr "Список секционированных отношений"
+
+#: describe.c:3951
+msgid "Parent name"
+msgstr "Имя родителя"
+
+#: describe.c:3964
+msgid "Leaf partition size"
+msgstr "Размер конечной секции"
+
+#: describe.c:3967 describe.c:3973
+msgid "Total size"
+msgstr "Общий размер"
+
+#: describe.c:4105
+msgid "Trusted"
+msgstr "Доверенный"
+
+#: describe.c:4113
+msgid "Internal language"
+msgstr "Внутренний язык"
+
+#: describe.c:4114
+msgid "Call handler"
+msgstr "Обработчик вызова"
+
+#: describe.c:4115 describe.c:5287
+msgid "Validator"
+msgstr "Функция проверки"
+
+#: describe.c:4118
+msgid "Inline handler"
+msgstr "Обработчик внедрённого кода"
+
+#: describe.c:4146
+msgid "List of languages"
+msgstr "Список языков"
+
+#: describe.c:4191
+msgid "Check"
+msgstr "Проверка"
+
+#: describe.c:4233
+msgid "List of domains"
+msgstr "Список доменов"
+
+#: describe.c:4267
+msgid "Source"
+msgstr "Источник"
+
+#: describe.c:4268
+msgid "Destination"
+msgstr "Назначение"
+
+#: describe.c:4270 describe.c:6105
+msgid "Default?"
+msgstr "По умолчанию?"
+
+#: describe.c:4307
+msgid "List of conversions"
+msgstr "Список преобразований"
+
+#: describe.c:4346
+msgid "Event"
+msgstr "Событие"
+
+#: describe.c:4348
+msgid "enabled"
+msgstr "включён"
+
+#: describe.c:4349
+msgid "replica"
+msgstr "реплика"
+
+#: describe.c:4350
+msgid "always"
+msgstr "всегда"
+
+#: describe.c:4351
+msgid "disabled"
+msgstr "отключён"
+
+#: describe.c:4352 describe.c:6001
+msgid "Enabled"
+msgstr "Включён"
+
+#: describe.c:4354
+msgid "Tags"
+msgstr "Теги"
+
+#: describe.c:4373
+msgid "List of event triggers"
+msgstr "Список событийных триггеров"
+
+#: describe.c:4402
+msgid "Source type"
+msgstr "Исходный тип"
+
+#: describe.c:4403
+msgid "Target type"
+msgstr "Целевой тип"
+
+#: describe.c:4434
+msgid "in assignment"
+msgstr "в присваивании"
+
+#: describe.c:4436
+msgid "Implicit?"
+msgstr "Неявное?"
+
+#: describe.c:4491
+msgid "List of casts"
+msgstr "Список приведений типов"
+
+#: describe.c:4519
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "Сервер (версия %s) не поддерживает правила сравнения."
+
+#: describe.c:4540 describe.c:4544
+msgid "Provider"
+msgstr "Поставщик"
+
+#: describe.c:4550 describe.c:4555
+msgid "Deterministic?"
+msgstr "Детерминированное?"
+
+#: describe.c:4590
+msgid "List of collations"
+msgstr "Список правил сортировки"
+
+#: describe.c:4649
+msgid "List of schemas"
+msgstr "Список схем"
+
+#: describe.c:4674 describe.c:4921 describe.c:4992 describe.c:5063
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "Сервер (версия %s) не поддерживает полнотекстовый поиск."
+
+#: describe.c:4709
+msgid "List of text search parsers"
+msgstr "Список анализаторов текстового поиска"
+
+#: describe.c:4754
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "Анализатор текстового поиска \"%s\" не найден."
+
+#: describe.c:4757
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "Никакие анализаторы текстового поиска не найдены."
+
+#: describe.c:4832
+msgid "Start parse"
+msgstr "Начало разбора"
+
+#: describe.c:4833
+msgid "Method"
+msgstr "Метод"
+
+#: describe.c:4837
+msgid "Get next token"
+msgstr "Получение следующего фрагмента"
+
+#: describe.c:4839
+msgid "End parse"
+msgstr "Окончание разбора"
+
+#: describe.c:4841
+msgid "Get headline"
+msgstr "Получение выдержки"
+
+#: describe.c:4843
+msgid "Get token types"
+msgstr "Получение типов фрагментов"
+
+#: describe.c:4854
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Анализатор текстового поиска \"%s.%s\""
+
+#: describe.c:4857
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Анализатор текстового поиска \"%s\""
+
+#: describe.c:4876
+msgid "Token name"
+msgstr "Имя фрагмента"
+
+#: describe.c:4887
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Типы фрагментов для анализатора \"%s.%s\""
+
+#: describe.c:4890
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Типы фрагментов для анализатора \"%s\""
+
+#: describe.c:4944
+msgid "Template"
+msgstr "Шаблон"
+
+#: describe.c:4945
+msgid "Init options"
+msgstr "Параметры инициализации"
+
+#: describe.c:4967
+msgid "List of text search dictionaries"
+msgstr "Список словарей текстового поиска"
+
+#: describe.c:5010
+msgid "Init"
+msgstr "Инициализация"
+
+#: describe.c:5011
+msgid "Lexize"
+msgstr "Выделение лексем"
+
+#: describe.c:5038
+msgid "List of text search templates"
+msgstr "Список шаблонов текстового поиска"
+
+#: describe.c:5098
+msgid "List of text search configurations"
+msgstr "Список конфигураций текстового поиска"
+
+#: describe.c:5144
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "Конфигурация текстового поиска \"%s\" не найдена."
+
+#: describe.c:5147
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "Никакие конфигурации текстового поиска не найдены."
+
+#: describe.c:5213
+msgid "Token"
+msgstr "Фрагмент"
+
+#: describe.c:5214
+msgid "Dictionaries"
+msgstr "Словари"
+
+#: describe.c:5225
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Конфигурация текстового поиска \"%s.%s\""
+
+#: describe.c:5228
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Конфигурация текстового поиска \"%s\""
+
+#: describe.c:5232
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Анализатор: \"%s.%s\""
+
+#: describe.c:5235
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Анализатор: \"%s\""
+
+#: describe.c:5269
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "Сервер (версия %s) не поддерживает обёртки сторонних данных."
+
+#: describe.c:5327
+msgid "List of foreign-data wrappers"
+msgstr "Список обёрток сторонних данных"
+
+#: describe.c:5352
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "Сервер (версия %s) не поддерживает сторонние серверы."
+
+#: describe.c:5365
+msgid "Foreign-data wrapper"
+msgstr "Обёртка сторонних данных"
+
+#: describe.c:5383 describe.c:5588
+msgid "Version"
+msgstr "Версия"
+
+#: describe.c:5409
+msgid "List of foreign servers"
+msgstr "Список сторонних серверов"
+
+#: describe.c:5434
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "Сервер (версия %s) не поддерживает сопоставления пользователей."
+
+#: describe.c:5444 describe.c:5508
+msgid "Server"
+msgstr "Сервер"
+
+#: describe.c:5445
+msgid "User name"
+msgstr "Имя пользователя"
+
+#: describe.c:5470
+msgid "List of user mappings"
+msgstr "Список сопоставлений пользователей"
+
+#: describe.c:5495
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "Сервер (версия %s) не поддерживает сторонние таблицы."
+
+#: describe.c:5548
+msgid "List of foreign tables"
+msgstr "Список сторонних таблиц"
+
+#: describe.c:5573 describe.c:5630
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "Сервер (версия %s) не поддерживает расширения."
+
+#: describe.c:5605
+msgid "List of installed extensions"
+msgstr "Список установленных расширений"
+
+#: describe.c:5658
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "Расширение \"%s\" не найдено."
+
+#: describe.c:5661
+#, c-format
+msgid "Did not find any extensions."
+msgstr "Никакие расширения не найдены."
+
+#: describe.c:5705
+msgid "Object description"
+msgstr "Описание объекта"
+
+#: describe.c:5715
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Объекты в расширении \"%s\""
+
+#: describe.c:5744 describe.c:5820
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "Сервер (версия %s) не поддерживает публикации."
+
+#: describe.c:5761 describe.c:5898
+msgid "All tables"
+msgstr "Все таблицы"
+
+#: describe.c:5762 describe.c:5899
+msgid "Inserts"
+msgstr "Добавления"
+
+#: describe.c:5763 describe.c:5900
+msgid "Updates"
+msgstr "Изменения"
+
+#: describe.c:5764 describe.c:5901
+msgid "Deletes"
+msgstr "Удаления"
+
+#: describe.c:5768 describe.c:5903
+msgid "Truncates"
+msgstr "Опустошения"
+
+#: describe.c:5772 describe.c:5905
+msgid "Via root"
+msgstr "Через корень"
+
+#: describe.c:5789
+msgid "List of publications"
+msgstr "Список публикаций"
+
+#: describe.c:5862
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "Публикация \"%s\" не найдена."
+
+#: describe.c:5865
+#, c-format
+msgid "Did not find any publications."
+msgstr "Никакие публикации не найдены."
+
+#: describe.c:5894
+#, c-format
+msgid "Publication %s"
+msgstr "Публикация %s"
+
+#: describe.c:5942
+msgid "Tables:"
+msgstr "Таблицы:"
+
+#: describe.c:5986
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "Сервер (версия %s) не поддерживает подписки."
+
+#: describe.c:6002
+msgid "Publication"
+msgstr "Публикация"
+
+#: describe.c:6009
+msgid "Synchronous commit"
+msgstr "Синхронная фиксация"
+
+#: describe.c:6010
+msgid "Conninfo"
+msgstr "Строка подключения"
+
+#: describe.c:6032
+msgid "List of subscriptions"
+msgstr "Список подписок"
+
+#: describe.c:6099 describe.c:6188 describe.c:6274 describe.c:6357
+msgid "AM"
+msgstr "МД"
+
+#: describe.c:6100
+msgid "Input type"
+msgstr "Входной тип"
+
+#: describe.c:6101
+msgid "Storage type"
+msgstr "Тип хранения"
+
+#: describe.c:6102
+msgid "Operator class"
+msgstr "Класс операторов"
+
+#: describe.c:6114 describe.c:6189 describe.c:6275 describe.c:6358
+msgid "Operator family"
+msgstr "Семейство операторов"
+
+#: describe.c:6147
+msgid "List of operator classes"
+msgstr "Список классов операторов"
+
+#: describe.c:6190
+msgid "Applicable types"
+msgstr "Применимые типы"
+
+#: describe.c:6229
+msgid "List of operator families"
+msgstr "Список семейств операторов"
+
+#: describe.c:6276
+msgid "Operator"
+msgstr "Оператор"
+
+#: describe.c:6277
+msgid "Strategy"
+msgstr "Стратегия"
+
+#: describe.c:6278
+msgid "ordering"
+msgstr "сортировка"
+
+#: describe.c:6279
+msgid "search"
+msgstr "поиск"
+
+#: describe.c:6280
+msgid "Purpose"
+msgstr "Назначение"
+
+#: describe.c:6285
+msgid "Sort opfamily"
+msgstr "Семейство для сортировки"
+
+#: describe.c:6316
+msgid "List of operators of operator families"
+msgstr "Список операторов из семейств операторов"
+
+#: describe.c:6359
+msgid "Registered left type"
+msgstr "Зарегистрированный левый тип"
+
+#: describe.c:6360
+msgid "Registered right type"
+msgstr "Зарегистрированный правый тип"
+
+#: describe.c:6361
+msgid "Number"
+msgstr "Номер"
+
+#: describe.c:6397
+msgid "List of support functions of operator families"
+msgstr "Список опорных функций из семейств операторов"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql - это интерактивный терминал PostgreSQL.\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "Использование:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [ПАРАМЕТР]... [БД [ПОЛЬЗОВАТЕЛЬ]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Общие параметры:\n"
+
+#: help.c:82
+#, c-format
+msgid ""
+" -c, --command=COMMAND run only single command (SQL or internal) and "
+"exit\n"
+msgstr ""
+" -c, --command=КОМАНДА выполнить одну команду (SQL или внутреннюю) и "
+"выйти\n"
+
+#: help.c:83
+#, c-format
+msgid ""
+" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr ""
+" -d, --dbname=БД имя подключаемой базы данных (по умолчанию \"%s"
+"\")\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=ИМЯ_ФАЙЛА выполнить команды из файла и выйти\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list вывести список баз данных и выйти\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=ИМЯ=ЗНАЧЕНИЕ\n"
+" присвоить переменной psql ИМЯ заданное ЗНАЧЕНИЕ\n"
+" (например: -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version показать версию и выйти\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr ""
+" -X, --no-psqlrc игнорировать файл параметров запуска (~/.psqlrc)\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-"
+"interactive)\n"
+msgstr ""
+" -1 (\"один\"), --single-transaction\n"
+" выполнить как одну транзакцию\n"
+" (в неинтерактивном режиме)\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] показать эту справку и выйти\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands перечислить команды с \\ и выйти\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr ""
+" --help=variables перечислить специальные переменные и выйти\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Параметры ввода/вывода:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all отображать все команды из скрипта\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors отображать команды с ошибками\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries отображать команды, отправляемые серверу\n"
+
+#: help.c:101
+#, c-format
+msgid ""
+" -E, --echo-hidden display queries that internal commands generate\n"
+msgstr ""
+" -E, --echo-hidden выводить запросы, порождённые внутренними "
+"командами\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=ИМЯ_ФАЙЛА сохранять протокол работы в файл\n"
+
+#: help.c:103
+#, c-format
+msgid ""
+" -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr ""
+" -n, --no-readline отключить редактор командной строки readline\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr ""
+" -o, --output=ИМЯ_ФАЙЛА направить результаты запроса в файл (или канал "
+"|)\n"
+
+#: help.c:105
+#, c-format
+msgid ""
+" -q, --quiet run quietly (no messages, only query output)\n"
+msgstr ""
+" -q, --quiet показывать только результаты запросов, без "
+"сообщений\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr ""
+" -s, --single-step пошаговый режим (подтверждение каждого запроса)\n"
+
+#: help.c:107
+#, c-format
+msgid ""
+" -S, --single-line single-line mode (end of line terminates SQL "
+"command)\n"
+msgstr ""
+" -S, --single-line однострочный режим (конец строки завершает "
+"команду)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Параметры вывода:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align режим вывода невыровненной таблицы\n"
+
+#: help.c:111
+#, c-format
+msgid ""
+" --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr ""
+" --csv режим вывода в формате CSV (значения, "
+"разделённые\n"
+" запятыми)\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: "
+"\"%s\")\n"
+msgstr ""
+" -F, --field-separator=СТРОКА\n"
+" разделителей полей при невыровненном выводе\n"
+" (по умолчанию: \"%s\")\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html вывод таблицы в формате HTML\n"
+
+#: help.c:116
+#, c-format
+msgid ""
+" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset "
+"command)\n"
+msgstr ""
+" -P, --pset=ПАР[=ЗНАЧ] определить параметр печати ПАР (с заданным "
+"ЗНАЧЕНИЕМ)\n"
+" (см. описание \\pset)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: "
+"newline)\n"
+msgstr ""
+" -R, --record-separator=СТРОКА\n"
+" разделитель записей при невыровненном выводе\n"
+" (по умолчанию: новая строка)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only выводить только кортежи\n"
+
+#: help.c:120
+#, c-format
+msgid ""
+" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, "
+"border)\n"
+msgstr ""
+" -T, --table-attr=ТЕКСТ установить атрибуты HTML-таблицы (width, border)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded включить развёрнутый вывод таблицы\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero "
+"byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" сделать разделителем полей при невыровненном\n"
+" выводе нулевой байт\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero "
+"byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" сделать разделителем записей при невыровненном\n"
+" нулевой байт\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Параметры подключения:\n"
+
+#: help.c:130
+#, c-format
+msgid ""
+" -h, --host=HOSTNAME database server host or socket directory "
+"(default: \"%s\")\n"
+msgstr ""
+" -h, --host=ИМЯ имя сервера баз данных или каталог сокетов\n"
+" (по умолчанию: \"%s\")\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "локальный сокет"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr ""
+" -p, --port=ПОРТ порт сервера баз данных (по умолчанию: \"%s\")\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=ИМЯ имя пользователя (по умолчанию: \"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password не запрашивать пароль\n"
+
+#: help.c:142
+#, c-format
+msgid ""
+" -W, --password force password prompt (should happen "
+"automatically)\n"
+msgstr ""
+" -W, --password запрашивать пароль всегда (обычно не требуется)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help"
+"\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"Чтобы узнать больше, введите \"\\?\" (список внутренних команд) или \"\\help"
+"\"\n"
+"(справка по операторам SQL) в psql, либо обратитесь к разделу psql в\n"
+"документации PostgreSQL.\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Об ошибках сообщайте по адресу <%s>.\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашняя страница %s: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "Общие\n"
+
+# skip-rule: copyright
+#: help.c:175
+#, c-format
+msgid ""
+" \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr ""
+" \\copyright условия использования и распространения "
+"PostgreSQL\n"
+
+#: help.c:176
+#, c-format
+msgid ""
+" \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr ""
+" \\crosstabview [СТОЛБЦЫ] выполнить запрос и вывести результат в "
+"перекрёстном виде\n"
+
+#: help.c:177
+#, c-format
+msgid ""
+" \\errverbose show most recent error message at maximum "
+"verbosity\n"
+msgstr ""
+" \\errverbose вывести максимально подробное сообщение о "
+"последней ошибке\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |"
+"pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(ПАРАМЕТРЫ)] [ФАЙЛ] выполнить запрос (и направить результаты в файл\n"
+"\n"
+" или канал |); \\g без аргументов равнозначно \";"
+"\"\n"
+
+#: help.c:180
+#, c-format
+msgid ""
+" \\gdesc describe result of query, without executing it\n"
+msgstr ""
+" \\gdesc описать результат запроса, но не выполнять его\n"
+
+#: help.c:181
+#, c-format
+msgid ""
+" \\gexec execute query, then execute each value in its "
+"result\n"
+msgstr ""
+" \\gexec выполнить запрос, а затем выполнить каждую строку "
+"в результате\n"
+
+#: help.c:182
+#, c-format
+msgid ""
+" \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr ""
+" \\gset [ПРЕФИКС] выполнить запрос и сохранить результаты в "
+"переменных\n"
+" psql\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr ""
+" \\gx [(ПАРАМЕТРЫ)] [ФАЙЛ] то же, что \\g, но в режиме развёрнутого вывода\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q выйти из psql\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr ""
+" \\watch [СЕК] повторять запрос в цикле через заданное число "
+"секунд\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "Справка\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] справка по командам psql c \\\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr ""
+" \\? options справка по параметрам командной строки psql\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables справка по специальным переменным\n"
+
+#: help.c:193
+#, c-format
+msgid ""
+" \\h [NAME] help on syntax of SQL commands, * for all "
+"commands\n"
+msgstr ""
+" \\h [ИМЯ] справка по заданному SQL-оператору; * - по всем\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Буфер запроса\n"
+
+#: help.c:197
+#, c-format
+msgid ""
+" \\e [FILE] [LINE] edit the query buffer (or file) with external "
+"editor\n"
+msgstr ""
+" \\e [ФАЙЛ] [СТРОКА] править буфер запроса (или файл) во внешнем "
+"редакторе\n"
+
+#: help.c:198
+#, c-format
+msgid ""
+" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr ""
+" \\ef [ФУНКЦИЯ [СТРОКА]] править определение функции во внешнем редакторе\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr ""
+" \\ev [VIEWNAME [LINE]] править определение представления во внешнем "
+"редакторе\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p вывести содержимое буфера запросов\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r очистить буфер запроса\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [ФАЙЛ] вывести историю или сохранить её в файл\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w ФАЙЛ записать буфер запроса в файл\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "Ввод/Вывод\n"
+
+#: help.c:209
+#, c-format
+msgid ""
+" \\copy ... perform SQL COPY with data stream to the client "
+"host\n"
+msgstr " \\copy ... выполнить SQL COPY на стороне клиента\n"
+
+#: help.c:210
+#, c-format
+msgid ""
+" \\echo [-n] [STRING] write string to standard output (-n for no "
+"newline)\n"
+msgstr ""
+" \\echo [-n] [СТРОКА] записать строку в поток стандартного вывода\n"
+" (-n отключает перевод строки)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i ФАЙЛ выполнить команды из файла\n"
+
+#: help.c:212
+#, c-format
+msgid ""
+" \\ir FILE as \\i, but relative to location of current "
+"script\n"
+msgstr ""
+" \\ir ФАЙЛ подобно \\i, но путь задаётся относительно\n"
+" текущего скрипта\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr ""
+" \\o [ФАЙЛ] выводить все результаты запросов в файл или канал "
+"|\n"
+
+#: help.c:214
+#, c-format
+msgid ""
+" \\qecho [-n] [STRING] write string to \\o output stream (-n for no "
+"newline)\n"
+msgstr ""
+" \\qecho [-n] [СТРОКА] записать строку в выходной поток \\o\n"
+" (-n отключает перевод строки)\n"
+
+#: help.c:215
+#, c-format
+msgid ""
+" \\warn [-n] [STRING] write string to standard error (-n for no "
+"newline)\n"
+msgstr ""
+" \\warn [-n] [СТРОКА] записать строку в поток вывода ошибок\n"
+" (-n отключает перевод строки)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "Условия\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if ВЫРАЖЕНИЕ начало блока условия\n"
+
+#: help.c:220
+#, c-format
+msgid ""
+" \\elif EXPR alternative within current conditional block\n"
+msgstr ""
+" \\elif ВЫРАЖЕНИЕ альтернативная ветвь в текущем блоке условия\n"
+
+#: help.c:221
+#, c-format
+msgid ""
+" \\else final alternative within current conditional "
+"block\n"
+msgstr ""
+" \\else окончательная ветвь в текущем блоке условия\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif конец блока условия\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "Информационные\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr ""
+" (дополнения: S = показывать системные объекты, + = дополнительные "
+"подробности)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr ""
+" \\d[S+] список таблиц, представлений и "
+"последовательностей\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr ""
+" \\d[S+] ИМЯ описание таблицы, представления, "
+"последовательности\n"
+" или индекса\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [МАСКА] список агрегатных функций\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [МАСКА] список методов доступа\n"
+
+# well-spelled: МСК
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [МСК_МД [МСК_ТИПА]] список классов операторов\n"
+
+# well-spelled: МСК
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [МСК_МД [МСК_ТИПА]] список семейств операторов\n"
+
+# well-spelled: МСК
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr ""
+" \\dAo[+] [МСК_МД [МСК_СОП]] список операторов из семейств операторов\n"
+
+# well-spelled: МСК
+#: help.c:234
+#, c-format
+msgid ""
+" \\dAp [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr ""
+" \\dAp [МСК_МД [МСК_СОП]] список опорных функций из семейств "
+"операторов\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [МАСКА] список табличных пространств\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [МАСКА] список преобразований\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [МАСКА] список приведений типов\n"
+
+#: help.c:238
+#, c-format
+msgid ""
+" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr ""
+" \\dd[S] [МАСКА] описания объектов, не выводимые в других режимах\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [МАСКА] список доменов\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [МАСКА] список прав по умолчанию\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [МАСКА] список сторонних таблиц\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [МАСКА] список сторонних таблиц\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [МАСКА] список сторонних серверов\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [МАСКА] список сопоставлений пользователей\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [МАСКА] список обёрток сторонних данных\n"
+
+#: help.c:246
+#, c-format
+msgid ""
+" \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] "
+"functions\n"
+msgstr ""
+" \\df[anptw][S+] [МАСКА] список [только агрегатных/обычных/(процедур)/\n"
+" триггерных/оконных] функций\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [МАСКА] список конфигураций текстового поиска\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [МАСКА] список словарей текстового поиска\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [МАСКА] список анализаторов текстового поиска\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [МАСКА] список шаблонов текстового поиска\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [МАСКА] список ролей\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [МАСКА] список индексов\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr ""
+" \\dl список больших объектов (то же, что и \\lo_list)\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [МАСКА] список языков процедур\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [МАСКА] список материализованных представлений\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [МАСКА] список схем\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [МАСКА] список операторов\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [МАСКА] список правил сортировки\n"
+
+#: help.c:259
+#, c-format
+msgid ""
+" \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr ""
+" \\dp [МАСКА] список прав доступа к таблицам, представлениям и\n"
+" последовательностям\n"
+
+#: help.c:260
+#, c-format
+msgid ""
+" \\dP[itn+] [PATTERN] list [only index/table] partitioned relations "
+"[n=nested]\n"
+msgstr ""
+" \\dP[itn+] [МАСКА] список секционированных отношений\n"
+" [только индексов (i)/таблиц (t)], с вложенностью "
+"(n)\n"
+
+# well-spelled: МАСК
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [МАСК1 [МАСК2]] список параметров роли на уровне БД\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [МАСКА] список публикаций для репликации\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [МАСКА] список подписок на репликацию\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [МАСКА] список последовательностей\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [МАСКА] список таблиц\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [МАСКА] список типов данных\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [МАСКА] список ролей\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [МАСКА] список представлений\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [МАСКА] список расширений\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [МАСКА] список событийных триггеров\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [МАСКА] список баз данных\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] ИМЯ_ФУНКЦИИ показать определение функции\n"
+
+# well-spelled: ПРЕДСТ
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] ИМЯ_ПРЕДСТ показать определение представления\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [МАСКА] то же, что и \\dp\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "Форматирование\n"
+
+#: help.c:278
+#, c-format
+msgid ""
+" \\a toggle between unaligned and aligned output mode\n"
+msgstr ""
+" \\a переключение режимов вывода:\n"
+" неформатированный/выровненный\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr ""
+" \\C [СТРОКА] задать заголовок таблицы или убрать, если не "
+"задан\n"
+
+#: help.c:280
+#, c-format
+msgid ""
+" \\f [STRING] show or set field separator for unaligned query "
+"output\n"
+msgstr ""
+" \\f [СТРОКА] показать или установить разделитель полей для\n"
+" неформатированного вывода\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr ""
+" \\H переключить режим вывода в HTML (текущий: %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [ИМЯ [ЗНАЧЕНИЕ]] установить параметр вывода таблицы\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] режим вывода только строк (сейчас: %s)\n"
+
+#: help.c:292
+#, c-format
+msgid ""
+" \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr ""
+" \\T [СТРОКА] задать атрибуты для <table> или убрать, если не "
+"заданы\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr ""
+" \\x [on|off|auto] переключить режим расширенного вывода (сейчас: "
+"%s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "Соединение\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[БД|- ПОЛЬЗОВАТЕЛЬ|- СЕРВЕР|- ПОРТ|-] | conninfo}\n"
+" подключиться к другой базе данных\n"
+" (текущая: \"%s\")\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[БД|- ПОЛЬЗОВАТЕЛЬ|- СЕРВЕР|- ПОРТ|-] | conninfo}\n"
+" подключиться к другой базе данных\n"
+" (сейчас подключения нет)\n"
+
+#: help.c:305
+#, c-format
+msgid ""
+" \\conninfo display information about current connection\n"
+msgstr " \\conninfo информация о текущем соединении\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [КОДИРОВКА] показать/установить клиентскую кодировку\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [ИМЯ] безопасно сменить пароль пользователя\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "Операционная система\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [ПУТЬ] сменить текущий каталог\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr ""
+" \\setenv ИМЯ [ЗНАЧЕНИЕ] установить или сбросить переменную окружения\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] включить/выключить секундомер (сейчас: %s)\n"
+
+#: help.c:315
+#, c-format
+msgid ""
+" \\! [COMMAND] execute command in shell or start interactive "
+"shell\n"
+msgstr ""
+" \\! [КОМАНДА] выполнить команду в командной оболочке\n"
+" или запустить интерактивную оболочку\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "Переменные\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr ""
+" \\prompt [ТЕКСТ] ИМЯ предложить пользователю задать внутреннюю "
+"переменную\n"
+
+#: help.c:320
+#, c-format
+msgid ""
+" \\set [NAME [VALUE]] set internal variable, or list all if no "
+"parameters\n"
+msgstr ""
+" \\set [ИМЯ [ЗНАЧЕНИЕ]] установить внутреннюю переменную или вывести все,\n"
+" если имя не задано\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset ИМЯ сбросить (удалить) внутреннюю переменную\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "Большие объекты\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID ФАЙЛ\n"
+" \\lo_import ФАЙЛ [КОММЕНТАРИЙ]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID операции с большими объектами\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"Список специальных переменных\n"
+"\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "Переменные psql:\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=ИМЯ=ЗНАЧЕНИЕ\n"
+" или \\set ИМЯ ЗНАЧЕНИЕ в приглашении psql\n"
+"\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" если установлен, успешные SQL-команды фиксируются автоматически\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" определяет регистр для автодополнения ключевых слов SQL\n"
+" [lower (нижний), upper (верхний),\n"
+" preserve-lower (сохранять нижний),\n"
+" preserve-upper (сохранять верхний)]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" имя текущей подключённой базы данных\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" определяет, что выдаётся на стандартный вывод\n"
+" [all (всё), errors (ошибки), none (ничего),\n"
+" queries (запросы)]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" если включено, выводит внутренние запросы, порождаемые командами с \\;\n"
+" если установлено значение \"noexec\", они выводятся, но не выполняются\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" текущая кодировка клиентского набора символов\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" true в случае ошибки в последнем запросе, иначе — false\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = "
+"unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" число результирующих строк, извлекаемых и отображаемых за раз\n"
+" (0 = без ограничений)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" если установлено, табличные методы доступа не выводятся\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" управляет историей команд [ignorespace (игнорировать пробелы),\n"
+" ignoredups (игнорировать дубли), ignoreboth (и то, и другое)]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" имя файла, в котором будет сохраняться история команд\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" максимальное число команд, сохраняемых в истории\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" сервер баз данных, к которому установлено подключение\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" количество EOF для завершения интерактивного сеанса\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" значение последнего задействованного OID\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if "
+"none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" сообщение и код SQLSTATE последней ошибки, либо пустая строка и "
+"\"00000\",\n"
+" если ошибки не было\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" если установлено, транзакция не прекращается при ошибке\n"
+" (используются неявные точки сохранения)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" останавливать выполнение пакета команд после ошибки\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" порт сервера для текущего соединения\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" устанавливает стандартное приглашение psql\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous "
+"line\n"
+msgstr ""
+" PROMPT2\n"
+" устанавливает приглашение, которое выводится при переносе оператора\n"
+" на новую строку\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" устанавливает приглашение для выполнения COPY ... FROM STDIN\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" выводить минимум сообщений (как и с параметром -q)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" число строк, возвращённых или обработанных последним SQL-запросом, либо "
+"0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" версия сервера (в коротком текстовом и числовом формате)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" управляет отображением полей контекста сообщений\n"
+" [never (не отображать никогда), errors (ошибки), always (всегда]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" если установлено, конец строки завершает режим ввода SQL-команды\n"
+" (как и с параметром -S)\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" пошаговый режим (как и с параметром -s)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" SQLSTATE последнего запроса или \"00000\", если он выполнился без "
+"ошибок\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" текущий пользователь, подключённый к БД\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" управляет детализацией отчётов об ошибках [default (по умолчанию),\n"
+" verbose (подробно), terse (кратко), sqlstate (код состояния)]\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" версия psql (в развёрнутом, в коротком текстовом и в числовом формате)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Параметры отображения:\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=ИМЯ[=ЗНАЧЕНИЕ]\n"
+" или \\pset ИМЯ [ЗНАЧЕНИЕ] в приглашении psql\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" стиль границы (число)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" целевая ширина для формата с переносом\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (или x)\n"
+" расширенный вывод [on (вкл.), off (выкл.), auto (авто)]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" разделитель полей для неформатированного вывода (по умолчанию \"%s\")\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" устанавливает ноль разделителем полей при неформатированном выводе\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" включает или выключает вывод подписей таблицы [on (вкл.), off (выкл.)]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" устанавливает формат вывода [unaligned (неформатированный),\n"
+"\n"
+" aligned (выровненный), wrapped (с переносом), html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" задаёт стиль рисования линий границы [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" устанавливает строку, выводимую вместо значения NULL\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of "
+"digits\n"
+msgstr ""
+" numericlocale\n"
+" отключает вывод заданного локалью разделителя группы цифр\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" определяет, используется ли внешний постраничник\n"
+" [yes (да), no (нет), always (всегда)]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" разделитель записей (строк) при неформатированном выводе\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" устанавливает ноль разделителем записей при неформатированном выводе\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (или T)\n"
+" задаёт атрибуты для тега table в формате html или пропорциональные\n"
+" ширины столбцов для выровненных влево данных, в формате latex-longtable\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" задаёт заголовок таблицы для последовательно печатаемых таблиц\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" если установлено, выводятся только непосредственно табличные данные\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" задаёт стиль рисуемых линий Unicode [single (одинарные), double "
+"(двойные)]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Переменные окружения:\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" ИМЯ=ЗНАЧЕНИЕ [ИМЯ=ЗНАЧЕНИЕ] psql ...\n"
+" или \\setenv ИМЯ [ЗНАЧЕНИЕ] в приглашении psql\n"
+"\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set ИМЯ=ЗНАЧЕНИЕ\n"
+" psql ...\n"
+" или \\setenv ИМЯ ЗНАЧЕНИЕ в приглашении psql\n"
+"\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" число столбцов для форматирования с переносом\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" синоним параметра подключения application_name\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" синоним параметра подключения dbname\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" синоним параметра подключения host\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" пароль для подключения (использовать не рекомендуется)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" имя файла с паролем\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" синоним параметра подключения port\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" синоним параметра подключения user\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" редактор, вызываемый командами \\e, \\ef и \\ev\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" определяет способ передачи номера строки при вызове редактора\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" альтернативное размещение файла с историей команд\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" имя программы внешнего постраничника\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" альтернативное размещение пользовательского файла .psqlrc\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" оболочка, вызываемая командой \\!\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" каталог для временных файлов\n"
+
+#: help.c:555
+msgid "Available help:\n"
+msgstr "Имеющаяся справка:\n"
+
+#: help.c:650
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"Команда: %s\n"
+"Описание: %s\n"
+"Синтаксис:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:673
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"Нет справки по команде \"%s\".\n"
+"Попробуйте \\h без аргументов и посмотрите, что есть.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "не удалось прочитать входной файл: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "не удалось сохранить историю в файле \"%s\": %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "в данной среде история не поддерживается"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: нет соединения с базой данных"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: текущая транзакция прервана"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: неизвестное состояние транзакции"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "Большие объекты"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "выход из блока \\if"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Чтобы выйти из %s, введите \"\\q\".\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"Результат выдаётся в специальном формате выгрузки PostgreSQL.\n"
+"Чтобы восстановить базу данных из этого формата, воспользуйтесь программой "
+"командной строки pg_restore.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr ""
+"Введите \\? для получения справки или нажмите Control-C для очистки буфера "
+"ввода."
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "Введите \\? для получения справки."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Вы используете psql - интерфейс командной строки к PostgreSQL."
+
+# skip-rule: copyright
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Азы: \\copyright - условия распространения\n"
+" \\h - справка по операторам SQL\n"
+" \\? - справка по командам psql\n"
+" \\g или ; в конце строки - выполнение запроса\n"
+" \\q - выход\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "Введите \\q для выхода."
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "Нажмите Control-D для выхода."
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "Нажмите Control-C для выхода."
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr ""
+"запрос игнорируется; добавьте \\endif или нажмите Ctrl-C для завершения "
+"текущего блока \\if"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "в закончившемся потоке команд не хватает \\endif"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "незавершённая строка в кавычках"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: нехватка памяти"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "имя"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "сигнатура_агр_функции"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "новое_имя"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "новый_владелец"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "новая_схема"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "где сигнатура_агр_функции:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "режим_аргумента"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "имя_аргумента"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "тип_аргумента"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "параметр"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "где допустимые параметры:"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "разр_подключения"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "предел_подключений"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "это_шаблон"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "новое_табл_пространство"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "параметр_конфигурации"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "значение"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "целевая_роль"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "имя_схемы"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "предложение_GRANT_или_REVOKE"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "где допустимое предложение_GRANT_или_REVOKE:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "имя_роли"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "выражение"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "ограничение_домена"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "имя_ограничения"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "имя_нового_ограничения"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "новая_версия"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "элемент_объект"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "где элемент_объект:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "имя_объекта"
+
+# well-spelled: агр
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "имя_агр_функции"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "исходный_тип"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "целевой_тип"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "имя_функции"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "имя_оператора"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "тип_слева"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "тип_справа"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "метод_индекса"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "имя_процедуры"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "имя_подпрограммы"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "имя_типа"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "имя_языка"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "и сигнатура_агр_функции:"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "функция_обработчик"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "функция_проверки"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "действие"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "имя_столбца"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "новое_имя_столбца"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "где допустимое действие:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "тип_данных"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "правило_сортировки"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "ограничение_столбца"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "целое"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "атрибут"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "ограничение_таблицы"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "имя_триггера"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "таблица_родитель"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "имя_расширения"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "стоимость_выполнения"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "строк_в_результате"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "вспомогательная_функция"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "указание_роли"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "имя_пользователя"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "где допустимое указание_роли:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "имя_группы"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "табл_пространство"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "имя_индекса"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "параметр_хранения"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "номер_столбца"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "oid_большого_объекта"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr "процедура_ограничения"
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr "процедура_соединения"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "номер_стратегии"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "тип_операции"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr "семейство_сортировки"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr "номер_опорной_процедуры"
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "тип_аргумента"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "имя_таблицы"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr "выражение_использования"
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "выражение_проверки"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "параметр_публикации"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "пароль"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr "timestamp"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "имя_БД"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr "шаг"
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "мин_значение"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "макс_значение"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "начальное_значение"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "значение_перезапуска"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "кеш"
+
+#: sql_help.c:1097
+msgid "new_target"
+msgstr "новое_имя"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "строка_подключения"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "имя_публикации"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "параметр_set_publication"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "параметр_обновления"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "параметр_подписки"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "имя_секции"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "указание_границ_секции"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "параметры_последовательности"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "параметр_последовательности"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr "ограничение_таблицы_с_индексом"
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr "имя_правила_перезаписи"
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr "и указание_границ_секции:"
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "выражение_границ_секции"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr "числовая_константа"
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "и ограничение_столбца:"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "выражение_по_умолчанию"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr "генерирующее_выражение"
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "параметры_индекса"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "целевая_таблица"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "целевой_столбец"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "ссылочное_действие"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "и ограничение_таблицы:"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr "объект_исключения"
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "оператор"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "предикат"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr "и ограничение_таблицы_с_индексом:"
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "параметры_индекса в ограничениях UNIQUE, PRIMARY KEY и EXCLUDE:"
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "объект_исключения в ограничении EXCLUDE:"
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "класс_оператора"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "параметр_табл_пространства"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "тип_фрагмента"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "имя_словаря"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "старый_словарь"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "новый_словарь"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "имя_атрибута"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "новое_имя_атрибута"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr "новое_значение_перечисления"
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr "соседнее_значение_перечисления"
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr "существующее_значение_перечисления"
+
+#: sql_help.c:1537
+msgid "property"
+msgstr "свойство"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "имя_сервера"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "имя_параметра_представления"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr "значение_параметра_представления"
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "таблица_и_столбцы"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "где допустимый параметр:"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr "логическое_значение"
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "и таблица_и_столбцы:"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "режим_транзакции"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "где допустимый режим_транзакции:"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "аргумент"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "имя_отношения"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "имя_домена"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "имя_политики"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "имя_правила"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr "текст"
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "код_транзакции"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "имя_файла"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "команда"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "условие"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "запрос"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "имя_формата"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "символ_разделитель"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "представление_NULL"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "символ_кавычек"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "спецсимвол"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "имя_кодировки"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr "тип_метода_доступа"
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "тип_данных_аргумента"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr "функция_состояния"
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr "тип_данных_состояния"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr "размер_данных_состояния"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr "функция_завершения"
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr "комбинирующая_функция"
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr "функция_сериализации"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr "функция_десериализации"
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr "начальное_условие"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr "функция_состояния_движ"
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr "обратная_функция_движ"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr "тип_данных_состояния_движ"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr "размер_данных_состояния_движ"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr "функция_завершения_движ"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr "начальное_условие_движ"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "оператор_сортировки"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "или старый синтаксис"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "базовый_тип"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "код_локали"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "код_правила_сортировки"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "код_классификации_символов"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "поставщик"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "версия"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr "существующее_правило_сортировки"
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "исходная_кодировка"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "целевая_кодировка"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "шаблон"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "кодировка"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "ограничение"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "где ограничение:"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "событие"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr "переменная_фильтра"
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "где ограничение_столбца:"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr "тип_возврата"
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr "тип_столбца"
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "определение"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "объектный_файл"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "символ_в_экспорте"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "метод"
+
+#: sql_help.c:2371
+msgid "opclass_parameter"
+msgstr "параметр_класса_оп"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr "обработчик_вызова"
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr "обработчик_внедрённого_кода"
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "функция_проверки"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr "коммут_оператор"
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr "обратный_оператор"
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr "имя_семейства"
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "тип_хранения"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "где допустимое событие:"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr "элемент_схемы"
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "тип_сервера"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "версия_сервера"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "имя_обёртки_сторонних_данных"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "имя_статистики"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "вид_статистики"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "имя_подписки"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "исходная_таблица"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "параметр_порождения"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr "и параметр_порождения:"
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "каталог"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "имя_анализатора"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "исходная_конфигурация"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "функция_начала"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "функция_выдачи_фрагмента"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "функция_окончания"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "функция_лекс_типов"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "функция_создания_выдержек"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "функция_инициализации"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "функция_выделения_лексем"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr "имя_функции_из_sql"
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr "имя_функции_в_sql"
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr "ссылающаяся_таблица"
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "имя_переходного_отношения"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "аргументы"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr "метка"
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr "подтип"
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr "класс_оператора_подтипа"
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr "каноническая_функция"
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr "функция_различий_подтипа"
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "функция_ввода"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "функция_вывода"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "функция_получения"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "функция_отправки"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr "функция_ввода_модификатора_типа"
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr "функция_вывода_модификатора_типа"
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "функция_анализа"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr "внутр_длина"
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "выравнивание"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "хранение"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr "тип_образец"
+
+#: sql_help.c:3065
+msgid "category"
+msgstr "категория"
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr "предпочитаемый"
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "по_умолчанию"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "элемент"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "разделитель"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr "сортируемый"
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr "запрос_WITH"
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "псевдоним"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr "источник_данных"
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "имя_курсора"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "выражение_результата"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr "имя_результата"
+
+#: sql_help.c:3190
+msgid "code"
+msgstr "внедрённый_код"
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "параметр"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "оператор"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "направление"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "где допустимое направление пустое или:"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "число"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "имя_последовательности"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "имя_аргумента"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "тип_аргумента"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr "код_БО"
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "удалённая_схема"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "локальная_схема"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr "объект_конфликта"
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr "действие_при_конфликте"
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "где допустимый объект_конфликта:"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "имя_столбца_индекса"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "выражение_индекса"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr "предикат_индекса"
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "а допустимое действие_при_конфликте:"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr "вложенный_SELECT"
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr "канал"
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr "режим_блокировки"
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "где допустимый режим_блокировки:"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr "сообщение_нагрузка"
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "старая_роль"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "новая_роль"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "имя_точки_сохранения"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr "элемент_группирования"
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "имя_окна"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "определение_окна"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr "select"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr "где допустимый источник_данных:"
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "псевдоним_столбца"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "метод_выборки"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr "начальное_число"
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr "имя_запроса_WITH"
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "определение_столбца"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr "тип_соединения"
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr "условие_соединения"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr "столбец_соединения"
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr "где допустимый элемент_группирования:"
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr "и запрос_WITH:"
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "значения"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "новая_таблица"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr "часовой_пояс"
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr "код_снимка"
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr "выражение_сортировки"
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "прервать текущую транзакцию"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "изменить определение агрегатной функции"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "изменить определение правила сортировки"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "изменить определение преобразования"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "изменить атрибуты базы данных"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "определить права доступа по умолчанию"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "изменить определение домена"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "изменить определение событийного триггера"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "изменить определение расширения"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "изменить определение обёртки сторонних данных"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "изменить определение сторонней таблицы"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "изменить определение функции"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "изменить имя роли или членство"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "изменить определение индекса"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "изменить определение процедурного языка"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "изменить определение большого объекта"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "изменить определение материализованного представления"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "изменить определение оператора"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "изменить определение класса операторов"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "изменить определение семейства операторов"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "изменить определение политики безопасности на уровне строк"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "изменить определение процедуры"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "изменить определение публикации"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "изменить роль пользователя БД"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "изменить определение подпрограммы"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "изменить определение правила"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "изменить определение схемы"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "изменить определение генератора последовательности"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "изменить определение стороннего сервера"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "изменить определение объекта расширенной статистики"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "изменить определение подписки"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "изменить параметр конфигурации сервера"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "изменить определение таблицы"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "изменить определение табличного пространства"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "изменить определение конфигурации текстового поиска"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "изменить определение словаря текстового поиска"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "изменить определение анализатора текстового поиска"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "изменить определение шаблона текстового поиска"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "изменить определение триггера"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "изменить определение типа"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "изменить сопоставление пользователей"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "изменить определение представления"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "собрать статистику о базе данных"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "начать транзакцию"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "вызвать процедуру"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "произвести контрольную точку в журнале предзаписи"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "закрыть курсор"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "перегруппировать таблицу по индексу"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "задать или изменить комментарий объекта"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "зафиксировать текущую транзакцию"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "зафиксировать транзакцию, ранее подготовленную для двухфазной фиксации"
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "импорт/экспорт данных в файл"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "создать новый метод доступа"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "создать агрегатную функцию"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "создать приведение типов"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "создать правило сортировки"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "создать преобразование кодировки"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "создать базу данных"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "создать домен"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "создать событийный триггер"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "установить расширение"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "создать обёртку сторонних данных"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "создать стороннюю таблицу"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "создать функцию"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "создать роль пользователя БД"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "создать индекс"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "создать процедурный язык"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "создать материализованное представление"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "создать оператор"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "создать класс операторов"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "создать семейство операторов"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "создать новую политику безопасности на уровне строк для таблицы"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "создать процедуру"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "создать публикацию"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "создать правило перезаписи"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "создать схему"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "создать генератор последовательностей"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "создать сторонний сервер"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "создать расширенную статистику"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "создать подписку"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "создать таблицу"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "создать таблицу из результатов запроса"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "создать табличное пространство"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "создать конфигурацию текстового поиска"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "создать словарь текстового поиска"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "создать анализатор текстового поиска"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "создать шаблон текстового поиска"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "создать преобразование"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "создать триггер"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "создать тип данных"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "создать сопоставление пользователя для стороннего сервера"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "создать представление"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "освободить подготовленный оператор"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "создать курсор"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "удалить записи таблицы"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "очистить состояние сеанса"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "выполнить анонимный блок кода"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "удалить метод доступа"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "удалить агрегатную функцию"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "удалить приведение типа"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "удалить правило сортировки"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "удалить преобразование"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "удалить базу данных"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "удалить домен"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "удалить событийный триггер"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "удалить расширение"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "удалить обёртку сторонних данных"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "удалить стороннюю таблицу"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "удалить функцию"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "удалить роль пользователя БД"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "удалить индекс"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "удалить процедурный язык"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "удалить материализованное представление"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "удалить оператор"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "удалить класс операторов"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "удалить семейство операторов"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "удалить объекты базы данных, принадлежащие роли"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "удалить политику безопасности на уровне строк из таблицы"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "удалить процедуру"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "удалить публикацию"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "удалить подпрограмму"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "удалить правило перезаписи"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "удалить схему"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "удалить последовательность"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "удалить описание стороннего сервера"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "удалить расширенную статистику"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "удалить подписку"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "удалить таблицу"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "удалить табличное пространство"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "удалить конфигурацию текстового поиска"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "удалить словарь текстового поиска"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "удалить анализатор текстового поиска"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "удалить шаблон текстового поиска"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "удалить преобразование"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "удалить триггер"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "удалить тип данных"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "удалить сопоставление пользователя для стороннего сервера"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "удалить представление"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "выполнить подготовленный оператор"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "показать план выполнения оператора"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "получить результат запроса через курсор"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "определить права доступа"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "импортировать определения таблиц со стороннего сервера"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "добавить строки в таблицу"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "ожидать уведомления"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "загрузить файл разделяемой библиотеки"
+
+#: sql_help.c:5725
+msgid "lock a table"
+msgstr "заблокировать таблицу"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "установить курсор"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "сгенерировать уведомление"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "подготовить оператор для выполнения"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "подготовить текущую транзакцию для двухфазной фиксации"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "изменить владельца объектов БД, принадлежащих заданной роли"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "заменить содержимое материализованного представления"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "перестроить индексы"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "удалить ранее определённую точку сохранения"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "восстановить исходное значение параметра выполнения"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "удалить права доступа"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "отменить транзакцию, подготовленную ранее для двухфазной фиксации"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "откатиться к точке сохранения"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "определить новую точку сохранения в текущей транзакции"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "задать или изменить метку безопасности, применённую к объекту"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "выбрать строки из таблицы или представления"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "изменить параметр выполнения"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "установить время проверки ограничений для текущей транзакции"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "задать идентификатор текущего пользователя в текущем сеансе"
+
+#: sql_help.c:5851
+msgid ""
+"set the session user identifier and the current user identifier of the "
+"current session"
+msgstr ""
+"задать идентификатор пользователя сеанса и идентификатор текущего "
+"пользователя в текущем сеансе"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "задать свойства текущей транзакции"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "показать значение параметра выполнения"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "опустошить таблицу или набор таблиц"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "прекратить ожидание уведомлений"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "изменить строки таблицы"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "произвести сборку мусора и проанализировать базу данных"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "получить набор строк"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 можно использовать только в неинтерактивном режиме"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "не удалось открыть файл протокола \"%s\": %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Введите \"help\", чтобы получить справку.\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "не удалось установить параметр печати \"%s\""
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Для дополнительной информации попробуйте \"%s --help\".\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "лишний аргумент \"%s\" проигнорирован"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "не удалось найти собственный исполняемый файл"
+
+#: tab-complete.c:4640
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"ошибка запроса Tab-дополнения: %s\n"
+"Запрос:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr ""
+"нераспознанное значение \"%s\" для \"%s\": ожидалось булевское значение"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "неправильное значение \"%s\" для \"%s\": ожидалось целое"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "неправильное имя переменной: \"%s\""
+
+#: variables.c:419
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"нераспознанное значение \"%s\" для \"%s\"\n"
+"Допустимые значения: %s."
+
+#~ msgid "Could not send cancel request: %s"
+#~ msgstr "Отправить сигнал отмены не удалось: %s"
+
+#~ msgid "could not connect to server: %s"
+#~ msgstr "не удалось подключиться к серверу: %s"
+
+#~ msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+#~ msgstr "Об ошибках сообщайте по адресу <pgsql-bugs@lists.postgresql.org>.\n"
+
+#~ msgid ""
+#~ " \\g [FILE] or ; execute query (and send results to file or |"
+#~ "pipe)\n"
+#~ msgstr ""
+#~ " \\g [ФАЙЛ] или ; выполнить запрос\n"
+#~ " (и направить результаты в файл или канал |)\n"
+
+#~ msgid "old_version"
+#~ msgstr "старая_версия"
+
+#~ msgid "using_list"
+#~ msgstr "список_USING"
+
+#~ msgid "from_list"
+#~ msgstr "список_FROM"
+
+#~ msgid "child process was terminated by signal %s"
+#~ msgstr "дочерний процесс завершён по сигналу %s"
+
+#~ msgid "Invalid command \\%s. Try \\? for help.\n"
+#~ msgstr "Неверная команда \\%s. Справка по командам: \\?\n"
+
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid "string_literal"
+#~ msgstr "строковая_константа"
+
+#~ msgid "normal"
+#~ msgstr "обычная"
+
+#~ msgid "Procedure"
+#~ msgstr "Процедура"
+
+#~ msgid " SERVER_VERSION_NAME server's version (short string)\n"
+#~ msgstr " SERVER_VERSION_NAME версия сервера (короткая строка)\n"
+
+#~ msgid " VERSION psql's version (verbose string)\n"
+#~ msgstr " VERSION версия psql (развёрнутая строка)\n"
+
+#~ msgid " VERSION_NAME psql's version (short string)\n"
+#~ msgstr " VERSION_NAME версия psql (короткая строка)\n"
+
+#~ msgid " VERSION_NUM psql's version (numeric format)\n"
+#~ msgstr " VERSION_NUM версия psql (в числовом формате)\n"
+
+#~ msgid "attribute"
+#~ msgstr "атрибут"
+
+#~ msgid "Value"
+#~ msgstr "Значение"
+
+#~ msgid "statistic_type"
+#~ msgstr "тип_статистики"
+
+#~ msgid "No per-database role settings support in this server version.\n"
+#~ msgstr ""
+#~ "Это версия сервера не поддерживает параметры ролей на уровне базы "
+#~ "данных.\n"
+
+#~ msgid "No matching settings found.\n"
+#~ msgstr "Соответствующие параметры не найдены.\n"
+
+#~ msgid "No settings found.\n"
+#~ msgstr "Параметры не найдены.\n"
+
+#~ msgid "No matching relations found.\n"
+#~ msgstr "Соответствующие отношения не найдены.\n"
+
+#~ msgid "No relations found.\n"
+#~ msgstr "Отношения не найдены.\n"
+
+#~ msgid "Object Description"
+#~ msgstr "Описание объекта"
+
+#~ msgid "Password encryption failed.\n"
+#~ msgstr "Ошибка при шифровании пароля.\n"
+
+#~ msgid "suboption"
+#~ msgstr "подпараметр"
+
+#~ msgid "where suboption can be:"
+#~ msgstr "где допустимые подпараметры:"
+
+#~ msgid "slot_name"
+#~ msgstr "имя_слота"
+
+#~ msgid "puboption"
+#~ msgstr "параметр_публикации"
+
+#~ msgid "where puboption can be:"
+#~ msgstr "где допустимый параметр_публикации:"
+
+#~ msgid "+ opt(%d) = |%s|\n"
+#~ msgstr "+ opt(%d) = |%s|\n"
+
+#~ msgid "\\%s: error while setting variable\n"
+#~ msgstr "\\%s: не удалось установить переменную\n"
+
+#~ msgid "could not set variable \"%s\"\n"
+#~ msgstr "не удалось установить переменную \"%s\"\n"
+
+#~ msgid "Modifiers"
+#~ msgstr "Модификаторы"
+
+#~ msgid "collate %s"
+#~ msgstr "правило сортировки %s"
+
+#~ msgid "not null"
+#~ msgstr "NOT NULL"
+
+#~ msgid "default %s"
+#~ msgstr "DEFAULT %s"
+
+#~ msgid "Modifier"
+#~ msgstr "Модификатор"
+
+#~ msgid "%s: could not set variable \"%s\"\n"
+#~ msgstr "%s: не удалось установить переменную \"%s\"\n"
+
+#~ msgid "\\crosstabview: query must return results to be shown in crosstab\n"
+#~ msgstr ""
+#~ "\\crosstabview: запрос должен возвращать результаты для вывода в "
+#~ "перекрёстном виде\n"
+
+#~ msgid "\\crosstabview: invalid column number: \"%s\"\n"
+#~ msgstr "\\crosstabview: неверный номер столбца: \"%s\"\n"
+
+#~ msgid "serialtype"
+#~ msgstr "сериализованный_тип"
+
+#~ msgid "Watch every %lds\t%s"
+#~ msgstr "Повтор запрос через %ld сек.\t%s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Display influencing variables:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Рабочие параметры:\n"
+
+#~ msgid " unicode_border_linestyle\n"
+#~ msgstr " unicode_border_linestyle\n"
+
+#~ msgid " unicode_column_linestyle\n"
+#~ msgstr " unicode_column_linestyle\n"
+
+#~ msgid "column_name_index"
+#~ msgstr "индекс_по_имени_столбца"
+
+#~ msgid "expression_index"
+#~ msgstr "индекс_по_выражению"
+
+#~ msgid "SSL connection (unknown cipher)\n"
+#~ msgstr "SSL-соединение (шифр неизвестен)\n"
+
+#~ msgid "(No rows)\n"
+#~ msgstr "(Нет записей)\n"
+
+#~ msgid "where view_option_name can be one of:"
+#~ msgstr "где допустимое имя_параметра_представления:"
+
+#~ msgid "local"
+#~ msgstr "local"
+
+#~ msgid "cascaded"
+#~ msgstr "cascaded"
+
+#~ msgid "Border style (%s) unset.\n"
+#~ msgstr "Стиль границ (%s) сброшен.\n"
+
+#~ msgid "Output format (%s) is aligned.\n"
+#~ msgstr "Формат вывода (%s): выровненный.\n"
+
+#~ msgid "invfunc"
+#~ msgstr "обр_функция"
+
+#~ msgid ""
+#~ "change the definition of a tablespace or affect objects of a tablespace"
+#~ msgstr "изменить определение или содержимое табличного пространства"
+
+#~ msgid "Showing locale-adjusted numeric output."
+#~ msgstr "Числа выводятся в локализованном формате."
+
+#~ msgid "Showing only tuples."
+#~ msgstr "Выводятся только кортежи."
+
+#~ msgid "could not get current user name: %s\n"
+#~ msgstr "не удалось узнать имя текущего пользователя: %s\n"
+
+#~ msgid "agg_name"
+#~ msgstr "агр_функция"
+
+#~ msgid "agg_type"
+#~ msgstr "агр_тип"
+
+#~ msgid "input_data_type"
+#~ msgstr "тип_входных_данных"
+
+#~ msgid "%s: -1 is incompatible with -c and -l\n"
+#~ msgstr "%s: -1 несовместимо с -c и -l\n"
+
+#~ msgid " \\l[+] list all databases\n"
+#~ msgstr " \\l[+] список всех баз данных\n"
+
+#~ msgid "column"
+#~ msgstr "столбец"
+
+#~ msgid "new_column"
+#~ msgstr "новая_столбец"
+
+#~ msgid "tablespace"
+#~ msgstr "табл_пространство"
+
+#~ msgid "\\%s: error\n"
+#~ msgstr "ошибка \\%s\n"
+
+#~ msgid "\\copy: %s"
+#~ msgstr "\\copy: %s"
+
+#~ msgid "contains support for command-line editing"
+#~ msgstr "включает поддержку редактирования командной строки"
+
+#~ msgid "data type"
+#~ msgstr "тип данных"
diff --git a/src/bin/psql/po/sv.po b/src/bin/psql/po/sv.po
new file mode 100644
index 0000000..3d783d7
--- /dev/null
+++ b/src/bin/psql/po/sv.po
@@ -0,0 +1,6402 @@
+# Swedish message translation file for psql
+# Peter Eisentraut <peter_e@gmx.net>, 2001, 2009, 2010.
+# Dennis Björklund <db@zigo.dhs.org>, 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020.
+#
+# Use these quotes: "%s"
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 13\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-08-27 21:44+0000\n"
+"PO-Revision-Date: 2020-08-30 10:09+0200\n"
+"Last-Translator: Dennis Björklund <db@zigo.dhs.org>\n"
+"Language-Team: Swedish <pgsql-translators@postgresql.org>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "fatalt: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "fel: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "varning: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "kunde inte identifiera aktuell katalog: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "ogiltig binär \"%s\""
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "kunde inte läsa binär \"%s\""
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "kunde inte hitta en \"%s\" att köra"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "kunde inte byta katalog till \"%s\": %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "kan inte läsa symbolisk länk \"%s\": %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "pclose misslyckades: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1255 input.c:227 mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "slut på minne"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "slut på minne\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "kan inte duplicera null-pekare (internt fel)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "kunde inte slå upp effektivt användar-id %ld: %s"
+
+#: ../../common/username.c:45 command.c:559
+msgid "user does not exist"
+msgstr "användaren finns inte"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "misslyckad sökning efter användarnamn: felkod %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "kommandot är inte körbart"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "kommandot kan ej hittas"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "barnprocess avslutade med kod %d"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "barnprocess terminerades med avbrott 0x%X"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "barnprocess terminerades av signal %d: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "barnprocess avslutade med okänd statuskod %d"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "Förfrågan om avbrytning skickad\n"
+
+#: ../../fe_utils/cancel.c:165
+msgid "Could not send cancel request: "
+msgstr "Kunde inte skicka förfrågan om avbrytning: "
+
+#: ../../fe_utils/cancel.c:210
+#, c-format
+msgid "Could not send cancel request: %s"
+msgstr "Kunde inte skicka förfrågan om avbrytning: %s"
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu rad)"
+msgstr[1] "(%lu rader)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "Avbruten\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "Kan inte lägga till rubrik till tabellinnehåll: antal kolumner (%d) överskridet.\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "Kan inte lägga till cell till tabellinnehåll: totala cellantalet (%d) överskridet.\n"
+
+#: ../../fe_utils/print.c:3414
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "ogiltigt utdataformat (internt fel): %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "hoppar över rekursiv expandering av variabeln \"%s\""
+
+#: command.c:224
+#, c-format
+msgid "invalid command \\%s"
+msgstr "ogiltigt kommando \\%s"
+
+#: command.c:226
+#, c-format
+msgid "Try \\? for help."
+msgstr "Försök med \\? för hjälp."
+
+#: command.c:244
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: extra argument \"%s\" ignorerat"
+
+#: command.c:296
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "kommandot \\%s ignorerat; använd \\endif eller Ctrl-C för att avsluta nuvarande \\if-block"
+
+#: command.c:557
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "kunde inte hämta hemkatalog för användar-ID %ld: %s"
+
+#: command.c:575
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: kunde inte byta katalog till \"%s\": %m"
+
+#: command.c:600
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "Du är för närvarande inte uppkopplad mot en databas.\n"
+
+#: command.c:613
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Du är uppkopplad upp mot databas \"%s\" som användare \"%s\" på adress \"%s\" på port \"%s\".\n"
+
+#: command.c:616
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Du är uppkopplad mot databas \"%s\" som användare \"%s\" via uttag i \"%s\" på port \"%s\".\n"
+
+#: command.c:622
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Du är uppkopplad upp mot databas \"%s\" som användare \"%s\" på värd \"%s\" (adress \"%s\") på port \"%s\".\n"
+
+#: command.c:625
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Du är uppkopplad upp mot databas \"%s\" som användare \"%s\" på värd \"%s\" på port \"%s\".\n"
+
+#: command.c:965 command.c:1061 command.c:2550
+#, c-format
+msgid "no query buffer"
+msgstr "ingen frågebuffert"
+
+#: command.c:998 command.c:5061
+#, c-format
+msgid "invalid line number: %s"
+msgstr "ogiltigt radnummer: %s"
+
+#: command.c:1052
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "Servern (version %s) stöder inte redigering av funktionskällkod."
+
+#: command.c:1055
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "Servern (version %s) stöder inte redigering av vydefinitioner."
+
+#: command.c:1137
+msgid "No changes"
+msgstr "Inga ändringar"
+
+#: command.c:1216
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: ogiltigt kodningsnamn eller konverteringsprocedur hittades inte"
+
+#: command.c:1251 command.c:1992 command.c:3253 command.c:5163 common.c:174
+#: common.c:223 common.c:388 common.c:1237 common.c:1265 common.c:1373
+#: common.c:1480 common.c:1518 copy.c:488 copy.c:707 help.c:62 large_obj.c:157
+#: large_obj.c:192 large_obj.c:254
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1258
+msgid "There is no previous error."
+msgstr "Det finns inget tidigare fel."
+
+#: command.c:1371
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: saknar höger parentes"
+
+#: command.c:1548 command.c:1853 command.c:1867 command.c:1884 command.c:2044
+#: command.c:2281 command.c:2517 command.c:2557
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: obligatoriskt argument saknas"
+
+#: command.c:1679
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: kan inte komma efter \\else"
+
+#: command.c:1684
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: ingen matchande \\if"
+
+#: command.c:1748
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: kan inte komma efter \\else"
+
+#: command.c:1753
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: ingen matchande \\if"
+
+#: command.c:1793
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: ingen matchande \\if"
+
+#: command.c:1948
+msgid "Query buffer is empty."
+msgstr "Frågebufferten är tom."
+
+#: command.c:1970
+msgid "Enter new password: "
+msgstr "Mata in nytt lösenord: "
+
+#: command.c:1971
+msgid "Enter it again: "
+msgstr "Mata in det igen: "
+
+#: command.c:1975
+#, c-format
+msgid "Passwords didn't match."
+msgstr "Lösenorden stämde inte överens."
+
+#: command.c:2074
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: kunde inte läsa värde på varibeln"
+
+#: command.c:2177
+msgid "Query buffer reset (cleared)."
+msgstr "Frågebufferten har blivit borttagen."
+
+#: command.c:2199
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Skrev historiken till fil \"%s\".\n"
+
+#: command.c:2286
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: omgivningsvariabelnamn får ej innehålla \"=\""
+
+#: command.c:2347
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "Servern (version %s) stöder inte visning av funktionskällkod."
+
+#: command.c:2350
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "Servern (version %s) stöder inte visning av vydefinitioner."
+
+#: command.c:2357
+#, c-format
+msgid "function name is required"
+msgstr "funktionsnamn krävs"
+
+#: command.c:2359
+#, c-format
+msgid "view name is required"
+msgstr "vynamn krävs"
+
+#: command.c:2489
+msgid "Timing is on."
+msgstr "Tidtagning är på."
+
+#: command.c:2491
+msgid "Timing is off."
+msgstr "Tidtagning är av."
+
+#: command.c:2576 command.c:2604 command.c:3661 command.c:3664 command.c:3667
+#: command.c:3673 command.c:3675 command.c:3683 command.c:3693 command.c:3702
+#: command.c:3716 command.c:3733 command.c:3791 common.c:70 copy.c:331
+#: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2988 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "Lösenord: "
+
+#: command.c:2993 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "Lösenord för användare %s: "
+
+#: command.c:3064
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "Alla anslutningsparametrar måste anges då ingen databasuppkoppling är gjord"
+
+#: command.c:3257
+#, c-format
+msgid "Previous connection kept"
+msgstr "Föregående förbindelse bevarad"
+
+#: command.c:3261
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3310
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" på adress \"%s\" på port \"%s\".\n"
+
+#: command.c:3313
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" via uttag i \"%s\" på port \"%s\".\n"
+
+#: command.c:3319
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" på värd \"%s\" (adress \"%s\") på port \"%s\".\n"
+
+#: command.c:3322
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\" på värd \"%s\" på port \"%s\".\n"
+
+#: command.c:3327
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Du är nu uppkopplad mot databasen \"%s\" som användare \"%s\".\n"
+
+#: command.c:3360
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, server %s)\n"
+
+#: command.c:3368
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"VARNING: %s huvudversion %s, server huvudversion %s.\n"
+" En del psql-finesser kommer kanske inte fungera.\n"
+
+#: command.c:3407
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL-förbindelse (protokoll: %s, krypto: %s, bitar: %s, komprimering: %s)\n"
+
+#: command.c:3408 command.c:3409 command.c:3410
+msgid "unknown"
+msgstr "okänd"
+
+#: command.c:3411 help.c:45
+msgid "off"
+msgstr "av"
+
+#: command.c:3411 help.c:45
+msgid "on"
+msgstr "på"
+
+#: command.c:3425
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "GSSAPI-krypterad anslutning\n"
+
+#: command.c:3445
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"VARNING: Konsollens \"code page\" (%u) skiljer sig fån Windows \"code page\" (%u)\n"
+" 8-bitars tecken kommer troligen inte fungera korrekt. Se psql:s\n"
+" referensmanual i sektionen \"Notes for Windows users\" för mer detaljer.\n"
+
+#: command.c:3549
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "omgivningsvariabeln PSQL_EDITOR_LINENUMBER_ARG måste ange ett radnummer"
+
+#: command.c:3578
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "kunde inte starta editorn \"%s\""
+
+#: command.c:3580
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "kunde inte starta /bin/sh"
+
+#: command.c:3618
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "kunde inte hitta temp-katalog: %s"
+
+#: command.c:3645
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "kunde inte öppna temporär fil \"%s\": %m"
+
+#: command.c:3950
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: tvetydig förkortning \"%s\" matchar både \"%s\" och \"%s\""
+
+#: command.c:3970
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: tillåtna format är aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:3989
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: tillåtna linjestilar är ascii, old-ascii, unicode"
+
+#: command.c:4004
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: tillåtna Unicode-ramstilar är single, double"
+
+#: command.c:4019
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: tillåtna Unicode-kolumnlinjestilar ärsingle, double"
+
+#: command.c:4034
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: tillåtna Unicode-rubriklinjestilar är single, double"
+
+#: command.c:4077
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep måste vara ett ensamt en-byte-tecken"
+
+#: command.c:4082
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldset kan inte vara dubbelcitat, nyrad eller vagnretur"
+
+#: command.c:4219 command.c:4407
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: okänd parameter: %s"
+
+#: command.c:4239
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Ramstil är %d.\n"
+
+#: command.c:4245
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "Målvidd är inte satt.\n"
+
+#: command.c:4247
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "Målvidd är %d.\n"
+
+#: command.c:4254
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Utökad visning är på.\n"
+
+#: command.c:4256
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "Utökad visning används automatiskt.\n"
+
+#: command.c:4258
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Utökad visning är av.\n"
+
+#: command.c:4264
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "Fältseparatorn för CSV är \"%s\".\n"
+
+#: command.c:4272 command.c:4280
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Fältseparatorn är noll-byte.\n"
+
+#: command.c:4274
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Fältseparatorn är \"%s\".\n"
+
+#: command.c:4287
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Standard sidfot är på.\n"
+
+#: command.c:4289
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Standard sidfot är av.\n"
+
+#: command.c:4295
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Utdataformatet är \"%s\".\n"
+
+#: command.c:4301
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Linjestil är %s.\n"
+
+#: command.c:4308
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null-visare är \"%s\".\n"
+
+#: command.c:4316
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "Lokal-anpassad numerisk utdata är på.\n"
+
+#: command.c:4318
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "Lokal-anpassad numerisk utdata är av.\n"
+
+#: command.c:4325
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Siduppdelare är på för lång utdata.\n"
+
+#: command.c:4327
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Siduppdelare används alltid.\n"
+
+#: command.c:4329
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "Siduppdelare är av.\n"
+
+#: command.c:4335
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "Siduppdelare kommer inte användas för färre än %d linje.\n"
+msgstr[1] "Siduppdelare kommer inte användas för färre än %d linjer.\n"
+
+#: command.c:4345 command.c:4355
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Postseparatorn är noll-byte.\n"
+
+#: command.c:4347
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Postseparatorn är <nyrad>.\n"
+
+#: command.c:4349
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Postseparatorn är \"%s\".\n"
+
+#: command.c:4362
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Tabellattributen är \"%s\".\n"
+
+#: command.c:4365
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Tabellattributen är ej satta.\n"
+
+#: command.c:4372
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Titeln är \"%s\".\n"
+
+#: command.c:4374
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Titeln är inte satt.\n"
+
+#: command.c:4381
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "Visa bara tupler är på.\n"
+
+#: command.c:4383
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "Visa bara tupler är av.\n"
+
+#: command.c:4389
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Unicode-ramstil är \"%s\".\n"
+
+#: command.c:4395
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Unicode-kolumnLinjestil är \"%s\".\n"
+
+#: command.c:4401
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Unicode-rubriklinjestil är \"%s\".\n"
+
+#: command.c:4634
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: misslyckades"
+
+#: command.c:4659 common.c:648
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch kan inte användas på en tom fråga"
+
+#: command.c:4700
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (varje %gs)\n"
+
+#: command.c:4703
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (varje %gs)\n"
+
+#: command.c:4757 command.c:4764 common.c:548 common.c:555 common.c:1220
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********* FRÅGA **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:4956
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\" är inte en vy"
+
+#: command.c:4972
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "kunde inte parsa arrayen reloptions"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "kan inte escape:a utan en aktiv uppkoppling"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "shell-kommandots argument innehåller nyrad eller vagnretur: \"%s\""
+
+#: common.c:304
+#, c-format
+msgid "connection to server was lost"
+msgstr "förbindelsen till servern har brutits"
+
+#: common.c:308
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "Förbindelsen till servern har brutits. Försöker starta om: "
+
+#: common.c:313
+#, c-format
+msgid "Failed.\n"
+msgstr "Misslyckades.\n"
+
+#: common.c:326
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Lyckades.\n"
+
+#: common.c:378 common.c:938 common.c:1155
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "oväntad PQresultStatus: %d"
+
+#: common.c:487
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Tid: %.3f ms\n"
+
+#: common.c:502
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Tid: %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:511
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Tid: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:518
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Tid: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:542 common.c:600 common.c:1191
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "Du är för närvarande inte uppkopplad mot en databas."
+
+#: common.c:655
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch kan inte användas med COPY"
+
+#: common.c:660
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "oväntat resultatstatus för \\watch"
+
+#: common.c:690
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "Asynkron notificering \"%s\" mottagen med innehåll \"%s\" från serverprocess med PID %d.\n"
+
+#: common.c:693
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "Asynkron notificering \"%s\" mottagen från serverprocess med PID %d.\n"
+
+#: common.c:726 common.c:743
+#, c-format
+msgid "could not print result table: %m"
+msgstr "kunde inte visa resultatabell: %m"
+
+#: common.c:764
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "inga rader returnerades för \\gset"
+
+#: common.c:769
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "mer än en rad returnerades för \\gset"
+
+#: common.c:1200
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(Stegningsläge: Verifiera kommando)*******************************************\n"
+"%s\n"
+"***(tryck return för att fortsätta eller skriv x och return för att avbryta)*****\n"
+
+#: common.c:1255
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "Servern (version %s) stöder inte sparpunkter för ON_ERROR_ROLLBACK."
+
+#: common.c:1318
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "SATS: %s"
+
+#: common.c:1361
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "oväntad transaktionsstatus (%d)"
+
+#: common.c:1502 describe.c:2001
+msgid "Column"
+msgstr "Kolumn"
+
+#: common.c:1503 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3719 describe.c:3929
+#: describe.c:4162 describe.c:5368
+msgid "Type"
+msgstr "Typ"
+
+#: common.c:1552
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "Kommandot hade inget resultat eller så hade resultatet inga kolumner.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy: argument krävs"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: parsfel vid \"%s\""
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: parsfel vid radslutet"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "kunde inte köra kommandot \"%s\": %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "kunde inte göra stat() på fil \"%s\": %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: kan inte kopiera från/till en katalog"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "kunde inte stänga rör till externt komamndo: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "kunde inte skriva COPY-data: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "COPY-överföring av data misslyckades: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "avbruten av användaren"
+
+#: copy.c:541
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Mata in data som skall kopieras följt av en nyrad.\n"
+"Avsluta med bakstreck och en punkt ensamma på en rad eller av en EOF."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "avbruten på grund av läsfel"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "försöker avsluta kopieringsläge"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: satsen returnerade ingen resultatmängd"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: frågan måste returnera minst tre kolumner"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: vertikala och horisontala rubriker måste vara olika kolumner"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: datakolumn måste anges när frågan returnerar mer än tre kolumner"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: maximalt antal kolumner (%d) överskridet"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: frågeresultatet innehåller multipla värden för rad \"%s\", kolumn \"%s\""
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: kolumnnummer %d är utanför giltigt intervall 1..%d"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: tvetydigt kolumnnamn: \"%s\""
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: hittar ej kolumnnamn: \"%s\""
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3708 describe.c:3916
+#: describe.c:4160 describe.c:4251 describe.c:4518 describe.c:4678
+#: describe.c:4919 describe.c:4994 describe.c:5005 describe.c:5067
+#: describe.c:5492 describe.c:5575
+msgid "Schema"
+msgstr "Schema"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3709 describe.c:3917 describe.c:4083 describe.c:4161
+#: describe.c:4252 describe.c:4331 describe.c:4519 describe.c:4603
+#: describe.c:4679 describe.c:4920 describe.c:4995 describe.c:5006
+#: describe.c:5068 describe.c:5265 describe.c:5349 describe.c:5573
+#: describe.c:5745 describe.c:5985
+msgid "Name"
+msgstr "Namn"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "Resultatdatatyp"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "Argumentdatatyp"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3496 describe.c:3769 describe.c:3963 describe.c:4114
+#: describe.c:4188 describe.c:4261 describe.c:4344 describe.c:4427
+#: describe.c:4546 describe.c:4612 describe.c:4680 describe.c:4821
+#: describe.c:4863 describe.c:4936 describe.c:4998 describe.c:5007
+#: describe.c:5069 describe.c:5291 describe.c:5371 describe.c:5506
+#: describe.c:5576 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Beskrivning"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Lista med aggregatfunktioner"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "Servern (version %s) stöder inte accessmetoder."
+
+#: describe.c:175
+msgid "Index"
+msgstr "Index"
+
+#: describe.c:176 describe.c:3727 describe.c:3942 describe.c:5493
+msgid "Table"
+msgstr "Tabell"
+
+#: describe.c:184 describe.c:5270
+msgid "Handler"
+msgstr "Hanterare"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "Lista med accessmetoder"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "Servern (version %s) stöder inte tabellutrymmen."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3720 describe.c:3918 describe.c:4087
+#: describe.c:4333 describe.c:4604 describe.c:5266 describe.c:5350
+#: describe.c:5746 describe.c:5883 describe.c:5986 describe.c:6101
+#: describe.c:6180 large_obj.c:289
+msgid "Owner"
+msgstr "Ägare"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "Plats"
+
+#: describe.c:263 describe.c:3313
+msgid "Options"
+msgstr "Alternativ"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3761 describe.c:3765
+msgid "Size"
+msgstr "Storlek"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "Lista med tabellutrymmen"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df tar bara [anptwS+] som flaggor"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df tar inte en \"%c\"-flagga med serverversion %s"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "agg"
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "fönster"
+
+#: describe.c:391
+msgid "proc"
+msgstr "proc"
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "funk"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "utlösare"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "oföränderlig"
+
+#: describe.c:484
+msgid "stable"
+msgstr "stabil"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "instabil"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "Instabilitet"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "begränsad"
+
+#: describe.c:495
+msgid "safe"
+msgstr "säker"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "osäker"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "Parallell"
+
+#: describe.c:502
+msgid "definer"
+msgstr "definierare"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "anropare"
+
+#: describe.c:504
+msgid "Security"
+msgstr "Säkerhet"
+
+#: describe.c:511
+msgid "Language"
+msgstr "Språk"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "Källkod"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "Lista med funktioner"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "Internt namn"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "Element"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "Lista med datatyper"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "Vänster argumenttyp"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "Höger argumenttyp"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "Resultattyp"
+
+#: describe.c:819 describe.c:4339 describe.c:4404 describe.c:4410
+#: describe.c:4820 describe.c:6352 describe.c:6356
+msgid "Function"
+msgstr "Funktion"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "Lista med operatorer"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "Kodning"
+
+#: describe.c:879 describe.c:4520
+msgid "Collate"
+msgstr "Jämförelse"
+
+#: describe.c:880 describe.c:4521
+msgid "Ctype"
+msgstr "Ctype"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "Tabellutrymme"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "Lista med databaser"
+
+#: describe.c:956 describe.c:1117 describe.c:3710
+msgid "table"
+msgstr "tabell"
+
+#: describe.c:957 describe.c:3711
+msgid "view"
+msgstr "vy"
+
+#: describe.c:958 describe.c:3712
+msgid "materialized view"
+msgstr "materialiserad vy"
+
+#: describe.c:959 describe.c:1119 describe.c:3714
+msgid "sequence"
+msgstr "sekvens"
+
+#: describe.c:960 describe.c:3716
+msgid "foreign table"
+msgstr "främmande tabell"
+
+#: describe.c:961 describe.c:3717 describe.c:3927
+msgid "partitioned table"
+msgstr "partitionerad tabell"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "Kolumnrättigheter"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "Policys"
+
+#: describe.c:1070 describe.c:6042 describe.c:6046
+msgid "Access privileges"
+msgstr "Åtkomsträttigheter"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "Servern (version %s) stöder inte ändring av standardrättigheter."
+
+#: describe.c:1121
+msgid "function"
+msgstr "funktion"
+
+#: describe.c:1123
+msgid "type"
+msgstr "typ"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "schema"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "Standard accessrättigheter"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "Objekt"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "tabellvillkor"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "domänvillkor"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "operatorklass"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "operatorfamilj"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "rule"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "Objektbeskrivningar"
+
+#: describe.c:1402 describe.c:3833
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "Kunde inte hitta en relation med namn \"%s\"."
+
+#: describe.c:1405 describe.c:3836
+#, c-format
+msgid "Did not find any relations."
+msgstr "Kunde inte hitta några relationer."
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "Kunde inte hitta en relation med OID %s."
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "Start"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "Minimum"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "Maximum"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "Ökning"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4255
+#: describe.c:4421 describe.c:4535 describe.c:4540 describe.c:6089
+msgid "yes"
+msgstr "ja"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4255
+#: describe.c:4418 describe.c:4535 describe.c:6090
+msgid "no"
+msgstr "nej"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "Cyklisk?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "Cache"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "Ägd av: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Sekvens för identitetskolumn: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Sekvens \"%s.%s\""
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Ologgad tabell \"%s.%s\""
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Tabell \"%s.%s\""
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Vy \"%s.%s\""
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Ologgad materialiserad vy \"%s.%s\""
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Materialiserad vy \"%s.%s\""
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Ologgat index \"%s.%s\""
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Index \"%s.%s\""
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Ologgat partitionerat index \"%s.%s\""
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "Partitionerat index \"%s.%s\""
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Särskild relation \"%s.%s\""
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "TOAST-tabell \"%s.%s\""
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Sammansatt typ \"%s.%s\""
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Främmande tabell \"%s.%s\""
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Ologgad partitionerad tabell \"%s.%s\""
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "Partitionerad tabell \"%s.%s\""
+
+#: describe.c:2005 describe.c:4168
+msgid "Collation"
+msgstr "Jämförelse"
+
+#: describe.c:2006 describe.c:4175
+msgid "Nullable"
+msgstr "Nullbar"
+
+#: describe.c:2007 describe.c:4176
+msgid "Default"
+msgstr "Standard"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "Nyckel?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "Definition"
+
+#: describe.c:2014 describe.c:5286 describe.c:5370 describe.c:5441
+#: describe.c:5505
+msgid "FDW options"
+msgstr "FDW-alternativ"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "Lagring"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "Statistikmål"
+
+#: describe.c:2131
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Partition av: %s %s"
+
+#: describe.c:2143
+msgid "No partition constraint"
+msgstr "Inget partitioneringsvillkor"
+
+#: describe.c:2145
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Partitioneringsvillkor: %s"
+
+#: describe.c:2169
+#, c-format
+msgid "Partition key: %s"
+msgstr "Partitioneringsnyckel: %s"
+
+#: describe.c:2195
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "Ägande tabell \"%s.%s\""
+
+#: describe.c:2266
+msgid "primary key, "
+msgstr "primärnyckel, "
+
+#: describe.c:2268
+msgid "unique, "
+msgstr "unik, "
+
+#: describe.c:2274
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "för tabell \"%s.%s\""
+
+#: describe.c:2278
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", predikat (%s)"
+
+#: describe.c:2281
+msgid ", clustered"
+msgstr ", klustrad"
+
+#: describe.c:2284
+msgid ", invalid"
+msgstr ", ogiltig"
+
+#: describe.c:2287
+msgid ", deferrable"
+msgstr ", uppskjutbar"
+
+#: describe.c:2290
+msgid ", initially deferred"
+msgstr ", initialt uppskjuten"
+
+#: describe.c:2293
+msgid ", replica identity"
+msgstr ", replikaidentitet"
+
+#: describe.c:2360
+msgid "Indexes:"
+msgstr "Index:"
+
+#: describe.c:2444
+msgid "Check constraints:"
+msgstr "Kontrollvillkor:"
+
+#: describe.c:2512
+msgid "Foreign-key constraints:"
+msgstr "Främmande nyckel-villkor:"
+
+#: describe.c:2575
+msgid "Referenced by:"
+msgstr "Refererad av:"
+
+#: describe.c:2625
+msgid "Policies:"
+msgstr "Policys:"
+
+#: describe.c:2628
+msgid "Policies (forced row security enabled):"
+msgstr "Policys (tvingad radsäkerhet påslagen):"
+
+#: describe.c:2631
+msgid "Policies (row security enabled): (none)"
+msgstr "Policys (radsäkerhet påslagna): (ingen)"
+
+#: describe.c:2634
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Policys (tvingad radsäkerhet påslagen): (ingen)"
+
+#: describe.c:2637
+msgid "Policies (row security disabled):"
+msgstr "Policys (radsäkerhet avstängd):"
+
+#: describe.c:2700
+msgid "Statistics objects:"
+msgstr "Statistikobjekt:"
+
+#: describe.c:2809 describe.c:2913
+msgid "Rules:"
+msgstr "Regler:"
+
+#: describe.c:2812
+msgid "Disabled rules:"
+msgstr "Avstängda regler:"
+
+#: describe.c:2815
+msgid "Rules firing always:"
+msgstr "Regler som alltid utförs:"
+
+#: describe.c:2818
+msgid "Rules firing on replica only:"
+msgstr "Regler som utförs enbart på replika:"
+
+#: describe.c:2858
+msgid "Publications:"
+msgstr "Publiceringar:"
+
+#: describe.c:2896
+msgid "View definition:"
+msgstr "Vydefinition:"
+
+#: describe.c:3043
+msgid "Triggers:"
+msgstr "Utlösare:"
+
+#: describe.c:3047
+msgid "Disabled user triggers:"
+msgstr "Avstängda användarutlösare:"
+
+#: describe.c:3049
+msgid "Disabled triggers:"
+msgstr "Avstängda utlösare:"
+
+#: describe.c:3052
+msgid "Disabled internal triggers:"
+msgstr "Avstängda interna utlösare:"
+
+#: describe.c:3055
+msgid "Triggers firing always:"
+msgstr "Utlösare som alltid aktiveras:"
+
+#: describe.c:3058
+msgid "Triggers firing on replica only:"
+msgstr "Utlösare som aktiveras enbart på replika:"
+
+#: describe.c:3130
+#, c-format
+msgid "Server: %s"
+msgstr "Server: %s"
+
+#: describe.c:3138
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "FDW-alternativ: (%s)"
+
+#: describe.c:3159
+msgid "Inherits"
+msgstr "Ärver"
+
+#: describe.c:3219
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Antal partitioner: %d"
+
+#: describe.c:3228
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Antal partitioner: %d (Använd \\d+ för att lista dem.)"
+
+#: describe.c:3230
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Antal barntabeller: %d (Använd \\d+ för att lista dem.)"
+
+#: describe.c:3237
+msgid "Child tables"
+msgstr "Barntabeller"
+
+#: describe.c:3237
+msgid "Partitions"
+msgstr "Partitioner"
+
+#: describe.c:3266
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Typad tabell av typ: %s"
+
+#: describe.c:3282
+msgid "Replica Identity"
+msgstr "Replikaidentitet"
+
+#: describe.c:3295
+msgid "Has OIDs: yes"
+msgstr "Har OID:er: ja"
+
+#: describe.c:3304
+#, c-format
+msgid "Access method: %s"
+msgstr "Accessmetod: %s"
+
+#: describe.c:3384
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Tabellutrymme: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3396
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", tabellutrymme: \"%s\""
+
+#: describe.c:3489
+msgid "List of roles"
+msgstr "Lista med roller"
+
+#: describe.c:3491
+msgid "Role name"
+msgstr "Rollnamn"
+
+#: describe.c:3492
+msgid "Attributes"
+msgstr "Attribut"
+
+#: describe.c:3493
+msgid "Member of"
+msgstr "Medlem av"
+
+#: describe.c:3504
+msgid "Superuser"
+msgstr "Superanvändare"
+
+#: describe.c:3507
+msgid "No inheritance"
+msgstr "Inget arv"
+
+#: describe.c:3510
+msgid "Create role"
+msgstr "Skapa roll"
+
+#: describe.c:3513
+msgid "Create DB"
+msgstr "Skapa DB"
+
+#: describe.c:3516
+msgid "Cannot login"
+msgstr "Kan inte logga in"
+
+#: describe.c:3520
+msgid "Replication"
+msgstr "Replikering"
+
+#: describe.c:3524
+msgid "Bypass RLS"
+msgstr "Hopp över RLS"
+
+#: describe.c:3533
+msgid "No connections"
+msgstr "Inga uppkopplingar"
+
+#: describe.c:3535
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d uppkoppling"
+msgstr[1] "%d uppkopplingar"
+
+#: describe.c:3545
+msgid "Password valid until "
+msgstr "Lösenord giltigt till "
+
+#: describe.c:3595
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "Servern (version %s) stöder inte rollinställningar per databas."
+
+#: describe.c:3608
+msgid "Role"
+msgstr "Roll"
+
+#: describe.c:3609
+msgid "Database"
+msgstr "Databas"
+
+#: describe.c:3610
+msgid "Settings"
+msgstr "Inställningar"
+
+#: describe.c:3631
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "Kunde inte hitta några inställningar för roll \"%s\" och databas \"%s\"."
+
+#: describe.c:3634
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "Kunde inte hitta några inställningar för roll \"%s\"."
+
+#: describe.c:3637
+#, c-format
+msgid "Did not find any settings."
+msgstr "Kunde inte hitta några inställningar."
+
+#: describe.c:3642
+msgid "List of settings"
+msgstr "Lista med inställningar"
+
+#: describe.c:3713
+msgid "index"
+msgstr "index"
+
+#: describe.c:3715
+msgid "special"
+msgstr "särskild"
+
+#: describe.c:3718 describe.c:3928
+msgid "partitioned index"
+msgstr "partitionerat index"
+
+#: describe.c:3742
+msgid "permanent"
+msgstr "permanent"
+
+#: describe.c:3743
+msgid "temporary"
+msgstr "temporär"
+
+#: describe.c:3744
+msgid "unlogged"
+msgstr "ologgad"
+
+#: describe.c:3745
+msgid "Persistence"
+msgstr "Persistens"
+
+#: describe.c:3841
+msgid "List of relations"
+msgstr "Lista med relationer"
+
+#: describe.c:3889
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "Servern (version %s) stöder inte deklarativ tabellpartitionering."
+
+#: describe.c:3900
+msgid "List of partitioned indexes"
+msgstr "Lista med partitionerade index"
+
+#: describe.c:3902
+msgid "List of partitioned tables"
+msgstr "Lista med partitionerade tabeller"
+
+#: describe.c:3906
+msgid "List of partitioned relations"
+msgstr "Lista med partitionerade relationer"
+
+#: describe.c:3937
+msgid "Parent name"
+msgstr "Föräldranamn"
+
+#: describe.c:3950
+msgid "Leaf partition size"
+msgstr "Partitionsstorlek av löv"
+
+#: describe.c:3953 describe.c:3959
+msgid "Total size"
+msgstr "Total storlek"
+
+#: describe.c:4091
+msgid "Trusted"
+msgstr "Tillförlitlig"
+
+#: describe.c:4099
+msgid "Internal language"
+msgstr "Internt språk"
+
+#: describe.c:4100
+msgid "Call handler"
+msgstr "Anropshanterare"
+
+#: describe.c:4101 describe.c:5273
+msgid "Validator"
+msgstr "Validerare"
+
+#: describe.c:4104
+msgid "Inline handler"
+msgstr "Inline-hanterare"
+
+#: describe.c:4132
+msgid "List of languages"
+msgstr "Lista med språk"
+
+#: describe.c:4177
+msgid "Check"
+msgstr "Check"
+
+#: describe.c:4219
+msgid "List of domains"
+msgstr "Lista med domäner"
+
+#: describe.c:4253
+msgid "Source"
+msgstr "Källa"
+
+#: describe.c:4254
+msgid "Destination"
+msgstr "Mål"
+
+#: describe.c:4256 describe.c:6091
+msgid "Default?"
+msgstr "Standard?"
+
+#: describe.c:4293
+msgid "List of conversions"
+msgstr "Lista med konverteringar"
+
+#: describe.c:4332
+msgid "Event"
+msgstr "Händelse"
+
+#: describe.c:4334
+msgid "enabled"
+msgstr "påslagen"
+
+#: describe.c:4335
+msgid "replica"
+msgstr "replika"
+
+#: describe.c:4336
+msgid "always"
+msgstr "alltid"
+
+#: describe.c:4337
+msgid "disabled"
+msgstr "avstängd"
+
+#: describe.c:4338 describe.c:5987
+msgid "Enabled"
+msgstr "Påslagen"
+
+#: describe.c:4340
+msgid "Tags"
+msgstr "Etiketter"
+
+#: describe.c:4359
+msgid "List of event triggers"
+msgstr "Lista med händelseutlösare"
+
+#: describe.c:4388
+msgid "Source type"
+msgstr "Källtyp"
+
+#: describe.c:4389
+msgid "Target type"
+msgstr "Måltyp"
+
+#: describe.c:4420
+msgid "in assignment"
+msgstr "i tilldelning"
+
+#: describe.c:4422
+msgid "Implicit?"
+msgstr "Implicit?"
+
+#: describe.c:4477
+msgid "List of casts"
+msgstr "Lista med typomvandlingar"
+
+#: describe.c:4505
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "Servern (version %s) stöder inte jämförelser (collations)."
+
+#: describe.c:4526 describe.c:4530
+msgid "Provider"
+msgstr "Leverantör"
+
+#: describe.c:4536 describe.c:4541
+msgid "Deterministic?"
+msgstr "Deterministisk?"
+
+#: describe.c:4576
+msgid "List of collations"
+msgstr "Lista med jämförelser (collations)"
+
+#: describe.c:4635
+msgid "List of schemas"
+msgstr "Lista med scheman"
+
+#: describe.c:4660 describe.c:4907 describe.c:4978 describe.c:5049
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "Servern (version %s) stöder inte fulltextsökning."
+
+#: describe.c:4695
+msgid "List of text search parsers"
+msgstr "Lista med textsökparsrar"
+
+#: describe.c:4740
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "Kunde inte hitta en textsökparser med namn \"%s\"."
+
+#: describe.c:4743
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "Kunde inte hitta några textsökparsrar."
+
+#: describe.c:4818
+msgid "Start parse"
+msgstr "Starta parsning"
+
+#: describe.c:4819
+msgid "Method"
+msgstr "Metod"
+
+#: describe.c:4823
+msgid "Get next token"
+msgstr "Hämta nästa symbol"
+
+#: describe.c:4825
+msgid "End parse"
+msgstr "Avsluta parsning"
+
+#: describe.c:4827
+msgid "Get headline"
+msgstr "Hämta rubrik"
+
+#: describe.c:4829
+msgid "Get token types"
+msgstr "Hämta symboltyper"
+
+#: describe.c:4840
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Textsökparser \"%s.%s\""
+
+#: describe.c:4843
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Textsökparser \"%s\""
+
+#: describe.c:4862
+msgid "Token name"
+msgstr "Symbolnamn"
+
+#: describe.c:4873
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Symboltyper för parser \"%s.%s\""
+
+#: describe.c:4876
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Symboltyper för parser \"%s\""
+
+#: describe.c:4930
+msgid "Template"
+msgstr "Mall"
+
+#: describe.c:4931
+msgid "Init options"
+msgstr "Initieringsalternativ"
+
+#: describe.c:4953
+msgid "List of text search dictionaries"
+msgstr "Lista med textsökordlistor"
+
+#: describe.c:4996
+msgid "Init"
+msgstr "Init"
+
+#: describe.c:4997
+msgid "Lexize"
+msgstr "Symboluppdelning"
+
+#: describe.c:5024
+msgid "List of text search templates"
+msgstr "Lista med textsökmallar"
+
+#: describe.c:5084
+msgid "List of text search configurations"
+msgstr "Lista med textsökkonfigurationer"
+
+#: describe.c:5130
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "Kunde inte hitta en textsökkonfiguration med namn \"%s\"."
+
+#: describe.c:5133
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "Kunde inte hitta några textsökkonfigurationer."
+
+#: describe.c:5199
+msgid "Token"
+msgstr "Symbol"
+
+#: describe.c:5200
+msgid "Dictionaries"
+msgstr "Ordlistor"
+
+#: describe.c:5211
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Textsökkonfiguration \"%s.%s\""
+
+#: describe.c:5214
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Textsökkonfiguration \"%s\""
+
+#: describe.c:5218
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Parser: \"%s.%s\""
+
+#: describe.c:5221
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Parser: \"%s\""
+
+#: describe.c:5255
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "Servern (version %s) stöder inte främmande data-omvandlare."
+
+#: describe.c:5313
+msgid "List of foreign-data wrappers"
+msgstr "Lista med främmande data-omvandlare"
+
+#: describe.c:5338
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "Servern (version %s) stöder inte främmande servrar."
+
+#: describe.c:5351
+msgid "Foreign-data wrapper"
+msgstr "Främmande data-omvandlare"
+
+#: describe.c:5369 describe.c:5574
+msgid "Version"
+msgstr "Version"
+
+#: describe.c:5395
+msgid "List of foreign servers"
+msgstr "Lista med främmande servrar"
+
+#: describe.c:5420
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "Servern (version %s) stöder inte användarmappningar."
+
+#: describe.c:5430 describe.c:5494
+msgid "Server"
+msgstr "Server"
+
+#: describe.c:5431
+msgid "User name"
+msgstr "Användarnamn"
+
+#: describe.c:5456
+msgid "List of user mappings"
+msgstr "Lista av användarmappningar"
+
+#: describe.c:5481
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "Servern (version %s) stöder inte främmande tabeller."
+
+#: describe.c:5534
+msgid "List of foreign tables"
+msgstr "Lista med främmande tabeller"
+
+#: describe.c:5559 describe.c:5616
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "Servern (version %s) stöder inte utökningar."
+
+#: describe.c:5591
+msgid "List of installed extensions"
+msgstr "Lista med installerade utökningar"
+
+#: describe.c:5644
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "Kunde inte hitta en utökning med namn \"%s\"."
+
+#: describe.c:5647
+#, c-format
+msgid "Did not find any extensions."
+msgstr "Kunde inte hitta några utökningar."
+
+#: describe.c:5691
+msgid "Object description"
+msgstr "Objektbeskrivning"
+
+#: describe.c:5701
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Objekt i utökning \"%s\""
+
+#: describe.c:5730 describe.c:5806
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "Servern (version %s) stöder inte publiceringar."
+
+#: describe.c:5747 describe.c:5884
+msgid "All tables"
+msgstr "Alla tabeller"
+
+#: describe.c:5748 describe.c:5885
+msgid "Inserts"
+msgstr "Insättningar"
+
+#: describe.c:5749 describe.c:5886
+msgid "Updates"
+msgstr "Uppdateringar"
+
+#: describe.c:5750 describe.c:5887
+msgid "Deletes"
+msgstr "Borttagningar"
+
+#: describe.c:5754 describe.c:5889
+msgid "Truncates"
+msgstr "Trunkerar"
+
+#: describe.c:5758 describe.c:5891
+msgid "Via root"
+msgstr "Via root"
+
+#: describe.c:5775
+msgid "List of publications"
+msgstr "Lista med publiceringar"
+
+#: describe.c:5848
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "Kunde inte hitta någon publicering med namn \"%s\"."
+
+#: describe.c:5851
+#, c-format
+msgid "Did not find any publications."
+msgstr "Kunde inte hitta några publiceringar."
+
+#: describe.c:5880
+#, c-format
+msgid "Publication %s"
+msgstr "Publicering %s"
+
+#: describe.c:5928
+msgid "Tables:"
+msgstr "Tabeller:"
+
+#: describe.c:5972
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "Denna server (version %s) stöder inte prenumerationer."
+
+#: describe.c:5988
+msgid "Publication"
+msgstr "Publicering"
+
+#: describe.c:5995
+msgid "Synchronous commit"
+msgstr "Synkron commit"
+
+#: describe.c:5996
+msgid "Conninfo"
+msgstr "Förbindelseinfo"
+
+#: describe.c:6018
+msgid "List of subscriptions"
+msgstr "Lista med prenumerationer"
+
+#: describe.c:6085 describe.c:6174 describe.c:6260 describe.c:6343
+msgid "AM"
+msgstr "AM"
+
+#: describe.c:6086
+msgid "Input type"
+msgstr "Indatatyp"
+
+#: describe.c:6087
+msgid "Storage type"
+msgstr "Lagringstyp"
+
+#: describe.c:6088
+msgid "Operator class"
+msgstr "Operatorklass"
+
+#: describe.c:6100 describe.c:6175 describe.c:6261 describe.c:6344
+msgid "Operator family"
+msgstr "Operatorfamilj"
+
+#: describe.c:6133
+msgid "List of operator classes"
+msgstr "Lista med operatorklasser"
+
+#: describe.c:6176
+msgid "Applicable types"
+msgstr "Applicerbara typer"
+
+#: describe.c:6215
+msgid "List of operator families"
+msgstr "Lista med operatorfamiljer"
+
+#: describe.c:6262
+msgid "Operator"
+msgstr "Operator"
+
+#: describe.c:6263
+msgid "Strategy"
+msgstr "Strategi"
+
+#: describe.c:6264
+msgid "ordering"
+msgstr "ordning"
+
+#: describe.c:6265
+msgid "search"
+msgstr "sök"
+
+#: describe.c:6266
+msgid "Purpose"
+msgstr "Ändamål"
+
+#: describe.c:6271
+msgid "Sort opfamily"
+msgstr "Sortering-opfamilj"
+
+#: describe.c:6302
+msgid "List of operators of operator families"
+msgstr "Lista med operatorer i operatorfamiljer"
+
+#: describe.c:6345
+msgid "Registered left type"
+msgstr "Registrerad vänstertyp"
+
+#: describe.c:6346
+msgid "Registered right type"
+msgstr "Registrerad högertyp"
+
+#: describe.c:6347
+msgid "Number"
+msgstr "Nummer"
+
+#: describe.c:6383
+msgid "List of support functions of operator families"
+msgstr "Lista med supportfunktioner i operatorfamiljer"
+
+#: help.c:73
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql är den interaktiva PostgreSQL-terminalen.\n"
+"\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "Användning:\n"
+
+#: help.c:75
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [FLAGGA]... [DBNAMN [ANVÄNDARNAMN]]\n"
+"\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Allmänna flaggor:\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=KOMMANDO kör ett kommando (SQL eller internt) och avsluta sedan\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr " -d, --dbname=DBNAMN databasnamn att koppla upp mot (standard: \"%s\")\n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=FILNAMN kör kommandon från fil och avsluta sedan\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list lista befintliga databaser och avsluta sedan\n"
+
+#: help.c:86
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variale=NAMN=VÄRDE\n"
+" sätt psql-variabel NAMN till VÄRDE\n"
+" (t.ex. -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version visa versionsinformation, avsluta sedan\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc läs inte startfilen (~/.psqlrc)\n"
+
+#: help.c:91
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (\"ett\"), --single-transaction\n"
+" kör kommandofilen som en transaktion (om icke-interaktiv)\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=alternativ] visa denna hjälp, avsluta sedan\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands lista bakstreck-kommandon, avsluta sedan\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variabler lista speciella variabler, avsluta sedan\n"
+
+#: help.c:97
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Flaggor för in-/utmatning:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all visa all indata från skript\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors visa misslyckade kommandon\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries visa kommandon som skickas till servern\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden visa frågor som interna kommandon skapar\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=FILENAME skicka sessions-logg till fil\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline slå av förbättrad kommandoradsredigering (readline)\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=FILNAMN skriv frågeresultat till fil (eller |rör)\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet kör tyst (inga meddelanden, endast frågeutdata)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step stegningsläge (bekräfta varje fråga)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line enradsläge (slutet på raden avslutar SQL-kommando)\n"
+
+#: help.c:109
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Flaggor för utdataformat:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align ojusterad utskrift av tabeller\n"
+
+#: help.c:111
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv CSV-utmarningsläge (kommaseparerade värden)\n"
+
+#: help.c:112
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=STRÄNG\n"
+" fältseparator för icke justerad utdata (standard: \"%s\")\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html HTML-utskrift av tabeller\n"
+
+#: help.c:116
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr " -P, --pset=VAR[=ARG] sätt utskriftsvariabel VAR till ARG (se kommando \\pset)\n"
+
+#: help.c:117
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=STRÄNG\n"
+" sätt postseparator för icke justerad utdata (standard: newline)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only visa endast rader\n"
+
+#: help.c:120
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr " -T, --table-attr=TEXT sätt HTML-tabellers flaggor (t.ex. width, border)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded slå på utökad utsrift av tabeller\n"
+
+#: help.c:122
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" sätt fältseparator för icke justerad utdata till noll-byte\n"
+
+#: help.c:124
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator=zero\n"
+" sätt postseparator för icke justerad utdata till noll-byte\n"
+
+#: help.c:127
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Flaggor för anslutning:\n"
+
+#: help.c:130
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr ""
+" -h, --host=VÄRDNAMN databasens värdnamn eller uttagkatalog (socket)\n"
+" (standard: \"%s\")\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "lokalt uttag (socket)"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORT databasens serverport (standard: \"%s\")\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=ANVNAMN användarnamn för databasen (standard: \"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password fråga aldrig efter lösenord\n"
+
+#: help.c:142
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr " -W, --password fråga om lösenord (borde ske automatiskt)\n"
+
+#: help.c:144
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"För mer information, skriv \"\\?\" (för interna kommandon) eller\n"
+"\"\\help\" (för SQL-kommandon) i psql, eller läs avsnittet om psql\n"
+"i PostgreSQL-dokumentationen.\n"
+"\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Rapportera fel till <%s>.\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "hemsida för %s: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "Allmänna\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright visa PostgreSQL-upphovsrättsinformation\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [KOLUMNER] kör fråga och visa resultatet i en korstabell\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose visa senste felmeddelande vid maximal verbositet\n"
+
+#: help.c:178
+#, c-format
+msgid ""
+" \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr ""
+" \\g [(FLAGGOR)] [FIL] kör frågan (och skicka resultatet till fil eller |rör);\n"
+" \\g utan argument är samma som ett semikolon\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc beskriv resultatet av fråga utan att köra den\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec kör fråga, kör sen varje värde i resultatet\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] kör frågan och spara resultatet i psql-variabler\n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [(FLAGGOR)] [FIL] som \\g, men tvinga expanderat utmatningsläge\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q avsluta psql\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEK] kör fråga var SEK sekund\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "Hjälp\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [kommandon] visa hjälp om backstreckkommandon\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options visa hjälp för psqls kommandoradflaggor\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables visa hjälp om speciella variabler\n"
+
+#: help.c:193
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr " \\h [NAMN] hjälp med syntaxen för SQL-kommandon, * för alla kommandon\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Frågebuffert\n"
+
+#: help.c:197
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr " \\e [FIL] [RAD] redigera frågebufferten (eller filen) med extern redigerare\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [FUNKNAMN [RAD]] redigera funktionsdefinition med extern redigerare\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [FUNKNAMN [RAD]] redigera vydefinition med extern redigerare\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p visa innehållet i frågebufferten\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r nollställ (radera) frågebufferten\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [FILNAMN] visa kommandohistorien eller spara den i fil\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w FILNAMN skriv frågebuffert till fil\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "In-/Utmatning\n"
+
+#: help.c:209
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... utför SQL COPY med dataström till klientvärden\n"
+
+#: help.c:210
+#, c-format
+msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"
+msgstr " \\echo [-n] [TEXT] skriv text till standard ut (-n för ingen nyrad)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i FILNAMN kör kommandon från fil\n"
+
+#: help.c:212
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr " \\ir FIL som \\i, men relativt platsen för aktuellt script\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [FIL] skicka frågeresultat till fil eller |rör\n"
+
+#: help.c:214
+#, c-format
+msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"
+msgstr " \\qecho [-n] [TEXT] skriv text till \\o-utdataströmmen (-n för ingen nyrad)\n"
+
+#: help.c:215
+#, c-format
+msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"
+msgstr " \\warn [-n] [TEXT] skriv text till standard error (-n för ingen nyrad)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "Villkor\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR starta villkorsblock\n"
+
+#: help.c:220
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR alternativ inom aktuellt villkorsblock\n"
+
+#: help.c:221
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else avslutningsalternativ inom aktuellt villkorsblock\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif avsluta villkorsblock\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "Informationer\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (flaggor: S = lista systemobjekt, + = mer detaljer)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] lista tabeller, vyer och sekvenser\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] NAMN beskriv tabell, vy, sekvens eller index\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [MALL] lista aggregatfunktioner\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [MALL] lista accessmetoder\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] lista operatorklasser\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] lista operatorfamiljer\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] lista operatorer i operatorfamiljer\n"
+
+#: help.c:234
+#, c-format
+msgid " \\dAp [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr " \\dAp [AMPTRN [OPFPTRN]] lista supportfunktioner i operatorfamiljer\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [MALL] lista tabellutrymmen\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [MALL] lista konverteringar\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [MALL] lista typomvandlingar\n"
+
+#: help.c:238
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [MALL] visa objektbeskrivning som inte visas på andra ställen\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [MALL] lista domäner\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [MALL] lista standardrättigheter\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [MALL] lista främmande tabeller\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [MALL] lista främmande tabeller\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [MALL] lista främmande servrar\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [MALL] lista användarmappning\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [MALL] lista främmande data-omvandlare\n"
+
+#: help.c:246
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[anptw][S+] [MALL] lista [endast agg/normala/procedur/utlösar/window] funktioner\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [MALL] lista textsökkonfigurationer\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [MALL] lista textsökordlistor\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [MALL] lista textsökparsrar\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [MALL] lista textsökmallar\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [MALL] lista roller\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [MALL] lista index\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl lista stora objekt, samma som \\lo_list\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [MALL] lista procedurspråk\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [MALL] lista materialiserade vyer\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [MALL] lista scheman\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [MALL] lista operatorer\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [MALL] lista jämförelser (collation)\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [MALL] lista åtkomsträttigheter för tabeller, vyer och sekvenser\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"
+msgstr " \\dP[tin+] [MALL] lista [bara tabell/index] partitionerade relationer [n=nästlad]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [MALL1 [MALL2]] lista rollinställningar per databas\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [MALL] lista replikeringspubliceringar\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [MALL] lista replikeringsprenumerationer\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [MALL] lista sekvenser\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [MALL] lista tabeller\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [MALL] lista datatyper\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [MALL] lista roller\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [MALL] lista vyer\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [MALL] lista utökningar\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [MALL] lista händelseutlösare\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [MALL] lista databaser\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNKNAMN visa en funktions definition\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] VYNAMN visa en vys definition\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [MALL] samma som \\dp\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "Formatering\n"
+
+#: help.c:278
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a byt mellan ojusterat och justerat utdataformat\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [TEXT] sätt tabelltitel, eller nollställ\n"
+
+#: help.c:280
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr " \\f [TEXT] visa eller sätt fältseparatorn för ojusterad utmatning\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H slå på/av HTML-utskriftsläge (för närvarande: %s)\n"
+
+#: help.c:283
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [NAMN [VÄRDE]] sätt utmatningsalternativ för tabeller\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] visa endast rader (för närvarande: %s)\n"
+
+#: help.c:292
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [TEXT] sätt HTML-tabellens <table>-attribut, eller nollställ\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] slå på/av utökad utskrift (för närvarande: %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "Förbindelse\n"
+
+#: help.c:299
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[DBNAMN|- ANVÄNDARE|- VÄRD|- PORT|-] | conninfo}\n"
+" koppla upp mot ny databas (för närvarande \"%s\")\n"
+
+#: help.c:303
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[DBNAMN|- ANVÄNDARE|- VÄRD|- PORT|-] | conninfo}\n"
+" koppla upp mot ny databas (för närvarande ingen uppkoppling)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo visa information om aktuell uppkoppling\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [KODNING] visa eller sätt klientens teckenkodning\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [ANVÄNDARNAMN] byt användares lösenord på ett säkert sätt\n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "Operativsystem\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [KATALOG] byt den aktuella katalogen\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NAMN [VÄRDE] sätt eller nollställ omgivningsvariabel\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] slå på/av tidstagning av kommandon (för närvarande: %s)\n"
+
+#: help.c:315
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr " \\! [KOMMANDO] kör kommando i skal eller starta interaktivt skal\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "Variabler\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [TEXT] NAMN be användaren att sätta en intern variabel\n"
+
+#: help.c:320
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr " \\set [NAMN [VÄRDE]] sätt intern variabel, eller lista alla om ingen param\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset NAME ta bort intern variabel\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "Stora objekt\n"
+
+#: help.c:325
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID FIL\n"
+" \\lo_import FIL [KOMMENTAR]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID operationer på stora objekt\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr "Lista av variabler som hanteras speciellt\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "psql-variabler:\n"
+
+#: help.c:356
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NAMN=VÄRDE\n"
+" eller \\set NAMN VÄRDE inne i psql\n"
+"\n"
+
+#: help.c:358
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" om satt så kommer efterföljande SQL-kommandon commit:as automatiskt\n"
+
+#: help.c:360
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" bestämmer skiftläge för att komplettera SQL-nyckelord\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" den uppkopplade databasens namn\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" bestämmer vilken indata som skrivs till standard ut\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" om satt, visa interna frågor som körs av backåtstreckkommandon:\n"
+" om satt till \"noexec\", bara visa dem utan att köra\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" aktuell teckenkodning för klient\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" sant om sista frågan misslyckades, falskt annars\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" antal resultatrader som hämtas och visas åt gången (0=obegränsat)\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" om satt så visas inte accessmetoder\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" styr kommandohistoriken [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" filnamn för att spara kommandohistoriken i\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" maximalt antal kommandon som sparas i kommandohistoriken\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" den uppkopplade databasens värd\n"
+
+#: help.c:387
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" antal EOF som behövs för att avsluta en interaktiv session\n"
+
+#: help.c:389
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" värdet av den senast påverkade OID:en\n"
+
+#: help.c:391
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" meddelande och SQLSTATE för sista felet eller en tom sträng och \"00000\" om det inte varit fel\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" om satt, ett fel stoppar inte en transaktion (använder implicita sparpunkter)\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" avsluta batchkörning vid fel\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" värdport för den aktuella uppkopplingen\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" anger standardprompten för psql\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" anger den prompt som används om en sats forsätter på efterföljande rad\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" anger den prompt som används för COPY ... FROM STDIN\n"
+
+#: help.c:406
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" kör tyst (samma som flaggan -q)\n"
+
+#: help.c:408
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" antal rader som returnerades eller påverkades av senaste frågan alternativt 0\n"
+
+#: help.c:410
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NUM\n"
+" SERVER_VERSION_NAME\n"
+" serverns version (i kort sträng eller numeriskt format)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" styr visning av meddelandekontextfält [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" om satt, slut på raden avslutar SQL-kommandon (samma som flaggan -S )\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" stegningsläge (samma som flaggan -s)\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" SQLSTATE för sista frågan eller \"00000\" om det inte varit fel\n"
+
+#: help.c:421
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" den uppkopplade databasanvändaren\n"
+
+#: help.c:423
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" styr verbositet för felrapporter [default, verbose, terse, sqlstate]\n"
+
+#: help.c:425
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql:s version (i lång sträng, kort sträng eller numeriskt format)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Visningsinställningar:\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NAMN[=VÄRDE]\n"
+" eller \\pset NAMN [VÄRDE] inne i psql\n"
+"\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" ramstil (nummer)\n"
+
+#: help.c:436
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" målvidd för wrappade format\n"
+
+#: help.c:438
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (eller x)\n"
+" expanderad utdata [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" fältseparator för ej justerad utdata (standard \"%s\")\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" sätt fältseparator för ej justerad utdata till noll-byte\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" slå på/av visning av tabellfot [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" sätt utdataformat [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" sätt ramlinjestil [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" sätt sträng som visas istället för null-värden\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" slå på visning av lokalspecifika tecken för gruppering av siffror\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" styr när en extern pagenerare används [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" post (rad) separator för ej justerad utdata\n"
+
+#: help.c:459
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" sätt postseparator för ej justerad utdata till noll-byte\n"
+
+#: help.c:461
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (el. T)\n"
+" ange attribut för tabelltaggen i html-format eller proportionella\n"
+" kolumnvidder för vänsterjusterade datatypet i latex-longtable-format\n"
+
+#: help.c:464
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" sätt tabelltitel för efterkommande tabellutskrifter\n"
+
+#: help.c:466
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" om satt, bara tabelldatan visas\n"
+
+#: help.c:468
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" sätter stilen på Unicode-linjer [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Omgivningsvariabler:\n"
+
+#: help.c:477
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NAMN=VÄRDE [NAMN=VÄRDE] psql ...\n"
+" eller \\setenv NAMN [VÄRDE] inne psql\n"
+"\n"
+
+#: help.c:479
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NAMN=VÄRDE\n"
+" psql ...\n"
+" eller \\setenv NAMN [VÄRDE] inne i psql\n"
+"\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" antal kolumner i wrappade format\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" samma som anslutningsparametern \"application_name\"\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" samma som anslutningsparametern \"dbname\"\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" samma som anslutningsparametern \"host\"\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" uppkoppingens lösenord (rekommenderas inte)\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" lösenordsfilnamn\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" samma som anslutingsparametern \"port\"\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" samma som anslutningsparametern \"user\"\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" redigerare som används av kommanona \\e, \\ef och \\ev\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" hur radnummer anges när redigerare startas\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" alternativ plats för kommandohistorikfilen\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PAGER\n"
+" namnet på den externa pageneraren\n"
+
+#: help.c:506
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" alternativ plats för användarens \".psqlrc\"-fil\n"
+
+#: help.c:508
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" skalet som används av kommandot \\!\n"
+
+#: help.c:510
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" katalog för temporärfiler\n"
+
+#: help.c:554
+msgid "Available help:\n"
+msgstr "Tillgänglig hjälp:\n"
+
+#: help.c:642
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"Kommando: %s\n"
+"Beskrivning: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:661
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"Ingen hjälp tillgänglig för \"%s\".\n"
+"Försök med \\h utan argument för att se den tillgängliga hjälpen.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "kunde inte läsa från infilen: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "kunde inte skriva kommandohistorien till \"%s\": %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "historia stöds inte av denna installationen"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: ej uppkopplad mot en databas"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: aktuell transaktion är avbruten"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: okänd transaktionsstatus"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "Stora objekt"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: escape:ad"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Använd \"\\q\" för att lämna %s.\n"
+
+#: mainloop.c:217
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"Indatan är en PostgreSQL-specifik dump.\n"
+"Använd kommandoradsprogrammet pg_restore för att läsa in denna dump till databasen.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Använd \\? för hjälp eller tryck control-C för att nollställa inmatningsbufferten."
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "Använd \\? för hjälp."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Du använder psql, den interaktiva PostgreSQL-terminalen."
+
+#: mainloop.c:305
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Skriv: \\copyright för upphovsrättsinformation\n"
+" \\h för hjälp om SQL-kommandon\n"
+" \\? för hjälp om psql-kommandon\n"
+" \\g eller avsluta med semikolon för att köra en fråga\n"
+" \\q för att avsluta\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "Använd \\q för att avsluta."
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "Använd control-D för att avsluta."
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "Använd control-C för att avsluta."
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "fråga ignorerat; använd \\endif eller Ctrl-C för att avsluta aktuellt \\if-block"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "kom till EOF utan att hitta avslutande \\endif"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "icketerminerad citerad sträng"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: slut på minne"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "namn"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "aggregatsignatur"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "nytt_namn"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "ny_ägare"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "nytt_schema"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "där aggregatsignatur är:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "arg_läge"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "arg_namn"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "arg_typ"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "flaggor"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "där flaggor kan vara:"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "tillåtansl"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "anslutningstak"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "ärmall"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "nytt_tabellutrymme"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "konfigurationsparameter"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "värde"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "målroll"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "schemanamn"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "förkortad_grant_eller_revoke"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "där förkortad_grant_eller_revok är en av:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "rollnamn"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "uttryck"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "domain_villkor"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "villkorsnamn"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "nyy_villkorsnamn"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "ny_version"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "medlemsobjekt"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "där medlemsobjekt är:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "objektnamn"
+
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "aggregatnamn"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "källtyp"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "måltyp"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "funktionsnamn"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "operatornamn"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "vänster_typ"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "höger_typ"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "indexmetod"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "procedurnamn"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "rutinnamn"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "typnamn"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "språknamn"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "och aggregatsignatur är:"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "hanterarfunktion"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "valideringsfunktion"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "aktion"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "kolumnnamn"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "nytt_kolumnnamn"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "där aktion är en av:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "datatyp"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "jämförelse"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "kolumnvillkor"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "heltal"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "attributalternativ"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "tabellvillkor"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "utlösarnamn"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "föräldertabell"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "utökningsnamn"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "körkostnad"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "resultatrader"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "supportfunktion"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "rollspecifikation"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "användarnamn"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "där rollspecifikation kan vara:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "gruppnamn"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "tabellutrymmesnamn"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "indexnamn"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "lagringsparameter"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "kolumnnummer"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "stort_objekt_oid"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr "res_proc"
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr "join_proc"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "strateginummer"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "op_typ"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr "sorteringsfamiljnamn"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr "supportnummer"
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "argumenttyp"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "tabellnamn"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr "using-uttryck"
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "check-uttryck"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "publiceringsparameter"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "lösenord"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr "tidsstämpel"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "databasnamn"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr "ökningsvärde"
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "minvärde"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "maxvärde"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "start"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "starta om"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "cache"
+
+#: sql_help.c:1097
+msgid "new_target"
+msgstr "nytt_mål"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "anslinfo"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "publiceringsnamn"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "sätt_publicerings_alternativ"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "refresh_alternativ"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "prenumerationsparameter"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "partitionsnamn"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "partitionsgränsspec"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "sekvensalternativ"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "sekvensalternativ"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr "tabellvillkor_för_index"
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr "omskrivningsregelnamn"
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr "och partitionsgränsspec är:"
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "partitionsgränsuttryck"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr "numerisk_literal"
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "och kolumnvillkor är:"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "default_uttryck"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr "generatoruttryck"
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "indexparametrar"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "reftabell"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "refkolumn"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "referentiell_aktion"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "och tabellvillkor är:"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr "uteslutelement"
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "operator"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "predikat"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr "och tabellvillkor_för_index är:"
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "indexparametrar i UNIQUE-, PRIMARY KEY- och EXCLUDE-villkor är:"
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "uteslutelement i ett EXCLUDE-villkort är:"
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "op-klass"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "tabellutrymmesalternativ"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "symboltyp"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "ordlistnamn"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "gammal_ordlista"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "ny_ordlista"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "attributnamn"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "nytt_attributnamn"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr "nytt_enumvärde"
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr "närliggande_enumvärde"
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr "existerande_enumvärde"
+
+#: sql_help.c:1537
+msgid "property"
+msgstr "egenskap"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "servernamn"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "visningsalternativnamn"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr "visningsalternativvärde"
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "tabell_och_kolumner"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "där flaggor kan vara en av:"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr "boolean"
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "och tabell_och_kolumner är:"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "transaktionsläge"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "där transaktionsläge är en av:"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "argument"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "relationsnamn"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "domännamn"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "policynamn"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "regelnamn"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr "text"
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "transaktions-id"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "filnamn"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "kommando"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "villkor"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "fråga"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "formatnamn"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "avdelartecken"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "null-sträng"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "citattecken"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "escape-tecken"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "kodningsnamn"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr "accessmetodtyp"
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "arg_datatyp"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr "sfunc"
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr "tillståndsdatatyp"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr "tillståndsdatastorlek"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr "ffunc"
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr "kombinerafunk"
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr "serialiseringsfunk"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr "deserialiseringsfunk"
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr "startvärde"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr "msfunk"
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr "minvfunk"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr "mtillståndsdatatyp"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr "ntillståndsstorlek"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr "mffunk"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr "mstartvärde"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "sorteringsoperator"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "eller gamla syntaxen"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "bastyp"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "lokal"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "leverantör"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "version"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr "existerande_jämförelse"
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "källkodning"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "målkodning"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "mall"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "kodning"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "villkor"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "där villkor är:"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "händelse"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr "filtervariabel"
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "där kolumnvillkor är:"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr "rettyp"
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr "kolumntyp"
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "definition"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "obj-fil"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "linksymbol"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "metod"
+
+#: sql_help.c:2371
+msgid "opclass_parameter"
+msgstr "opclass_parameter"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr "anropshanterare"
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr "inline-hanterare"
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "val-funktion"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr "com_op"
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr "neg_op"
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr "familjenamn"
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "lagringstyp"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "där händelse kan vara en av:"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr "schema-element"
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "servertyp"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "serverversion"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "fdw-namn"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "statistiknamn"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "statistiksort"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "prenumerationsnamn"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "källtabell"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "like_alternativ"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr "och likealternativ är:"
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "katalog"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "parsernamn"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "källkonfig"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "startfunktion"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "gettoken_funktion"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "slutfunktion"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "symboltypfunktion"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "rubrikfunktion"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "init_funktion"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "symboluppdelningsfunktion"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr "från_sql_funktionsnamn"
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr "till_sql_funktionsnamn"
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr "refererat_tabellnamn"
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "övergångsrelationsnamn"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "argument"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr "etikett"
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr "subtyp"
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr "subtypoperatorklass"
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr "kanonisk_funktion"
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr "subtyp_diff_funktion"
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "inmatningsfunktion"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "utmatningsfunktion"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "mottagarfunktion"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "sändfunktion"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr "typmodifiering_indatafunktion"
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr "typmodifiering_utdatafunktion"
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "analysfunktion"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr "internlängd"
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "justering"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "lagring"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr "liketyp"
+
+#: sql_help.c:3065
+msgid "category"
+msgstr "kategori"
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr "föredragen"
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "standard"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "element"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "avskiljare"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr "sorterbar"
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr "with_fråga"
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "alias"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr "frånval"
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "markörnamn"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "utdatauttryck"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr "utdatanamn"
+
+#: sql_help.c:3190
+msgid "code"
+msgstr "kod"
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "parameter"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "sats"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "riktning"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "där riktning kan vara tom eller en av:"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "antal"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "sekvensnamn"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "arg_namn"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "arg_typ"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr "loid"
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "externt_schema"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "lokalt_schema"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr "konfliktmål"
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr "konfliktaktion"
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "där konfliktmål kan vara en av:"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "indexkolumnnamn"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "indexuttryck"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr "indexpredikat"
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "och konfliktaktion är en av:"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr "sub-SELECT"
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr "kanal"
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr "låsläge"
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "där låsläge är en av:"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr "innehåll"
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "gammal_roll"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "ny_roll"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "sparpunktnamn"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr "gruperingselement"
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "fönsternamn"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "fönsterdefinition"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr "select"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr "där frånval kan vara en av:"
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "kolumnalias"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "samplingsmetod"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr "frö"
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr "with_frågenamn"
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "kolumndefinition"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr "join-typ"
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr "join-villkor"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr "join-kolumn"
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr "och grupperingselement kan vara en av:"
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr "och with_fråga är:"
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "värden"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "ny_tabell"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr "tidszon"
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr "snapshot_id"
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr "sorteringsuttryck"
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "avbryt aktuell transaktion"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "ändra definitionen av en aggregatfunktion"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "ändra definitionen av en jämförelse"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "ändra definitionen av en konvertering"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "ändra en databas"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "definiera standardaccessrättigheter"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "ändra definitionen av en domän"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "ändra definitionen av en händelseutlösare"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "ändra definitionen av en utökning"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "ändra definitionen av en främmande data-omvandlare"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "ändra definitionen av en främmande tabell"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "ändra definitionen av en funktion"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "ändra rollnamn eller medlemskap"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "ändra definitionen av ett index"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "ändra definitionen av ett procedur-språk"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "ändra definitionen av ett stort objekt"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "ändra definitionen av en materialiserad vy"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "ändra definitionen av en operator"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "ändra definitionen av en operatorklass"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "ändra definitionen av en operatorfamilj"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "ändra definitionen av en säkerhetspolicy på radnivå"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "ändra definitionen av en procedur"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "ändra definitionen av en publicering"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "ändra databasroll"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "ändra definitionen av en rutin"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "ändra definitionen av en regel"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "ändra definitionen av ett schema"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "ändra definitionen av en sekvensgenerator"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "ändra definitionen av en främmande server"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "ändra definitionen av ett utökat statistikobjekt"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "ändra definitionen av en prenumerering"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "ändra en servers konfigurationsparameter"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "ändra definitionen av en tabell"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "ändra definitionen av ett tabellutrymme"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "ändra definitionen av en textsökkonfiguration"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "ändra definitionen av en textsökordlista"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "ändra definitionen av en textsökparser"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "ändra definitionen av en textsökmall"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "ändra definitionen av en utlösare"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "ändra definitionen av en typ"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "ändra definitionen av en användarmappning"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "ändra definitionen av en vy"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "samla in statistik om en databas"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "starta ett transaktionsblock"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "anropa en procedur"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "tvinga checkpoint i transaktionsloggen"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "stäng en markör"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "klustra en tabell efter ett index"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "definiera eller ändra en kommentar på ett objekt"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "utför den aktuella transaktionen"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "utför commit på en transaktion som tidigare förberetts för två-fas-commit"
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "kopiera data mellan en fil och en tabell"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "definiera en ny accessmetod"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "definiera en ny aggregatfunktion"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "definiera en ny typomvandling"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "definiera en ny jämförelse"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "definiera en ny teckenkodningskonvertering"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "skapa en ny databas"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "definiera en ny domän"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "definiera en ny händelseutlösare"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "installera en utökning"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "definiera en ny främmande data-omvandlare"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "definiera en ny främmande tabell"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "definiera en ny funktion"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "definiera en ny databasroll"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "skapa ett nytt index"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "definiera ett nytt procedur-språk"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "definiera en ny materialiserad vy"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "definiera en ny operator"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "definiera en ny operatorklass"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "definiera en ny operatorfamilj"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "definiera en ny säkerhetspolicy på radnivå för en tabell"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "definiera ett ny procedur"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "definiera en ny publicering"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "definiera en ny omskrivningsregel"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "definiera ett nytt schema"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "definiera en ny sekvensgenerator"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "definiera en ny främmande server"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "definiera utökad statistik"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "definiera en ny prenumeration"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "definiera en ny tabell"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "definiera en ny tabell utifrån resultatet av en fråga"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "definiera ett nytt tabellutrymme"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "definiera en ny textsökkonfiguration"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "definiera en ny textsökordlista"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "definiera en ny textsökparser"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "definiera en ny textsökmall"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "definiera en ny transform"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "definiera en ny utlösare"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "definiera en ny datatyp"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "definiera en ny mappning av en användare till en främmande server"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "definiera en ny vy"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "deallokera en förberedd sats"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "definiera en markör"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "radera rader i en tabell"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "släng sessionstillstånd"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "kör ett annonymt kodblock"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "ta bort en accessmetod"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "ta bort en aggregatfunktioner"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "ta bort en typomvandling"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "ta bort en jämförelse"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "ta bort en konvertering"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "ta bort en databas"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "ta bort en domän"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "ta bort en händelseutlösare"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "ta bort en utökning"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "ta bort en frammande data-omvandlare"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "ta bort en främmande tabell"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "ta bort en funktion"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "ta bort en databasroll"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "ta bort ett index"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "ta bort ett procedur-språk"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "ta bort en materialiserad vy"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "ta bort en operator"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "ta bort en operatorklass"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "ta bort en operatorfamilj"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "ta bort databasobjekt som ägs av databasroll"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "ta bort en säkerhetspolicy på radnivå från en tabell"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "ta bort en procedur"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "ta bort en publicering"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "ta bort en rutin"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "ta bort en omskrivningsregel"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "ta bort ett schema"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "ta bort en sekvens"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "ta bort en främmande server-deskriptor"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "ta bort utökad statistik"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "ta bort en prenumeration"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "ta bort en tabell"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "ta bort ett tabellutrymme"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "ta bort en textsökkonfiguration"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "ta bort en textsökordlista"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "ta bort en textsökparser"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "ta bort en textsökmall"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "ta bort en transform"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "ta bort en utlösare"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "ta bort en datatyp"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "ta bort en användarmappning för en främmande server"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "ta bort en vy"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "utför en förberedd sats"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "visa körningsplanen för en sats"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "hämta rader från en fråga med hjälp av en markör"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "definera åtkomsträttigheter"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "importera tabelldefinitioner från en främmande server"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "skapa nya rader i en tabell"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "lyssna efter notifiering"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "ladda en delad biblioteksfil (shared library)"
+
+#: sql_help.c:5725
+msgid "lock a table"
+msgstr "lås en tabell"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "flytta en markör"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "generera en notifiering"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "förbered en sats för körning"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "avbryt aktuell transaktion för två-fas-commit"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "byt ägare på databasobjekt som ägs av en databasroll"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "ersätt innehållet av en materialiserad vy"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "återskapa index"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "ta bort en tidigare definierad sparpunkt"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "återställ värde av körningsparameter till standardvärdet"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "ta bort åtkomsträttigheter"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "avbryt en transaktion som tidigare förberetts för två-fas-commit"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "rulla tillbaka till sparpunkt"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "definera en ny sparpunkt i den aktuella transaktionen"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "definiera eller ändra en säkerhetsetikett på ett objekt"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "hämta rader från en tabell eller vy"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "ändra en körningsparameter"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "sätt integritetsvillkorstiming för nuvarande transaktion"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "sätt användare för den aktiva sessionen"
+
+#: sql_help.c:5851
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "sätt sessionsanvändaridentifierare och nuvarande användaridentifierare för den aktiva sessionen"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "sätt inställningar för nuvarande transaktionen"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "visa värde på en körningsparameter"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "töm en eller flera tabeller"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "sluta att lyssna efter notifiering"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "uppdatera rader i en tabell"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "skräpsamla och eventuellt analysera en databas"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "beräkna en mängd rader"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 kan bara användas i icke-interaktivt läge"
+
+#: startup.c:299
+#, c-format
+msgid "could not connect to server: %s"
+msgstr "kunde inte ansluta till server: %s"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "kunde inte öppna loggfil \"%s\": %m"
+
+#: startup.c:439
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Skriv \"help\" för hjälp.\n"
+"\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "kunde inte sätta utskriftsparameter \"%s\""
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Försök med \"%s --help\" för mer information.\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "extra kommandoradsargument \"%s\" ignorerad"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "kunde inte hitta det egna programmets körbara fil"
+
+#: tab-complete.c:4640
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"tab-kompletteringsfråga misslyckades: %s\n"
+"Frågan var:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "okänt värde \"%s\" för \"%s\": förväntade sig en Boolean"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "ogiltigt värde \"%s\" för \"%s\": förväntade sig ett heltal"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "ogiltigt variabelnamn: \"%s\""
+
+#: variables.c:393
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"okänt värde \"%s\" för \"%s\"\n"
+"Tillgängliga värden är: %s."
+
+#~ msgid "Opfamily Name"
+#~ msgstr "Opfamiljenamn"
+
+#~ msgid "Proc name"
+#~ msgstr "Proc-namn"
+
+#~ msgid "List of procedures of operator families"
+#~ msgstr "Lista med procedurer i operatorfamilj"
+
+#~ msgid " \\g with no arguments is equivalent to a semicolon\n"
+#~ msgstr " \\g utan argument är ekvivalent med ett semikolon\n"
diff --git a/src/bin/psql/po/tr.po b/src/bin/psql/po/tr.po
new file mode 100644
index 0000000..0096ffb
--- /dev/null
+++ b/src/bin/psql/po/tr.po
@@ -0,0 +1,8604 @@
+# translation of psql-tr.po to Turkish
+# Devrim GUNDUZ <devrim@CommandPrompt.com>, 2004, 2005, 2006, 2007.
+# Nicolai Tufar <ntufar@gmail.com>, 2004, 2005, 2006, 2007.
+# Abdullah GÜLNER <agulner@gmail.com>, 2017, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psql-tr\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-06-17 21:43+0000\n"
+"PO-Revision-Date: 2019-06-19 12:48+0300\n"
+"Last-Translator: Abdullah Gülner <>\n"
+"Language-Team: Turkish <ceviri@postgresql.org.tr>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=0;\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"X-Poedit-Basepath: /home/devrim/PostgreSQL/pgsql-cvs/pgsql\n"
+"X-Poedit-Bookmarks: -1,-1,333,-1,-1,-1,-1,-1,-1,-1\n"
+
+#: ../../../src/common/logging.c:188
+#, c-format
+msgid "fatal: "
+msgstr "ölümcül (fatal): "
+
+#: ../../../src/common/logging.c:195
+#, c-format
+msgid "error: "
+msgstr "hata (error): "
+
+#: ../../../src/common/logging.c:202
+#, c-format
+msgid "warning: "
+msgstr "uyarı: "
+
+#: ../../common/exec.c:138 ../../common/exec.c:255 ../../common/exec.c:301
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "geçerli dizin tespit edilemedi: %m"
+
+#: ../../common/exec.c:157
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "geçersiz ikili (binary) \"%s\""
+
+#: ../../common/exec.c:207
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "\"%s\" ikili (binary) dosyası okunamadı"
+
+#: ../../common/exec.c:215
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "çalıştırılacak \"%s\" bulunamadı"
+
+#: ../../common/exec.c:271 ../../common/exec.c:310
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "çalışma dizini \"%s\" olarak değiştirilemedi: %m"
+
+#: ../../common/exec.c:288
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "symbolic link \"%s\" okuma hatası: %m"
+
+#: ../../common/exec.c:541
+#, c-format
+msgid "pclose failed: %m"
+msgstr "pclose başarısız oldu: %m"
+
+#: ../../common/exec.c:670 ../../common/exec.c:715 ../../common/exec.c:807
+#: command.c:1218 input.c:228 mainloop.c:82 mainloop.c:386
+#, c-format
+msgid "out of memory"
+msgstr "yetersiz bellek"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98
+#, c-format
+msgid "out of memory\n"
+msgstr "yetersiz bellek\n"
+
+#: ../../common/fe_memutils.c:92
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "null pointer duplicate edilemiyor (iç hata)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "geçerli kullanıcı ID si bulunamadı %ld: %s"
+
+#: ../../common/username.c:45 command.c:555
+msgid "user does not exist"
+msgstr "kullanıcı mevcut değil"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "kullanıcı adı arama başarısız: hata kodu %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "komut çalıştırılabilir değil"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "komut bulunamadı"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "alt süreç %d çıkış koduyla sonuçlandırılmıştır"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "alt süreç 0x%X exception tarafından sonlandırılmıştır"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "alt süreç %d sinyali tarafından sonlandırılmıştır: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır"
+
+#: ../../fe_utils/print.c:353
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu satır)"
+msgstr[1] "(%lu satır)"
+
+#: ../../fe_utils/print.c:3058
+#, c-format
+msgid "Interrupted\n"
+msgstr "kesildi\n"
+
+#: ../../fe_utils/print.c:3122
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "Başlık tablo içeriğine eklenemedi: %d kolon sayısı aşıldı.\n"
+
+#: ../../fe_utils/print.c:3162
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "Hücre tablo içeriğine eklenemedi: %d olan toplam hücre sayısı aşıldı.\n"
+
+#: ../../fe_utils/print.c:3417
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "geçersiz çıktı biçimi (iç hata): %d"
+
+#: ../../fe_utils/psqlscan.l:729
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "\"%s\" değişkeninin özyinelemeli genişlemesi (recursive expansion) atlanıyor"
+
+#: command.c:221
+#, c-format
+msgid "invalid command \\%s"
+msgstr "geçersiz komut \\%s"
+
+#: command.c:223
+#, c-format
+msgid "Try \\? for help."
+msgstr "Yardım için \\? yazınız."
+
+#: command.c:241
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: \"%s\" parametresi fazla, yok sayıldı"
+
+#: command.c:293
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "\\%s komut yok sayıldı; güncel \\if blokundan çıkmak için \\endif veya Ctrl-C kullanınız"
+
+#: command.c:553
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "%ld kullanıcı ID'si için home dizinine ulaşılamadı: %s"
+
+#: command.c:571
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: \"%s\" dizinine geçiş yapılamadı: %m"
+
+#: command.c:596
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "Şu anda bir veritabanına bağlı değilsiniz.\n"
+
+#: command.c:609
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "\"%s\" veritabanına \"%s\" kullanıcısıyla \"%s\" adresi üzrerinden \"%s\" portundan bağlandınız.\n"
+
+#: command.c:612
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "\"%s\" veritabanına \"%s\" kullanıcısıyla \"%s\" içindeki soket ile \"%s\" portundan bağlandınız.\n"
+
+#: command.c:618
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "\"%s\" veritabanına \"%s\" kullanıcısıyla \"%s\" sunucusu (\"%s\" adresi) üzerinden \"%s\" portundan bağlandınız.\n"
+
+#: command.c:621
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "\"%s\" veritabanına \"%s\" kullanıcısıyla \"%s\" sunucusu üzerinden \"%s\" portundan bağlandınız.\n"
+
+#: command.c:930 command.c:1026 command.c:2411
+#, c-format
+msgid "no query buffer"
+msgstr "sorgu tamponu mevcut değil"
+
+#: command.c:963 command.c:4824
+#, c-format
+msgid "invalid line number: %s"
+msgstr "geçersiz satır numarası: %s"
+
+#: command.c:1017
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "Sunucu (%s sürümü) fonksiyon kaynak kodunu düzenlemeyi (edit) desteklememektedir."
+
+#: command.c:1020
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "Sunucu (%s sürümü) görünüm tanımlarını düzenlemeyi (edit) desteklememektedir."
+
+#: command.c:1102
+msgid "No changes"
+msgstr "Değişiklik yok"
+
+#: command.c:1179
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: dil kodlama adı geçersiz ya da dönüştürme fonksiyonu bulunamadı"
+
+#: command.c:1214 command.c:1853 command.c:3109 command.c:4926 common.c:175
+#: common.c:224 common.c:521 common.c:1362 common.c:1390 common.c:1498
+#: common.c:1601 common.c:1639 copy.c:490 copy.c:709 help.c:63 large_obj.c:157
+#: large_obj.c:192 large_obj.c:254
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1221
+msgid "There is no previous error."
+msgstr "Önceden kalan hata bulunmuyor."
+
+#: command.c:1409 command.c:1714 command.c:1728 command.c:1745 command.c:1905
+#: command.c:2142 command.c:2378 command.c:2418
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: zorunlu argüman eksik"
+
+#: command.c:1540
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: \\else den sonra gelemez"
+
+#: command.c:1545
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: eşleşen \\if bulunmuyor"
+
+#: command.c:1609
+#, fuzzy, c-format
+#| msgid "\\else: cannot occur after \\else\n"
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: \\else den sonra gelemez\n"
+
+#: command.c:1614
+#, fuzzy, c-format
+#| msgid "\\else: no matching \\if\n"
+msgid "\\else: no matching \\if"
+msgstr "\\else: eşleşen \\if bulunmuyor\n"
+
+#: command.c:1654
+#, fuzzy, c-format
+#| msgid "\\endif: no matching \\if\n"
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: eşleşen \\if bulunmuyor\n"
+
+#: command.c:1809
+msgid "Query buffer is empty."
+msgstr "Sorgu tamponu boş."
+
+#: command.c:1831
+msgid "Enter new password: "
+msgstr "Yeni parola girin:"
+
+#: command.c:1832
+msgid "Enter it again: "
+msgstr "Yeniden girin:"
+
+#: command.c:1836
+#, fuzzy, c-format
+#| msgid "Passwords didn't match.\n"
+msgid "Passwords didn't match."
+msgstr "Parolalar uyuşmıyor.\n"
+
+#: command.c:1935
+#, fuzzy, c-format
+#| msgid "\\%s: could not read value for variable\n"
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: değişken için değer okunamadı\n"
+
+#: command.c:2038
+msgid "Query buffer reset (cleared)."
+msgstr "Sorgu tamponu sıfırlanmış."
+
+#: command.c:2060
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Geçmiş (history), \"%s\" dosyasına yazıldı.\n"
+
+#: command.c:2147
+#, fuzzy, c-format
+#| msgid "\\%s: environment variable name must not contain \"=\"\n"
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: ortam değişkeni \"=\" içermemelidir\n"
+
+#: command.c:2208
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support showing function source.\n"
+msgid "The server (version %s) does not support showing function source."
+msgstr "Sunucu (%s sürümü) fonksiyon kaynağını görüntülemeyi desteklemiyor.\n"
+
+#: command.c:2211
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support showing view definitions.\n"
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "Sunucu (%s sürümü) görünüm (view) tanımlarını göstermeyi desteklememektedir.\n"
+
+#: command.c:2218
+#, fuzzy, c-format
+#| msgid "function name is required\n"
+msgid "function name is required"
+msgstr "fonksiyon adı gerekli\n"
+
+#: command.c:2220
+#, fuzzy, c-format
+#| msgid "view name is required\n"
+msgid "view name is required"
+msgstr "görünüm (view) adı gerekli\n"
+
+#: command.c:2350
+msgid "Timing is on."
+msgstr "Zamanlama açık."
+
+#: command.c:2352
+msgid "Timing is off."
+msgstr "Zamanlama kapalı."
+
+#: command.c:2437 command.c:2465 command.c:3508 command.c:3511 command.c:3514
+#: command.c:3520 command.c:3522 command.c:3530 command.c:3540 command.c:3549
+#: command.c:3563 command.c:3580 command.c:3638 common.c:71 copy.c:333
+#: copy.c:405 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, fuzzy, c-format
+#| msgid "%s: %s"
+msgid "%s: %m"
+msgstr "%s: %s"
+
+#: command.c:2849 startup.c:240 startup.c:291
+msgid "Password: "
+msgstr "Parola: "
+
+#: command.c:2854 startup.c:288
+#, c-format
+msgid "Password for user %s: "
+msgstr "%s kullanıcısının parolası: "
+
+#: command.c:2925
+#, fuzzy, c-format
+#| msgid "All connection parameters must be supplied because no database connection exists\n"
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "Bütün bağlantı parametreleri sağlanmalı çünkü hiçbir veritabanı bağlantısı bulunmuyor\n"
+
+#: command.c:3113
+#, fuzzy, c-format
+#| msgid "Previous connection kept\n"
+msgid "Previous connection kept"
+msgstr "Önceki bağlantı kullanılacaktır\n"
+
+#: command.c:3117
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3159
+#, fuzzy, c-format
+#| msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Şu anda \"%s\" veritabanına \"%s\" kullanıcısı ile \"%s\" sunucusunda \"%s\". porttan bağlısınız.\n"
+
+#: command.c:3162
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Şu anda \"%s\" veritabanına \"%s\" kullanıcısıyla \"%s\" içindeki soket ile \"%s\" port'undan bağlısınız.\n"
+
+#: command.c:3168
+#, fuzzy, c-format
+#| msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Şu anda \"%s\" veritabanına \"%s\" kullanıcısı ile \"%s\" sunucusunda \"%s\". porttan bağlısınız.\n"
+
+#: command.c:3171
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Şu anda \"%s\" veritabanına \"%s\" kullanıcısı ile \"%s\" sunucusunda \"%s\". porttan bağlısınız.\n"
+
+#: command.c:3176
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Şu anda \"%s\" veritabanına \"%s\" kullanıcısı ile bağlısınız.\n"
+
+#: command.c:3209
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, sunucu %s)\n"
+
+#: command.c:3217
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"UYARI: %s ana sürümü %s, sunucu ana sürümü %s.\n"
+" Bazı psql özellikleri çalışmayabilir.\n"
+
+#: command.c:3255
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL bağlantısı (protokol:%s, cipher: %s, bit sayısı: %s, sıkıştırma: %s)\n"
+
+#: command.c:3256 command.c:3257 command.c:3258
+msgid "unknown"
+msgstr "bilinmeyen"
+
+#: command.c:3259 help.c:46
+msgid "off"
+msgstr "kapalı"
+
+#: command.c:3259 help.c:46
+msgid "on"
+msgstr "açık"
+
+#: command.c:3273
+#, c-format
+msgid "GSSAPI Encrypted connection\n"
+msgstr ""
+
+#: command.c:3293
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"UYARI: Uçbirimin kod sayfası (%u), Windows kod sayfasından (%u) farklıdır\n"
+" 8-bitlik karakterler doğru çalışmayabilir. Ayrıntılar için psql referans\n"
+" belgelerinde \"Windows kullanıcılarına notlar\" bölümüne bakın.\n"
+
+#: command.c:3397
+#, fuzzy, c-format
+#| msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n"
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "bir satır numarası belirtmek için PSQL_EDITOR_LINENUMBER_ARG çevresel değişkenini ayarlamanız gereklidir\n"
+
+#: command.c:3426
+#, fuzzy, c-format
+#| msgid "could not start editor \"%s\"\n"
+msgid "could not start editor \"%s\""
+msgstr "\"%s\" metin düzenleyicisi çalıştırılamadı\n"
+
+#: command.c:3428
+#, fuzzy, c-format
+#| msgid "could not start /bin/sh\n"
+msgid "could not start /bin/sh"
+msgstr "/bin/sh başlatılamıyor\n"
+
+#: command.c:3466
+#, fuzzy, c-format
+#| msgid "could not locate temporary directory: %s\n"
+msgid "could not locate temporary directory: %s"
+msgstr "geçici dizin bulunamıyor: %s\n"
+
+#: command.c:3493
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "\"%s\" geçici dosya açılamıyor: %m"
+
+#: command.c:3786
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr ""
+
+#: command.c:3806
+#, fuzzy, c-format
+#| msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n"
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: izin verilen biçimler: unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n"
+
+#: command.c:3825
+#, fuzzy, c-format
+#| msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n"
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: izin verilen çizgi biçimleri: ascii, old-ascii, unicode\n"
+
+#: command.c:3840
+#, fuzzy, c-format
+#| msgid "\\pset: allowed Unicode border line styles are single, double\n"
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: izin verilen Unicode kenar çizgi biçimleri single, double\n"
+
+#: command.c:3855
+#, fuzzy, c-format
+#| msgid "\\pset: allowed Unicode column line styles are single, double\n"
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: izin verilen Unicode sütun çizgi biçimleri: single, double\n"
+
+#: command.c:3870
+#, fuzzy, c-format
+#| msgid "\\pset: allowed Unicode header line styles are single, double\n"
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: izin verilen Unicode üst bilgi çizgi biçimleri: single, double\n"
+
+#: command.c:3913
+#, fuzzy, c-format
+#| msgid "COPY escape must be a single one-byte character"
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "COPY escape bir baytlık tek bir karakter olmalıdır"
+
+#: command.c:3918
+#, fuzzy, c-format
+#| msgid "COPY delimiter cannot be newline or carriage return"
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "COPY ayıracı yeni satır ya da satırbaşı karakteri olamaz"
+
+#: command.c:4055 command.c:4241
+#, fuzzy, c-format
+#| msgid "\\pset: unknown option: %s\n"
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: bilinmeyen seçenek: %s\n"
+
+#: command.c:4073
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Kenar stili: %d.\n"
+
+#: command.c:4079
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "Hedef genişlik ayarı kaldırıldı.\n"
+
+#: command.c:4081
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "Hedef genişlik %d.\n"
+
+#: command.c:4088
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Geniş gösterme açık.\n"
+
+#: command.c:4090
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "Geniş gösterme otomatik olarak kullanılıyor.\n"
+
+#: command.c:4092
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Geniş gösterme kapalı.\n"
+
+#: command.c:4098
+#, fuzzy, c-format
+#| msgid "Field separator is \"%s\".\n"
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "Alan ayıracı: \"%s\".\n"
+
+#: command.c:4106 command.c:4114
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Alan ayıracı sıfır bayttır.\n"
+
+#: command.c:4108
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Alan ayıracı: \"%s\".\n"
+
+#: command.c:4121
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Varsayılan sayfa altbilgisi açık.\n"
+
+#: command.c:4123
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Varsayılan sayfa altbilgisi kapalı.\n"
+
+#: command.c:4129
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Çıktı formatı: %s.\n"
+
+#: command.c:4135
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Satır stili: %s.\n"
+
+#: command.c:4142
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null display is \"%s\".\n"
+
+#: command.c:4150
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "Yerel duyarlı sayısal çıktı açık.\n"
+
+#: command.c:4152
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "Yerel duyarlı sayısal çıktı kapalı.\n"
+
+#: command.c:4159
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Uzun çıktı için sayfalama kullanılacaktır.\n"
+
+#: command.c:4161
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Sayfalama her zaman kullanılacak.\n"
+
+#: command.c:4163
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "Sayfalama kullanımı kapalı.\n"
+
+#: command.c:4169
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "%d sayısından düşük satır için sayfalama kullanılmayacak.\n"
+msgstr[1] "%d sayısından düşük satır için sayfalama kullanılmayacak.\n"
+
+#: command.c:4179 command.c:4189
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Kayıt ayıracı sıfır bayt'tır.\n"
+
+#: command.c:4181
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Kayıt ayıracı <newline>'dır.\n"
+
+#: command.c:4183
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Kayıt ayıracı \"%s\".\n"
+
+#: command.c:4196
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Tablo özellikleri: \"%s\".\n"
+
+#: command.c:4199
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Tablo özellikleri kaldırıldı.\n"
+
+#: command.c:4206
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Başlık \"%s\".\n"
+
+#: command.c:4208
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Başlık kaldırıldı\n"
+
+#: command.c:4215
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "Sadece kayıtları gösterme açık.\n"
+
+#: command.c:4217
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "Sadece kayıtları gösterme kapalı.\n"
+
+#: command.c:4223
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Unicode kenar çizgi stili: \"%s\".\n"
+
+#: command.c:4229
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Unicode sütun çizgi stili: \"%s\".\n"
+
+#: command.c:4235
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Unicode sayfa üstbilgi çizgi stili: \"%s\".\n"
+
+#: command.c:4397
+#, fuzzy, c-format
+#| msgid "\\!: failed\n"
+msgid "\\!: failed"
+msgstr "\\!: başarısız\n"
+
+#: command.c:4422 common.c:781
+#, fuzzy, c-format
+#| msgid "\\watch cannot be used with an empty query\n"
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch boş bir sorgu ile kullanılamaz\n"
+
+#: command.c:4463
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (her %gs)\n"
+
+#: command.c:4466
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (her %gs)\n"
+
+#: command.c:4520 command.c:4527 common.c:681 common.c:688 common.c:1345
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********* SORGU **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:4719
+#, fuzzy, c-format
+#| msgid "\"%s.%s\" is not a view\n"
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\" bir görünüm (view) değildir\n"
+
+#: command.c:4735
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "reloptions dizisi (array) ayrıştırılamadı"
+
+#: common.c:160
+#, fuzzy, c-format
+#| msgid "cannot escape without active connection\n"
+msgid "cannot escape without active connection"
+msgstr "aktif bağlantı olmadan vazgeçilemez (escape)\n"
+
+#: common.c:201
+#, fuzzy, c-format
+#| msgid "shell command argument contains a newline or carriage return: \"%s\"\n"
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "kabuk komut argümanı yeni satır ya da satırbaşı karakteri içeriyor: \"%s\"\n"
+
+#: common.c:395
+#, fuzzy, c-format
+#| msgid "connection to server was lost\n"
+msgid "connection to server was lost"
+msgstr "sunucuya bağlantı kesildi\n"
+
+#: common.c:399
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "Sunucuya bağlantı kesildi. Yeniden bağlantı deneniyor:"
+
+#: common.c:404
+#, c-format
+msgid "Failed.\n"
+msgstr "Başarısız.\n"
+
+#: common.c:411
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Başarılı.\n"
+
+#: common.c:511 common.c:1063 common.c:1280
+#, fuzzy, c-format
+#| msgid "unexpected PQresultStatus: %d\n"
+msgid "unexpected PQresultStatus: %d"
+msgstr "beklenmeyen PQresultStatus: %d\n"
+
+#: common.c:620
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Süre: %.3f milisaniye\n"
+
+#: common.c:635
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Süre: %.3f ms (%02d:%06.3f)\n"
+
+#: common.c:644
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Süre: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:651
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Süre: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:675 common.c:733 common.c:1316
+#, fuzzy, c-format
+#| msgid "You are currently not connected to a database.\n"
+msgid "You are currently not connected to a database."
+msgstr "Şu anda bir veritabanına bağlı değilsiniz.\n"
+
+#: common.c:788
+#, fuzzy, c-format
+#| msgid "\\watch cannot be used with COPY\n"
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch COPY ile birlikte kullanılamaz\n"
+
+#: common.c:793
+#, fuzzy, c-format
+#| msgid "unexpected result status for \\watch\n"
+msgid "unexpected result status for \\watch"
+msgstr "\\watch için beklenmedik sonuç durumu\n"
+
+#: common.c:823
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "PID %3$d olan sunucu sürecinden \"%2$s\" payload'lı \"%1$s\" asenkon bildiri alınmış.\n"
+
+#: common.c:826
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "PID %2$d olan sunucu sürecinden \"%1$s\" asenkon bildiri alınmış.\n"
+
+#: common.c:889
+#, fuzzy, c-format
+#| msgid "no rows returned for \\gset\n"
+msgid "no rows returned for \\gset"
+msgstr "\\gset için hiç bir satır dönmedi\n"
+
+#: common.c:894
+#, fuzzy, c-format
+#| msgid "more than one row returned for \\gset\n"
+msgid "more than one row returned for \\gset"
+msgstr "\\gset için birden fazla satır döndü\n"
+
+#: common.c:1325
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(Tek adım modu: verify command)*******************************************\n"
+"%s\n"
+"***(devam etmek için return, durdurmak için x ve return'e basınız)********************\n"
+
+#: common.c:1380
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n"
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "Sunucu (%s sürümü) ON_ERROR_ROLLBACK için savepointleri desteklememektedir.\n"
+
+#: common.c:1443
+#, fuzzy, c-format
+#| msgid "STATEMENT: %s\n"
+msgid "STATEMENT: %s"
+msgstr "KOMUT: %s\n"
+
+#: common.c:1486
+#, fuzzy, c-format
+#| msgid "unexpected transaction status (%d)\n"
+msgid "unexpected transaction status (%d)"
+msgstr "beklenmeyen işlem (transaction) durumu (%d)\n"
+
+#: common.c:1623 describe.c:2002
+msgid "Column"
+msgstr "Kolon"
+
+#: common.c:1624 describe.c:179 describe.c:394 describe.c:412 describe.c:457
+#: describe.c:474 describe.c:963 describe.c:1127 describe.c:1712
+#: describe.c:1736 describe.c:2003 describe.c:3673 describe.c:3858
+#: describe.c:4091 describe.c:5297
+msgid "Type"
+msgstr "Veri tipi"
+
+#: common.c:1673
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "Komut sonulç döndürmedi, veya sonuçta hiç sütun yok.\n"
+
+#: copy.c:100
+#, fuzzy, c-format
+#| msgid "\\copy: arguments required\n"
+msgid "\\copy: arguments required"
+msgstr "\\copy: parametre eksik\n"
+
+#: copy.c:255
+#, fuzzy, c-format
+#| msgid "\\copy: parse error at \"%s\"\n"
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: \"%s\" ifadesinde ayrıştırma hatası\n"
+
+#: copy.c:257
+#, fuzzy, c-format
+#| msgid "\\copy: parse error at end of line\n"
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: satır sonunda ayrıştırma hatası\n"
+
+#: copy.c:330
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "\"%s\" komutu yürütülemedi: %m"
+
+#: copy.c:346
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "\"%s\" dosyası durumlanamadı: %m"
+
+#: copy.c:350
+#, fuzzy, c-format
+#| msgid "%s: cannot copy from/to a directory\n"
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: dizinden ya da dizine kopyalanamıyor\n"
+
+#: copy.c:387
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "dış komuta doğru olan pipe kapatılamadı: %m"
+
+#: copy.c:392
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:455 copy.c:465
+#, fuzzy, c-format
+#| msgid "could not write COPY data: %s\n"
+msgid "could not write COPY data: %m"
+msgstr "COPY verisi yazılamadı: %s\n"
+
+#: copy.c:471
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "COPY veri aktarımı başarısız: %s"
+
+#: copy.c:532
+msgid "canceled by user"
+msgstr "kullanıcı tarafından iptal edildi"
+
+#: copy.c:543
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"Kopyalanacak veriyi girin ve ardından enter'a basın.\n"
+"Sonuçlandırmak için yeni satırda ters taksim işareti ve nokta veya bir EOF işareti girin."
+
+#: copy.c:671
+msgid "aborted because of read failure"
+msgstr "okuma hatası nedeniyle kesildi"
+
+#: copy.c:705
+msgid "trying to exit copy mode"
+msgstr "copy modundan çıkmaya çalışıyor"
+
+#: crosstabview.c:124
+#, fuzzy, c-format
+#| msgid "\\crosstabview: statement did not return a result set\n"
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: komut bir sonuç kümesi döndürmedi\n"
+
+#: crosstabview.c:130
+#, fuzzy, c-format
+#| msgid "\\crosstabview: query must return at least three columns\n"
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: sorgu en az üç sütun döndürmelidir\n"
+
+#: crosstabview.c:157
+#, fuzzy, c-format
+#| msgid "\\crosstabview: vertical and horizontal headers must be different columns\n"
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crostabview: dikey ve yatayda üstbilgiler farklı sütunlar olmalıdır\n"
+
+#: crosstabview.c:173
+#, fuzzy, c-format
+#| msgid "\\crosstabview: data column must be specified when query returns more than three columns\n"
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: sorgu üçten fazla sütun döndürüyorsa veri sütunu belirtilmelidir\n"
+
+#: crosstabview.c:229
+#, fuzzy, c-format
+#| msgid "\\crosstabview: maximum number of columns (%d) exceeded\n"
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: azami sütun sayısı (%d) aşılmıştır\n"
+
+#: crosstabview.c:398
+#, fuzzy, c-format
+#| msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n"
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: sorgu sonucu \"%s\" satırı, \"%s\" sütunu için çoklu veri değerleri içermektedir\n"
+
+#: crosstabview.c:646
+#, fuzzy, c-format
+#| msgid "\\crosstabview: column number %d is out of range 1..%d\n"
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: %d sütun numarası, 1..%d aralığının dışında\n"
+
+#: crosstabview.c:671
+#, fuzzy, c-format
+#| msgid "\\crosstabview: ambiguous column name: \"%s\"\n"
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: belirsiz sütun adı: \"%s\"\n"
+
+#: crosstabview.c:679
+#, fuzzy, c-format
+#| msgid "\\crosstabview: column name not found: \"%s\"\n"
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: sütun adı bulunamadı: \"%s\"\n"
+
+#: describe.c:77 describe.c:374 describe.c:679 describe.c:811 describe.c:955
+#: describe.c:1116 describe.c:1188 describe.c:3662 describe.c:3845
+#: describe.c:4089 describe.c:4180 describe.c:4447 describe.c:4607
+#: describe.c:4848 describe.c:4923 describe.c:4934 describe.c:4996
+#: describe.c:5421 describe.c:5504
+msgid "Schema"
+msgstr "Şema"
+
+#: describe.c:78 describe.c:176 describe.c:244 describe.c:252 describe.c:375
+#: describe.c:680 describe.c:812 describe.c:873 describe.c:956 describe.c:1189
+#: describe.c:3663 describe.c:3846 describe.c:4012 describe.c:4090
+#: describe.c:4181 describe.c:4260 describe.c:4448 describe.c:4532
+#: describe.c:4608 describe.c:4849 describe.c:4924 describe.c:4935
+#: describe.c:4997 describe.c:5194 describe.c:5278 describe.c:5502
+#: describe.c:5674 describe.c:5899
+msgid "Name"
+msgstr "Adı"
+
+#: describe.c:79 describe.c:387 describe.c:405 describe.c:451 describe.c:468
+msgid "Result data type"
+msgstr "Sonuç veri tipi"
+
+#: describe.c:87 describe.c:100 describe.c:104 describe.c:388 describe.c:406
+#: describe.c:452 describe.c:469
+msgid "Argument data types"
+msgstr "Argüman veri tipi"
+
+#: describe.c:112 describe.c:119 describe.c:187 describe.c:275 describe.c:514
+#: describe.c:728 describe.c:827 describe.c:898 describe.c:1191 describe.c:2021
+#: describe.c:3451 describe.c:3698 describe.c:3892 describe.c:4043
+#: describe.c:4117 describe.c:4190 describe.c:4273 describe.c:4356
+#: describe.c:4475 describe.c:4541 describe.c:4609 describe.c:4750
+#: describe.c:4792 describe.c:4865 describe.c:4927 describe.c:4936
+#: describe.c:4998 describe.c:5220 describe.c:5300 describe.c:5435
+#: describe.c:5505 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Açıklama"
+
+#: describe.c:137
+msgid "List of aggregate functions"
+msgstr "Aggregate fonksiyonların listesi"
+
+#: describe.c:162
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support access methods.\n"
+msgid "The server (version %s) does not support access methods."
+msgstr "Bu sunucu (%s sürümü) erişim yöntemlerini desteklememektedir.\n"
+
+#: describe.c:177
+msgid "Index"
+msgstr "İndeks"
+
+#: describe.c:178 describe.c:3679 describe.c:3871 describe.c:5422
+msgid "Table"
+msgstr "Tablo"
+
+#: describe.c:186 describe.c:5199
+msgid "Handler"
+msgstr "İşleyici (handler)"
+
+#: describe.c:205
+msgid "List of access methods"
+msgstr "Erişim yöntemlerinin listesi"
+
+#: describe.c:231
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support tablespaces.\n"
+msgid "The server (version %s) does not support tablespaces."
+msgstr "Sunucu (%s sürümü) tablespace'leri desteklememektedir.\n"
+
+#: describe.c:245 describe.c:253 describe.c:502 describe.c:718 describe.c:874
+#: describe.c:1115 describe.c:3674 describe.c:3847 describe.c:4016
+#: describe.c:4262 describe.c:4533 describe.c:5195 describe.c:5279
+#: describe.c:5675 describe.c:5801 describe.c:5900 large_obj.c:289
+msgid "Owner"
+msgstr "Sahibi"
+
+#: describe.c:246 describe.c:254
+msgid "Location"
+msgstr "Yer"
+
+#: describe.c:265 describe.c:3269
+msgid "Options"
+msgstr "Seçenekler"
+
+#: describe.c:270 describe.c:691 describe.c:890 describe.c:3690 describe.c:3694
+msgid "Size"
+msgstr "Boyut"
+
+#: describe.c:292
+msgid "List of tablespaces"
+msgstr "Tablespace listesi"
+
+#: describe.c:334
+#, fuzzy, c-format
+#| msgid "\\df only takes [anptwS+] as options\n"
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df sadece [anptwS+] seçeneklerini alır\n"
+
+#: describe.c:342 describe.c:353
+#, fuzzy, c-format
+#| msgid "\\df does not take a \"%c\" option with server version %s\n"
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df \"%c\" seçeneğini %s sunucu sürümünde almaz\n"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:390 describe.c:408 describe.c:454 describe.c:471
+msgid "agg"
+msgstr "agg"
+
+#: describe.c:391 describe.c:409
+msgid "window"
+msgstr "pencere"
+
+#: describe.c:392
+msgid "proc"
+msgstr "proc"
+
+#: describe.c:393 describe.c:411 describe.c:456 describe.c:473
+msgid "func"
+msgstr "func"
+
+#: describe.c:410 describe.c:455 describe.c:472 describe.c:1325
+msgid "trigger"
+msgstr "tetikleyici (trigger)"
+
+#: describe.c:484
+msgid "immutable"
+msgstr "durağan"
+
+#: describe.c:485
+msgid "stable"
+msgstr "kararlı"
+
+#: describe.c:486
+msgid "volatile"
+msgstr "oynaklık"
+
+#: describe.c:487
+msgid "Volatility"
+msgstr "Oynaklık"
+
+#: describe.c:495
+msgid "restricted"
+msgstr "kısıtlı"
+
+#: describe.c:496
+msgid "safe"
+msgstr "güvenli"
+
+#: describe.c:497
+msgid "unsafe"
+msgstr "güvensiz"
+
+#: describe.c:498
+msgid "Parallel"
+msgstr "Paralel"
+
+#: describe.c:503
+msgid "definer"
+msgstr "tanımlayıcı"
+
+#: describe.c:504
+msgid "invoker"
+msgstr "çağıran"
+
+#: describe.c:505
+msgid "Security"
+msgstr "Güvenlik"
+
+#: describe.c:512
+msgid "Language"
+msgstr "Dil"
+
+#: describe.c:513
+msgid "Source code"
+msgstr "Kaynak kodu"
+
+#: describe.c:642
+msgid "List of functions"
+msgstr "Fonksiyonların listesi"
+
+#: describe.c:690
+msgid "Internal name"
+msgstr "Dahili adı"
+
+#: describe.c:712
+msgid "Elements"
+msgstr "Elemanlar"
+
+#: describe.c:769
+msgid "List of data types"
+msgstr "Veri tiplerinin listesi"
+
+#: describe.c:813
+msgid "Left arg type"
+msgstr "Sol argüman veri tipi"
+
+#: describe.c:814
+msgid "Right arg type"
+msgstr "Sağ argüman veri tipi"
+
+#: describe.c:815
+msgid "Result type"
+msgstr "Sonuç veri tipi"
+
+#: describe.c:820 describe.c:4268 describe.c:4333 describe.c:4339
+#: describe.c:4749
+msgid "Function"
+msgstr "Fonksiyon"
+
+#: describe.c:845
+msgid "List of operators"
+msgstr "Operatörlerin listesi"
+
+#: describe.c:875
+msgid "Encoding"
+msgstr "Dil Kodlaması"
+
+#: describe.c:880 describe.c:4449
+msgid "Collate"
+msgstr "Sıralama(collate)"
+
+#: describe.c:881 describe.c:4450
+msgid "Ctype"
+msgstr "Ctype"
+
+#: describe.c:894
+msgid "Tablespace"
+msgstr "Tablespace"
+
+#: describe.c:916
+msgid "List of databases"
+msgstr "Veritabanlarının listesi"
+
+#: describe.c:957 describe.c:1118 describe.c:3664
+msgid "table"
+msgstr "tablo"
+
+#: describe.c:958 describe.c:3665
+msgid "view"
+msgstr "view"
+
+#: describe.c:959 describe.c:3666
+msgid "materialized view"
+msgstr "maddileştirilmiş görünüm(materialized view)"
+
+#: describe.c:960 describe.c:1120 describe.c:3668
+msgid "sequence"
+msgstr "sequence"
+
+#: describe.c:961 describe.c:3670
+msgid "foreign table"
+msgstr "uzak (foreign) tablosu"
+
+#: describe.c:962 describe.c:3671 describe.c:3856
+#, fuzzy
+#| msgid "\"%s\" is a partitioned table"
+msgid "partitioned table"
+msgstr "\"%s\" bölümlenmiş bir tablodur"
+
+#: describe.c:974
+msgid "Column privileges"
+msgstr "Sütun erişim hakları"
+
+#: describe.c:1005 describe.c:1039
+msgid "Policies"
+msgstr "İlkeler"
+
+#: describe.c:1071 describe.c:5956 describe.c:5960
+msgid "Access privileges"
+msgstr "Erişim hakları"
+
+#: describe.c:1102
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support altering default privileges.\n"
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "Sunucu (%s sürümü) varsayılan (default) hakların değiştirilmesini desteklemiyor.\n"
+
+#: describe.c:1122
+msgid "function"
+msgstr "fonksiyon"
+
+#: describe.c:1124
+msgid "type"
+msgstr "tip"
+
+#: describe.c:1126
+msgid "schema"
+msgstr "şema"
+
+#: describe.c:1150
+msgid "Default access privileges"
+msgstr "Varsayılan erişim hakları"
+
+#: describe.c:1190
+msgid "Object"
+msgstr "Nesne"
+
+#: describe.c:1204
+msgid "table constraint"
+msgstr "tablo kısıtlaması (constraint)"
+
+#: describe.c:1226
+msgid "domain constraint"
+msgstr "alan kısıtlaması (domain constraint)"
+
+#: describe.c:1254
+msgid "operator class"
+msgstr "operatör sınıfı"
+
+#: describe.c:1283
+msgid "operator family"
+msgstr "operatör ailesi"
+
+#: describe.c:1305
+msgid "rule"
+msgstr "rule"
+
+#: describe.c:1347
+msgid "Object descriptions"
+msgstr "Nesne açıklamaları"
+
+#: describe.c:1403 describe.c:3762
+#, fuzzy, c-format
+#| msgid "Did not find any relation named \"%s\".\n"
+msgid "Did not find any relation named \"%s\"."
+msgstr "\"%s\" adında nesne bulunamadı.\n"
+
+#: describe.c:1406 describe.c:3765
+#, fuzzy, c-format
+#| msgid "Did not find any relations.\n"
+msgid "Did not find any relations."
+msgstr "Hiç bir nesne bulunamadı.\n"
+
+#: describe.c:1661
+#, fuzzy, c-format
+#| msgid "Did not find any relation with OID %s.\n"
+msgid "Did not find any relation with OID %s."
+msgstr "OID %s olan nesne bulunamadı.\n"
+
+#: describe.c:1713 describe.c:1737
+msgid "Start"
+msgstr "Başlat"
+
+#: describe.c:1714 describe.c:1738
+msgid "Minimum"
+msgstr "Asgari (min)"
+
+#: describe.c:1715 describe.c:1739
+msgid "Maximum"
+msgstr "Azami (max)"
+
+#: describe.c:1716 describe.c:1740
+msgid "Increment"
+msgstr "Artım"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4184
+#: describe.c:4350 describe.c:4464 describe.c:4469
+msgid "yes"
+msgstr "evet"
+
+#: describe.c:1718 describe.c:1742 describe.c:1873 describe.c:4184
+#: describe.c:4347 describe.c:4464
+msgid "no"
+msgstr "hayır"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cycles?"
+msgstr "Döngüler?"
+
+#: describe.c:1720 describe.c:1744
+msgid "Cache"
+msgstr "Önbellek"
+
+#: describe.c:1787
+#, c-format
+msgid "Owned by: %s"
+msgstr "Sahibi: %s"
+
+#: describe.c:1791
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Kimlik (identity) sütunu için sıra (seq.) : %s"
+
+#: describe.c:1798
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Sequence \"%s.%s\""
+
+#: describe.c:1934
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Loglanmayan tablo \"%s.%s\" "
+
+#: describe.c:1937
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Tablo \"%s.%s\""
+
+#: describe.c:1941
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "View \"%s.%s\""
+
+#: describe.c:1946
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Loglanmayan maddileştirilmiş görünüm (materialized view) \"%s.%s\""
+
+#: describe.c:1949
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "\"%s.%s\" maddileştirilmiş görünümü (materialized view)"
+
+#: describe.c:1954
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Loglanmayan index \"%s.%s\""
+
+#: describe.c:1957
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "İndex \"%s.%s\""
+
+#: describe.c:1962
+#, fuzzy, c-format
+#| msgid "Unlogged index \"%s.%s\""
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Loglanmayan index \"%s.%s\""
+
+#: describe.c:1965
+#, fuzzy, c-format
+#| msgid "Unlogged index \"%s.%s\""
+msgid "Partitioned index \"%s.%s\""
+msgstr "Loglanmayan index \"%s.%s\""
+
+#: describe.c:1970
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Özel nesne \"%s.%s\""
+
+#: describe.c:1974
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "TOAST tablosu \"%s.%s\""
+
+#: describe.c:1978
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Birleşik veri tipi \"%s.%s\""
+
+#: describe.c:1982
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "\"%s.%s\" uzak (foreign) tablosu "
+
+#: describe.c:1987
+#, fuzzy, c-format
+#| msgid "Unlogged table \"%s.%s\""
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Loglanmayan tablo \"%s.%s\" "
+
+#: describe.c:1990
+#, fuzzy, c-format
+#| msgid "Foreign table \"%s.%s\""
+msgid "Partitioned table \"%s.%s\""
+msgstr "\"%s.%s\" uzak (foreign) tablosu "
+
+#: describe.c:2006 describe.c:4097
+msgid "Collation"
+msgstr "Sıralama (collation)"
+
+#: describe.c:2007 describe.c:4104
+msgid "Nullable"
+msgstr "Boş (null) olabilir"
+
+#: describe.c:2008 describe.c:4105
+msgid "Default"
+msgstr "Varsayılan"
+
+#: describe.c:2011
+msgid "Key?"
+msgstr "Anahtar?"
+
+#: describe.c:2013
+msgid "Definition"
+msgstr "Tanım"
+
+#: describe.c:2015 describe.c:5215 describe.c:5299 describe.c:5370
+#: describe.c:5434
+msgid "FDW options"
+msgstr "FDW Seçenekleri"
+
+#: describe.c:2017
+msgid "Storage"
+msgstr "Saklama"
+
+#: describe.c:2019
+msgid "Stats target"
+msgstr "Stats hedefi"
+
+#: describe.c:2137
+#, c-format
+msgid "Partition of: %s %s"
+msgstr ""
+
+#: describe.c:2145
+msgid "No partition constraint"
+msgstr "Bölümleme kısıtlaması yok"
+
+#: describe.c:2147
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Bölümleme kısıtlaması: %s"
+
+#: describe.c:2170
+#, c-format
+msgid "Partition key: %s"
+msgstr "Bölümleme anahtarı: %s"
+
+#: describe.c:2239
+msgid "primary key, "
+msgstr "birincil anahtar, "
+
+#: describe.c:2241
+msgid "unique, "
+msgstr "tekil, "
+
+#: describe.c:2247
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "\"%s.%s\" tablosu için "
+
+#: describe.c:2251
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", belirli (%s)"
+
+#: describe.c:2254
+msgid ", clustered"
+msgstr ", clustered"
+
+#: describe.c:2257
+msgid ", invalid"
+msgstr ", geçersiz"
+
+#: describe.c:2260
+msgid ", deferrable"
+msgstr ", ertelenebilir"
+
+#: describe.c:2263
+msgid ", initially deferred"
+msgstr ", başlangıçta ertelenmiş"
+
+#: describe.c:2266
+msgid ", replica identity"
+msgstr ", replika kimliği "
+
+#: describe.c:2325
+msgid "Indexes:"
+msgstr "İndeksler:"
+
+#: describe.c:2409
+msgid "Check constraints:"
+msgstr "Check constraints:"
+
+#: describe.c:2477
+msgid "Foreign-key constraints:"
+msgstr "İkincil anahtar sınırlamaları:"
+
+#: describe.c:2540
+msgid "Referenced by:"
+msgstr "Referans veren:"
+
+#: describe.c:2590
+msgid "Policies:"
+msgstr "İlkeler:"
+
+#: describe.c:2593
+msgid "Policies (forced row security enabled):"
+msgstr "İlkeler (zorunlu satır güvenliği etkin):"
+
+#: describe.c:2596
+msgid "Policies (row security enabled): (none)"
+msgstr "İlkeler (satır güvenliği etkin): (hiçbiri)"
+
+#: describe.c:2599
+msgid "Policies (forced row security enabled): (none)"
+msgstr "İlkeler (zorunlu satır güvenliği etkin): (hiçbiri)"
+
+#: describe.c:2602
+msgid "Policies (row security disabled):"
+msgstr "İlkeler (satır güvenliği devre dışı):"
+
+#: describe.c:2665
+msgid "Statistics objects:"
+msgstr "İstatistik nesneleri:"
+
+#: describe.c:2774 describe.c:2878
+msgid "Rules:"
+msgstr "Rulelar:"
+
+#: describe.c:2777
+msgid "Disabled rules:"
+msgstr "Devre dışı bırakılmış rule'lar:"
+
+#: describe.c:2780
+msgid "Rules firing always:"
+msgstr "Her zaman çalıştırılan rule'ler:"
+
+#: describe.c:2783
+msgid "Rules firing on replica only:"
+msgstr "Sadece kopyada çalıştırılan rule'ler:"
+
+#: describe.c:2823
+msgid "Publications:"
+msgstr "Yayınlar (publication):"
+
+#: describe.c:2861
+msgid "View definition:"
+msgstr "View tanımı:"
+
+#: describe.c:3000
+msgid "Triggers:"
+msgstr "Tetikleyiciler(Triggers):"
+
+#: describe.c:3004
+msgid "Disabled user triggers:"
+msgstr "Devre dışı kullanıcı tetikleyicileri:"
+
+#: describe.c:3006
+msgid "Disabled triggers:"
+msgstr "Devre dışı bırakılmış tetikleyiciler:"
+
+#: describe.c:3009
+msgid "Disabled internal triggers:"
+msgstr "Devre dışı dahili tetikleyiciler:"
+
+#: describe.c:3012
+msgid "Triggers firing always:"
+msgstr "Her zaman çalıştırılan tetikleyiciler:"
+
+#: describe.c:3015
+msgid "Triggers firing on replica only:"
+msgstr "Sadece kopyada çalıştırılan tetikleyiciler:"
+
+#: describe.c:3074
+#, c-format
+msgid "Server: %s"
+msgstr "Sunucu: %s"
+
+#: describe.c:3082
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "FDW Seçenekleri: (%s)"
+
+#: describe.c:3101
+msgid "Inherits"
+msgstr "Inherits"
+
+#: describe.c:3160
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Bölümlemelerin (partition) sayısı: %d"
+
+#: describe.c:3169
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "alt tabloların sayısı: %d (Listelemek için \\d+ kullanabilirsiniz.)"
+
+#: describe.c:3171
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Bölümlemelerin (partition) sayısı: %d (Listelemek için \\d+ kullanabilirsiniz.)"
+
+#: describe.c:3179
+msgid "Child tables"
+msgstr "Alt tablolar"
+
+#: describe.c:3179
+msgid "Partitions"
+msgstr "Bölümlemeler (partition)"
+
+#: describe.c:3222
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "%s tipi için tipli tablo"
+
+#: describe.c:3238
+msgid "Replica Identity"
+msgstr "Replika özdeşliği"
+
+#: describe.c:3251
+msgid "Has OIDs: yes"
+msgstr "OID'ler mevcut: evet"
+
+#: describe.c:3260
+#, fuzzy, c-format
+#| msgid "access method %s"
+msgid "Access method: %s"
+msgstr "%s erişim yöntemi"
+
+#: describe.c:3339
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Tablespace: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3351
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", tablespace \"%s\""
+
+#: describe.c:3444
+msgid "List of roles"
+msgstr "Veritabanı rolleri listesi"
+
+#: describe.c:3446
+msgid "Role name"
+msgstr "Rol adı"
+
+#: describe.c:3447
+msgid "Attributes"
+msgstr "Özellikler"
+
+#: describe.c:3448
+msgid "Member of"
+msgstr "Üyesidir"
+
+#: describe.c:3459
+msgid "Superuser"
+msgstr "Superuser"
+
+#: describe.c:3462
+msgid "No inheritance"
+msgstr "Miras yok"
+
+#: describe.c:3465
+msgid "Create role"
+msgstr "Rol oluştur"
+
+#: describe.c:3468
+msgid "Create DB"
+msgstr "Veritabanı Oluştur"
+
+#: describe.c:3471
+msgid "Cannot login"
+msgstr "Giriş yapılamıyor"
+
+#: describe.c:3475
+msgid "Replication"
+msgstr "Replikasyon"
+
+#: describe.c:3479
+msgid "Bypass RLS"
+msgstr "RLS'yi atlat"
+
+#: describe.c:3488
+msgid "No connections"
+msgstr "Bağlantı yok"
+
+#: describe.c:3490
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d bağlantı"
+msgstr[1] "1 bağlantı"
+
+#: describe.c:3500
+msgid "Password valid until "
+msgstr "Parola geçerlilik tarihi"
+
+#: describe.c:3550
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support per-database role settings.\n"
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "Bu sunucu (%s sürümü) veritabanlarına özgü rol ayarlarını desteklememektedir.\n"
+
+#: describe.c:3563
+msgid "Role"
+msgstr "Rol"
+
+#: describe.c:3564
+msgid "Database"
+msgstr "Veritabanı"
+
+#: describe.c:3565
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: describe.c:3586
+#, fuzzy, c-format
+#| msgid "Did not find any settings for role \"%s\" and database \"%s\".\n"
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "\"%s\" rolü ve \"%s\" veritabanı için ayar bulunamadı.\n"
+
+#: describe.c:3589
+#, fuzzy, c-format
+#| msgid "Did not find any settings for role \"%s\".\n"
+msgid "Did not find any settings for role \"%s\"."
+msgstr "\"%s\" rolü için ayar bulunamadı.\n"
+
+#: describe.c:3592
+#, fuzzy, c-format
+#| msgid "Did not find any settings.\n"
+msgid "Did not find any settings."
+msgstr "Hiç bir ayar bulunamadı.\n"
+
+#: describe.c:3597
+msgid "List of settings"
+msgstr "Seçeneklerin lsitesi"
+
+#: describe.c:3667
+msgid "index"
+msgstr "indeks"
+
+#: describe.c:3669
+msgid "special"
+msgstr "özel"
+
+#: describe.c:3672 describe.c:3857
+#, fuzzy
+#| msgid "partition_name"
+msgid "partitioned index"
+msgstr "bölümleme(partition)_adı"
+
+#: describe.c:3770
+msgid "List of relations"
+msgstr "Nesnelerin listesi"
+
+#: describe.c:3818
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support collations.\n"
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "Bu sunucu (%s sürümü) karşılaştırmaları (collations) desteklememektedir.\n"
+
+#: describe.c:3829
+#, fuzzy
+#| msgid "\"%s\" is not partitioned"
+msgid "List of partitioned indexes"
+msgstr "\"%s\" bölümlendirilmemiş"
+
+#: describe.c:3831
+#, fuzzy
+#| msgid "\"%s\" is a partitioned table"
+msgid "List of partitioned tables"
+msgstr "\"%s\" bölümlenmiş bir tablodur"
+
+#: describe.c:3835
+#, fuzzy
+#| msgid "List of relations"
+msgid "List of partitioned relations"
+msgstr "Nesnelerin listesi"
+
+#: describe.c:3866
+#, fuzzy
+#| msgid "Token name"
+msgid "Parent name"
+msgstr "Token adı"
+
+#: describe.c:3879
+#, fuzzy
+#| msgid "Partitions"
+msgid "Leaf partition size"
+msgstr "Bölümlemeler (partition)"
+
+#: describe.c:3882 describe.c:3888
+msgid "Total size"
+msgstr ""
+
+#: describe.c:4020
+msgid "Trusted"
+msgstr "Güvenilir"
+
+#: describe.c:4028
+msgid "Internal language"
+msgstr "Dahili dil"
+
+#: describe.c:4029
+msgid "Call handler"
+msgstr "Çağrı işleyici"
+
+#: describe.c:4030 describe.c:5202
+msgid "Validator"
+msgstr "Onaylayan"
+
+#: describe.c:4033
+msgid "Inline handler"
+msgstr "Satır içi işleyici"
+
+#: describe.c:4061
+msgid "List of languages"
+msgstr "Dil listesi"
+
+#: describe.c:4106
+msgid "Check"
+msgstr "Check"
+
+#: describe.c:4148
+msgid "List of domains"
+msgstr "Domainlerin listesi"
+
+#: describe.c:4182
+msgid "Source"
+msgstr "Kaynak"
+
+#: describe.c:4183
+msgid "Destination"
+msgstr "Hedef"
+
+#: describe.c:4185
+msgid "Default?"
+msgstr "Varsayılan?"
+
+#: describe.c:4222
+msgid "List of conversions"
+msgstr "Dönüşümlerin listesi"
+
+#: describe.c:4261
+msgid "Event"
+msgstr "Olay"
+
+#: describe.c:4263
+msgid "enabled"
+msgstr "etkin"
+
+#: describe.c:4264
+msgid "replica"
+msgstr "replika"
+
+#: describe.c:4265
+msgid "always"
+msgstr "daima"
+
+#: describe.c:4266
+msgid "disabled"
+msgstr "devre dışı bırakılmış"
+
+#: describe.c:4267 describe.c:5901
+msgid "Enabled"
+msgstr "Etkin"
+
+#: describe.c:4269
+msgid "Tags"
+msgstr "Etiketler (tag)"
+
+#: describe.c:4288
+msgid "List of event triggers"
+msgstr "Olay tetikleyicilerin listesi"
+
+#: describe.c:4317
+msgid "Source type"
+msgstr "Kaynak tipi"
+
+#: describe.c:4318
+msgid "Target type"
+msgstr "Hedef tipi"
+
+#: describe.c:4349
+msgid "in assignment"
+msgstr "in assignment"
+
+#: describe.c:4351
+msgid "Implicit?"
+msgstr "Örtülü mü?"
+
+#: describe.c:4406
+msgid "List of casts"
+msgstr "Castlerin listesi"
+
+#: describe.c:4434
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support collations.\n"
+msgid "The server (version %s) does not support collations."
+msgstr "Bu sunucu (%s sürümü) karşılaştırmaları (collations) desteklememektedir.\n"
+
+#: describe.c:4455 describe.c:4459
+msgid "Provider"
+msgstr "Sağlayıcı"
+
+#: describe.c:4465 describe.c:4470
+msgid "Deterministic?"
+msgstr ""
+
+#: describe.c:4505
+msgid "List of collations"
+msgstr "Karşılaştırma (collations) listesi"
+
+#: describe.c:4564
+msgid "List of schemas"
+msgstr "Şemaların listesi"
+
+#: describe.c:4589 describe.c:4836 describe.c:4907 describe.c:4978
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support full text search.\n"
+msgid "The server (version %s) does not support full text search."
+msgstr "Bu sunucu (%s sürümü) tam metin aramayı desteklememektedir.\n"
+
+#: describe.c:4624
+msgid "List of text search parsers"
+msgstr "Metin arama ayrıştıcılarının listesi"
+
+#: describe.c:4669
+#, fuzzy, c-format
+#| msgid "Did not find any text search parser named \"%s\".\n"
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "\"%s\" adında metin arama ayrıştırıcısı bulunamadı.\n"
+
+#: describe.c:4672
+#, fuzzy, c-format
+#| msgid "Did not find any text search parsers.\n"
+msgid "Did not find any text search parsers."
+msgstr "Metin arama ayrıştırıcısı bulunamadı.\n"
+
+#: describe.c:4747
+msgid "Start parse"
+msgstr "Ayrıştırmayı başlat"
+
+#: describe.c:4748
+msgid "Method"
+msgstr "Yöntem"
+
+#: describe.c:4752
+msgid "Get next token"
+msgstr "Sıradaki tokeni al"
+
+#: describe.c:4754
+msgid "End parse"
+msgstr "Ayrıştırmayı bitir"
+
+#: describe.c:4756
+msgid "Get headline"
+msgstr "Başlığı al"
+
+#: describe.c:4758
+msgid "Get token types"
+msgstr "Token tiplerini al"
+
+#: describe.c:4769
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Metin arama ayrıştırıcısı \"%s.%s\""
+
+#: describe.c:4772
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "\"%s\" metin arama ayrıştırıcısı"
+
+#: describe.c:4791
+msgid "Token name"
+msgstr "Token adı"
+
+#: describe.c:4802
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "\"%s.%s\" ayrıştırıcısı için token tipleri"
+
+#: describe.c:4805
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "\"%s\" ayrıştırıcısı için token tipleri"
+
+#: describe.c:4859
+msgid "Template"
+msgstr "Şablon"
+
+#: describe.c:4860
+msgid "Init options"
+msgstr "İnit seçenekleri"
+
+#: describe.c:4882
+msgid "List of text search dictionaries"
+msgstr "Metin arama sözlüklerinin listesi"
+
+#: describe.c:4925
+msgid "Init"
+msgstr "Init"
+
+#: describe.c:4926
+msgid "Lexize"
+msgstr "Lexize"
+
+#: describe.c:4953
+msgid "List of text search templates"
+msgstr "Metin arama şablonlarının listesi"
+
+#: describe.c:5013
+msgid "List of text search configurations"
+msgstr "Metin arama yapılandırmalarının listesi"
+
+#: describe.c:5059
+#, fuzzy, c-format
+#| msgid "Did not find any text search configuration named \"%s\".\n"
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "\"%s\" adında metin arama yapılandırması bulunamadı.\n"
+
+#: describe.c:5062
+#, fuzzy, c-format
+#| msgid "Did not find any text search configurations.\n"
+msgid "Did not find any text search configurations."
+msgstr "Metin arama yapılandırması bulunamadı.\n"
+
+#: describe.c:5128
+msgid "Token"
+msgstr "Token"
+
+#: describe.c:5129
+msgid "Dictionaries"
+msgstr "Sözlükler"
+
+#: describe.c:5140
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Metin arama yapılandırması \"%s.%s\""
+
+#: describe.c:5143
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Metin arama yapılandırması \"%s\""
+
+#: describe.c:5147
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"Ayrıştırıcı \"%s.%s\""
+
+#: describe.c:5150
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"Ayrıştırıcı: \"%s\""
+
+#: describe.c:5184
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support foreign-data wrappers.\n"
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "Sunucu (%s sürümü) foreign-data wrapperlarını desteklememektedir.\n"
+
+#: describe.c:5242
+msgid "List of foreign-data wrappers"
+msgstr "Foreign-data wrapperlarının listesi"
+
+#: describe.c:5267
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support foreign servers.\n"
+msgid "The server (version %s) does not support foreign servers."
+msgstr "Bu sunucu (%s sürümü) uzak (foreign) sunucuları desteklemiyor.\n"
+
+#: describe.c:5280
+msgid "Foreign-data wrapper"
+msgstr "Foreign-data wrapper"
+
+#: describe.c:5298 describe.c:5503
+msgid "Version"
+msgstr "Sürüm"
+
+#: describe.c:5324
+msgid "List of foreign servers"
+msgstr "Foreign sunucuların listesi"
+
+#: describe.c:5349
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support user mappings.\n"
+msgid "The server (version %s) does not support user mappings."
+msgstr "Sunucu (%s sürümü) kullanıcı haritalamasını desteklememektedir.\n"
+
+#: describe.c:5359 describe.c:5423
+msgid "Server"
+msgstr "Sunucu"
+
+#: describe.c:5360
+msgid "User name"
+msgstr "Kullanıcı adı"
+
+#: describe.c:5385
+msgid "List of user mappings"
+msgstr "Kullanıcı eşlemelerinin listesi"
+
+#: describe.c:5410
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support foreign tables.\n"
+msgid "The server (version %s) does not support foreign tables."
+msgstr "Bu sunucu (%s sürümü) uzak (foreign) tabloları desteklemiyor.\n"
+
+#: describe.c:5463
+msgid "List of foreign tables"
+msgstr "Uzak (foreign) tabloların listesi"
+
+#: describe.c:5488 describe.c:5545
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support extensions.\n"
+msgid "The server (version %s) does not support extensions."
+msgstr "Bu sunucu (%s sürümü) uzantıları (extension) desteklememektedir.\n"
+
+#: describe.c:5520
+msgid "List of installed extensions"
+msgstr "Kurulu uzantıların (extension) listesi"
+
+#: describe.c:5573
+#, fuzzy, c-format
+#| msgid "Did not find any extension named \"%s\".\n"
+msgid "Did not find any extension named \"%s\"."
+msgstr "\"%s\" adında uzantı (extension) bulunamadı.\n"
+
+#: describe.c:5576
+#, fuzzy, c-format
+#| msgid "Did not find any extensions.\n"
+msgid "Did not find any extensions."
+msgstr "Hiç bir uzantı bulunamadı.\n"
+
+#: describe.c:5620
+msgid "Object description"
+msgstr "Nesne açıklaması"
+
+#: describe.c:5630
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "\"%s\" uzantısındaki nesneler"
+
+#: describe.c:5659 describe.c:5730
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support publications.\n"
+msgid "The server (version %s) does not support publications."
+msgstr "Bu sunucu (%s sürümü) yayınları (publication) desteklememektedir.\n"
+
+#: describe.c:5676 describe.c:5802
+msgid "All tables"
+msgstr "Bütün tablolar"
+
+#: describe.c:5677 describe.c:5803
+msgid "Inserts"
+msgstr "Eklemeler (insert)"
+
+#: describe.c:5678 describe.c:5804
+msgid "Updates"
+msgstr "Güncelleştirmeler (update)"
+
+#: describe.c:5679 describe.c:5805
+msgid "Deletes"
+msgstr "Silmeler (delete)"
+
+#: describe.c:5683 describe.c:5807
+msgid "Truncates"
+msgstr "Budamalar (truncate)"
+
+#: describe.c:5700
+msgid "List of publications"
+msgstr "Yayınların (publication) listesi"
+
+#: describe.c:5768
+#, fuzzy, c-format
+#| msgid "Did not find any publication named \"%s\".\n"
+msgid "Did not find any publication named \"%s\"."
+msgstr "\"%s\" adında yayın bulunamadı.\n"
+
+#: describe.c:5771
+#, fuzzy, c-format
+#| msgid "Did not find any publications.\n"
+msgid "Did not find any publications."
+msgstr "Hiç yayın bulunamadı.\n"
+
+#: describe.c:5798
+#, c-format
+msgid "Publication %s"
+msgstr "%s yayını (publication)"
+
+#: describe.c:5842
+msgid "Tables:"
+msgstr "Tablolar:"
+
+#: describe.c:5886
+#, fuzzy, c-format
+#| msgid "The server (version %s) does not support subscriptions.\n"
+msgid "The server (version %s) does not support subscriptions."
+msgstr "Sunucu (%s sürümü) abonelikleri (subscription) desteklememektedir.\n"
+
+#: describe.c:5902
+msgid "Publication"
+msgstr "Yayın (publication)"
+
+#: describe.c:5909
+msgid "Synchronous commit"
+msgstr "Eşzamanlı commit"
+
+#: describe.c:5910
+msgid "Conninfo"
+msgstr "Conninfo"
+
+#: describe.c:5932
+msgid "List of subscriptions"
+msgstr "Aboneliklerin listesi"
+
+#: help.c:74
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr ""
+"psql PostgreSQL'in etkilişimli arayüzüdür.\n"
+"\n"
+
+#: help.c:75 help.c:349 help.c:425 help.c:468
+#, c-format
+msgid "Usage:\n"
+msgstr "Kullanımı:\n"
+
+#: help.c:76
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr ""
+" psql [SEÇENEK]... [VERİTABANI ADI [KULLANICI ADI]]\n"
+"\n"
+
+#: help.c:78
+#, c-format
+msgid "General options:\n"
+msgstr "Genel seçenekler:\n"
+
+#: help.c:83
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=KOMUT tek bir komut çalıştır (SQL ya da dahili) ve çık\n"
+
+#: help.c:84
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr " -d, --dbname=DBNAME bağlanılacak veritabanının adı (öntanımlı: \"%s\")\n"
+
+#: help.c:85
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=DOSYA ADI dosyadan komutları çalıştır ve çık\n"
+
+#: help.c:86
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list veritabanlarını listele ve çık\n"
+
+#: help.c:87
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=ADI=DEĞER\n"
+" ADI kısmında belirtilen psql değişkeninin değerini DEĞER ile belirtilen değer olarak ata\n"
+" (örnek, -v ON_ERROR_STOP=1)\n"
+"\n"
+
+#: help.c:90
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version sürüm bilgisini göster, sonra çık\n"
+
+#: help.c:91
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X , --no-psqlrc başlangıç dosyasını (~/.psqlrc) okuma\n"
+
+#: help.c:92
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (\"one\"), --single-transaction\n"
+" komut dosyasını tek bir transaction olarak çalıştır (interaktif değilse)\n"
+
+#: help.c:94
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] bu yardımı göster, sonra çık\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands \"\\\"komutlarını listele, sonra çık\n"
+
+#: help.c:96
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables özel değişkenleri listele, sonra çık\n"
+
+#: help.c:98
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"Giriş ve çıkış tercihleri:\n"
+
+#: help.c:99
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all betik dosyasının içeriğini yansıt\n"
+
+#: help.c:100
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -e, --echo-errors başarısız komutları yansıt\n"
+
+#: help.c:101
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries sunucuya gönderilen komutları yansıt\n"
+
+#: help.c:102
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden dahili komutların ürettiği sorguları göster\n"
+
+#: help.c:103
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=DOSYA ADI oturum kaydını dosyaya kaydet\n"
+
+#: help.c:104
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline gelişmiş komut satırı düzenleyicisini devre dışı bırak (readline)\n"
+
+#: help.c:105
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=DOSYA ADI sorgu sonuçlarını dosyaya aktar (ya da |pipe)\n"
+
+#: help.c:106
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet sessiz biçim (mesajlar kapalı, sadece sorgu sonuçları açık)\n"
+
+#: help.c:107
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step tek adım biçimi (her sorguyu onaylama)\n"
+
+#: help.c:108
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line tek satır modu (satır sonu SQL komutunu sonlandırır)\n"
+
+#: help.c:110
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"Çıktı biçimi seçenekleri:\n"
+
+#: help.c:111
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align dizilmemiş tablo çıktı modu\n"
+
+#: help.c:112
+#, fuzzy, c-format
+#| msgid " \\a toggle between unaligned and aligned output mode\n"
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " \\a düzenli ve düzensiz çıktı modu arasında geçiş yap\n"
+
+#: help.c:113
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=DİZGİ\n"
+" hizalanmamış çıktı için alan ayırıcısı (varsayılan: \"%s\")\n"
+
+#: help.c:116
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html HTML tablosu çıktı modu\n"
+
+#: help.c:117
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr " -P, --pset=VAR[=ARG] VAR yazma ayarınına ARG değerini ata (\\pset komutuna bak)\n"
+
+#: help.c:118
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=DİZGİ\n"
+" hizalanmamış çıktı için kayıt ayırıcısı (varsayılan: yeni satır)\n"
+
+#: help.c:120
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only sadece satırları yaz\n"
+
+#: help.c:121
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr " -T, --table-attr=TEXT HTML tablo tag parametrelerini ayarla (genişlik, kenarlık)\n"
+
+#: help.c:122
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded gelişmiş tablo çıktısını atkinleştir\n"
+
+#: help.c:123
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" hizalanmamış çıktı için alan ayırıcısını sıfır bayt'a ayarla\n"
+
+#: help.c:125
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" hizalanmamış çıktı için kayıt ayırıcısını sıfır bayt'a ayarla\n"
+
+#: help.c:128
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"Bağlantı seçenekleri:\n"
+
+#: help.c:131
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr " -h, --host= HOST ADI veritabanı sunucu adresi ya da soket dizini (varsayılan: \"%s\")\n"
+
+#: help.c:132
+msgid "local socket"
+msgstr "yerel soket"
+
+#: help.c:135
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORT veritabanı sunucusu port numarası (varsayılan: \"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=KULLANICI ADI veritabanı kullanıcı adı (varsayılan: \"%s\")\n"
+
+#: help.c:142
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -W, --no-password bağlanmak için kesinlikle parola sorma\n"
+
+#: help.c:143
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr " -W şifre sor (otomatik olarak her zaman açık)\n"
+
+#: help.c:145
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"Daha fazla bilgi için yapsql içinde: \"\\?\" (dahili komutlar için) ya \"\\help\"\n"
+"(SQL komutlar için) yazın, ya da PostgreSQL belgelerinin psql bölümüne \n"
+"bakın.\n"
+"\n"
+
+#: help.c:148
+#, c-format
+msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+msgstr "Hataları <pgsql-bugs@lists.postgresql.org> adresine bildirebilirsiniz.\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "Genel\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright PostgreSQL kullanım ve dağıtım şartlarını göster\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [COLUMNS] sorguyu çalıştır ve sonuçları çapraz tablo içinde göster\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose en son hata mesajını azami açıklamalı olarak göster\n"
+
+#: help.c:178
+#, c-format
+msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n"
+msgstr " \\g [DOSYA] or ; sorguyu çalıştır (ve sonucu dosyaya ya da |pipe'a gönder)\n"
+
+#: help.c:179
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc sorguyu çalıştırmadan sonuçlarını tarif et\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr ""
+
+#: help.c:181
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] sorguyu çalıştır ve sonuçları psql değişkenlerinde sakla\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gx [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [DOSYA] \\g gibi fakat genişletilmiş çıktı modu zorunlu\n"
+
+#: help.c:183
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q psql'den çık\n"
+
+#: help.c:184
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SNY] sorguyu her SNY saniyede bir çalıştır\n"
+
+#: help.c:187
+#, c-format
+msgid "Help\n"
+msgstr "Yardım\n"
+
+#: help.c:189
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [komutlar] \"\\\" komutları için yardım gösterir\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr ""
+" \\? options psql komut satırı seçenekleri için yardım göster\n"
+"\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables özel değişkenler hakkında yardım göster\n"
+
+#: help.c:192
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr " \\h [NAME] SQL komutları için sözdizimi yardımı, tüm komutlar için * ekleyin\n"
+
+#: help.c:195
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Sorgu Tamponu (buffer)\n"
+
+#: help.c:196
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr " \\e [FILE] [LINE] sorgu tamponunu (ya da dosyasını) harici bir metin düzenleyici ile düzenle\n"
+
+#: help.c:197
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [FUNCNAME [LINE]] fonksiyon tanımını harici bir metin düzenleyici ile düzenle\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [VIEWNAME [LINE]] görünüm (view) tanımını harici bir metin düzenleyici ile düzenle\n"
+
+#: help.c:199
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p sorgu tamponunun içeriğini göster\n"
+
+#: help.c:200
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r sorgu tamponunu sıfırla (temizle)\n"
+
+#: help.c:202
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [DOSYA] geçmişi göster ya da dosyaya kaydet\n"
+
+#: help.c:204
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w DOSYA sorgu tamponunu dosyaya kaydet\n"
+
+#: help.c:207
+#, c-format
+msgid "Input/Output\n"
+msgstr "Giriş/Çıkış\n"
+
+#: help.c:208
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... istemci sisteminden veri akımı ile SQL COPY komutunu çalıştır\n"
+
+#: help.c:209
+#, c-format
+msgid " \\echo [STRING] write string to standard output\n"
+msgstr " \\echo [METIN] standart çıktıya bir satır gönder\n"
+
+#: help.c:210
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i DOSYA dosyadaki komutları çalıştıre\n"
+
+#: help.c:211
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr " \\ir DOSYA \\i gibi, fakat geçerli betiğin bulunduğu yere göre\n"
+
+#: help.c:212
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [DOSYA] tüm sorgu sonuçlarını dosyaya ya da |pipe'e gönder\n"
+
+#: help.c:213
+#, c-format
+msgid " \\qecho [STRING] write string to query output stream (see \\o)\n"
+msgstr " \\qecho [STRING] sorgu çıktı akımına dizgi yaz (\\o seçeneğine bakınız)\n"
+
+#: help.c:216
+#, c-format
+msgid "Conditional\n"
+msgstr "Şartlı\n"
+
+#: help.c:217
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR şartlı bloğa başla\n"
+
+#: help.c:218
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR geçerli şartlı blok içinde alternatif\n"
+
+#: help.c:219
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else geçerli şartlı blok içinde son alternatif\n"
+
+#: help.c:220
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif şartlı bloğu sonlandır\n"
+
+#: help.c:223
+#, c-format
+msgid "Informational\n"
+msgstr "Bilgi edinme\n"
+
+#: help.c:224
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (seçenekler: S = sistem nesnelerini göster, + = ek ayrıntılar)\n"
+
+#: help.c:225
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] tablo, views, ve sequenceleri listele\n"
+
+#: help.c:226
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+} AD tablo, indeks, sequence, ya da view tanımlarını göster\n"
+
+#: help.c:227
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [PATTERN] aggregateleri listele\n"
+
+#: help.c:228
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [PATTERN] erişim yöntemlerini listele\n"
+
+#: help.c:229
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [PATTERN] tablespaceleri listele\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [PATTERN] dönüşümleri listele\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [PATTERN] castleri listele\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [PATTERN] başka yerde gösterilmeyen nesne açıklamalarını göster\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [PATTERN] domainleri listele\n"
+
+#: help.c:234
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [PATTERN] öntanımlı izinleri listele\n"
+
+#: help.c:235
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [PATTERN] uzak (foreign) tabloları listele\n"
+
+#: help.c:236
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [PATTERN] foreign tabloları listele\n"
+
+#: help.c:237
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [PATTERN] foreign sunucuları listele\n"
+
+#: help.c:238
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [PATTERN] kullanıcı haritalamasını listele\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [PATTERN] foreign-data wrapperlarını listele\n"
+
+#: help.c:240
+#, fuzzy, c-format
+#| msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n"
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[antw][S+] [PATRN] [sadece agg/normal/trigger/window] fonksiyonlarını listele\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [PATTERN] metin arama yapılandırmalarını listele\n"
+
+#: help.c:242
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [PATTERN] metin arama sözlüklerini listele\n"
+
+#: help.c:243
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [PATTERN] metin arama ayrıştırıcılarını listele\n"
+
+#: help.c:244
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [PATTERN] metin arama şablonlarını listele\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [PATTERN] rolleri listele\n"
+
+#: help.c:246
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [PATTERN] indexleri göster\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl large objectleri göster; \\lo_list ile aynıdır\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [PATTERN] yordamsal dilleri listele\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [PATTERN] maddileştirilmiş görünümleri (materialized view) listele\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [PATTERN] şemaları listele\n"
+
+#: help.c:251
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [PATTERN] operatörleri listele\n"
+
+#: help.c:252
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [PATTERN] collationları listele\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [PATTERN] tablo, view, ve sequence erişim izinlerini listele\n"
+
+#: help.c:254
+#, fuzzy, c-format
+#| msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgid " \\dP[tin+] [PATTERN] list [only table/index] partitioned relations\n"
+msgstr " \\dRp[+] [PATTERN] replikasyon yayınlarını listele\n"
+
+#: help.c:255
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [PATRN1 [PATRN2]] veritabanı başına rol ayarlarını listele\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [PATTERN] replikasyon yayınlarını listele\n"
+
+#: help.c:257
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [PATTERN] replikasyon aboneliklerini listele\n"
+
+#: help.c:258
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [PATTERN] sequenceları listele\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [PATTERN] tabloları listele\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [PATTERN] veri tiplerini listele\n"
+
+#: help.c:261
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [PATTERN] rolleri listele\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [PATTERN] viewları listele\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [PATTERN] uzantıları listele\n"
+
+#: help.c:264
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [PATTERN] olay tetikleyicilerini listele\n"
+
+#: help.c:265
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [PATTERN] veritabanlarını listele\n"
+
+#: help.c:266
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNCNAME fonksiyonun tanımını göster\n"
+
+#: help.c:267
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] VIEWNAME görünümün (view) tanımını göster\n"
+
+#: help.c:268
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [PATTERN] \\dp ile aynı\n"
+
+#: help.c:271
+#, c-format
+msgid "Formatting\n"
+msgstr "Biçimlendirme:\n"
+
+#: help.c:272
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a düzenli ve düzensiz çıktı modu arasında geçiş yap\n"
+
+#: help.c:273
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [DİZİ] tablo başlığını ayarla, ya da boş bırakılırsa kaldır\n"
+
+#: help.c:274
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr " \\f [DİZİ] düzensiz sorgu çıktısı için alan ayracını göster ya da tanımla\n"
+
+#: help.c:275
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H HTML çıktı modunu değiştir (şu anda %s)\n"
+
+#: help.c:277
+#, fuzzy, c-format
+#| msgid ""
+#| " \\pset [NAME [VALUE]] set table output option\n"
+#| " (NAME := {border|columns|expanded|fieldsep|fieldsep_zero|\n"
+#| " footer|format|linestyle|null|numericlocale|pager|\n"
+#| " pager_min_lines|recordsep|recordsep_zero|tableattr|title|\n"
+#| " tuples_only|unicode_border_linestyle|\n"
+#| " unicode_column_linestyle|unicode_header_linestyle})\n"
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [NAME [VALUE]] tablo çıktı seçeneğini ayarla\n"
+" (NAME := {border|columns|expanded|fieldsep|fieldsep_zero|\n"
+" footer|format|linestyle|null|numericlocale|pager|\n"
+" pager_min_lines|recordsep|recordsep_zero|tableattr|title|\n"
+" tuples_only|unicode_border_linestyle|\n"
+" unicode_column_linestyle|unicode_header_linestyle})\n"
+
+#: help.c:284
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] sadece satırları göster (şu an %s)\n"
+
+#: help.c:286
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [DİZGİ] HTML <table> parametrelerini tanımla, boş ise tüm parametrelerini kaldır\n"
+
+#: help.c:287
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] geniş çıktı ayarla (şu an %s)\n"
+
+#: help.c:291
+#, c-format
+msgid "Connection\n"
+msgstr "Bağlantı\n"
+
+#: help.c:293
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[VTADI|- KULLANICIADI|- KARŞISUNUCU|- PORT|-] | conninfo}\n"
+" yeni veritabanına bağlan (geçerli veritabanı \"%s\")\n"
+
+#: help.c:297
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[VTADI|- KULLANICIADI|- KARŞISUNUCU|- PORT|-] | conninfo}\n"
+" yeni veritabanına bağlan (geçerli bağlantı yok)\n"
+
+#: help.c:299
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo geçerli bağlantı ile ilgili bilgi göster\n"
+
+#: help.c:300
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [KODLAMA] istemci dil kodlamasını göster\n"
+
+#: help.c:301
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [KULLANICI ADI] kullanıcının parolasını güvenli şekilde değiştir\n"
+
+#: help.c:304
+#, c-format
+msgid "Operating System\n"
+msgstr "işletim Sistemi\n"
+
+#: help.c:305
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [DIR] geçerli çalışma dizinini değiştir\n"
+
+#: help.c:306
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NAME [VALUE] ortam değişkenini ayarla ya da ayarları sıfırla\n"
+
+#: help.c:307
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] komutların çalışma zamanlamasının gösterilmesini değiştir (şu anda %s)\n"
+
+#: help.c:309
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr " \\! [KOMUT] komutu kabukta çalıştır ya da etkileşimli kabuğu başlat\n"
+
+#: help.c:312
+#, c-format
+msgid "Variables\n"
+msgstr "Değişkenler\n"
+
+#: help.c:313
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [METİN] AD kullanıcıdan dahili değişkeni değiştirmesini iste\n"
+
+#: help.c:314
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr " \\set [AD [DEĞER]] dahili değişkene değer ata, DEĞER boş ise tüm değişkenlerin listesini göster\n"
+
+#: help.c:315
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset AD dahili değişkenleri sıfırla(sil)\n"
+
+#: help.c:318
+#, c-format
+msgid "Large Objects\n"
+msgstr "Large Objectler\n"
+
+#: help.c:319
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID DOSYA\n"
+" \\lo_import DOSYA [YORUM]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operasyonları\n"
+
+#: help.c:346
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"Özel değişkenlerin listesi\n"
+"\n"
+
+#: help.c:348
+#, c-format
+msgid "psql variables:\n"
+msgstr "psql değişkenleri:\n"
+
+#: help.c:350
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NAME=VALUE\n"
+" veya psql içinde \\set NAME VALUE\n"
+"\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" ayarlanırsa, başarılı SQL komutları otomatik olarak \"commit\" edilir\n"
+
+#: help.c:354
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" SQL anahtar kelimeleri tamamlanırken kullanılacak büyük/küçük harf seçeneğini belirler\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:357
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" geçerli durumda bağlanılan veritabanının adı\n"
+
+#: help.c:359
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" hangi girdinin standart çıktıya yazılacağını kontrol eder\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:362
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" ayarlanırsa ters-taksimli komutlar tarafından çalıştırılan dahili sorguları gösterir ;\n"
+" \"noexec\" olarak ayarlanırsa, çalıştırmadan sadece gösterir \n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" geçerli istemci karakter kümesi kodlaması\n"
+
+#: help.c:367
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" ERROR\n"
+" son sorgu hatalıysa true, değilse false\n"
+
+#: help.c:369
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" bir defada alınacak ve gösterilecek sonuç satırı sayısı ( 0=sınırsız)\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+
+#: help.c:373
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL \n"
+" komut geçmişini kontrol eder [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE \n"
+" komut geçmişini saklamak için kullanılacak dosya adı\n"
+
+#: help.c:377
+#, fuzzy, c-format
+#| msgid ""
+#| " HISTSIZE\n"
+#| " max number of commands to store in the command history\n"
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" komut geçmişinde saklanacak komut sayısı üst sınırı\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" geçerli durumda bağlanılan veritabanı sunucu makinesi\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" interaktif bir oturumu sonlandırmak için gereken EOF (dosya sonu) sayısı\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" etkilenen son OID'nin değeri\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" son hatanın mesajı ve SQLSTATE değeri, veya boş dizgi ve \"00000\" eğer hiçbiri yoksa\n"
+
+#: help.c:388
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" ayarlanırsa, bir hata bir işlemi (transaction) durdurmaz (örtük kayıt noktaları (savepoint) kullanır)\n"
+
+#: help.c:390
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" hata sonrası yığın çalıştırmayı durdurur\n"
+
+#: help.c:392
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" geçerli bağlantının sunucu port'u\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" standart psql komut istemi\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" bir komut önceki satırdan beri devam ediyorsa kullanılan komut istemini belirtir\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" COPY ... FROM STDIN sırasında kullanılan komut istemini belirtir\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" sessizce çalış (-q seçeneğiyle aynı)\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" son sorgu tarafından döndürülen veya etkilenen satır sayısı, veya 0\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" sunucunun sürümü (kısa metin veya sayısal formatta)\n"
+
+#: help.c:407
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" mesaj bağlam (context) alanlarının gösterimini kontrol eder [never, errors, always]\n"
+
+#: help.c:409
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" satır sonu SQL komut modunu sonlandırır (-S seçeneğiyle aynı)\n"
+
+#: help.c:411
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" single-step modu (-s seçeneğiyle aynı)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" son sorgunun SQLSTATE değeri, veya eğer hata yoksa \"00000\"\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" mevcut durumda bağlı veritabanı kullanıcısı\n"
+
+#: help.c:417
+#, fuzzy, c-format
+#| msgid ""
+#| " VERBOSITY\n"
+#| " controls verbosity of error reports [default, verbose, terse]\n"
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" hata raporlarının ayrıntı seviyesini kontrol eder [default, verbose, terse]\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql'in sürümü (detaylı metin, kısa metin veya sayısal formatta)\n"
+
+#: help.c:424
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"Görüntüleme ayarları:\n"
+
+#: help.c:426
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NAME[=VALUE]\n"
+" veya psql içinde \\pset NAME [VALUE]\n"
+"\n"
+
+#: help.c:428
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" kenar biçimi (number)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" \"wrapped\" biçimi için hedef genişlik\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr " expanded (veya x) genişletilmiş çıktı [on, off, auto]\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" hizalanmamış çıktı için alan ayrıcısı (varsayılan \"%s\")\n"
+
+#: help.c:437
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" hizalanmamış çıktı için alan ayırıcısını sıfır bayt'a ayarla\n"
+
+#: help.c:439
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" tablo alt bilgi alanının etkinleştirilme veya devre dışı bırakılması [on, off]\n"
+
+#: help.c:441
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" çıktı biçimini ayarla [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" kenar çizgisi biçimini ayarla [ascii, old-ascii, unicode]\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" null değer yerine yazılacak dizgeyi ayarla\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" basamak gruplarını ayırmak için yerel-özel bir karakterin gösterilmesini etkinleştir\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" harici sayfalamanın ne zaman kullanılacağını kontrol eder [yes, no, always]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" hizalanmamış çıktı için kayıt (satır) ayırıcısı\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" hizalanmamış çıktı için kayıt ayırıcısını sıfır bayt'a ayarla\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+
+#: help.c:458
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" sonradan basılan tablolar için tablo başlığını ayarla\n"
+
+#: help.c:460
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" ayarlanırsa, sadece gerçek tablo verisi gösterilir\n"
+
+#: help.c:462
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" Unicode çizgi çizme biçimini ayarlar [single, double]\n"
+
+#: help.c:467
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"Ortam değişkenleri:\n"
+
+#: help.c:471
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" veya psql içinde \\setenv NAME [VALUE]\n"
+"\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" veya psql içinde \\setenv NAME [VALUE]\n"
+"\n"
+
+#: help.c:476
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" wrapped biçim için sütun sayısı\n"
+
+#: help.c:478
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" application_name bağlantı parametresinin aynısı\n"
+
+#: help.c:480
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" dbname bağlantı parametresinin aynı\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" host bağlantı parametresinin aynı\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" bağlantı parolası (tavsiye edilmez)\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" parola dosya adı\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" port bağlantı parametresiyle aynı\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" kullanıcı bağlantı parametresiyle aynı\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" \\e, \\ef, ve \\ev komutları tarafından kullanılan editör\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" editörü çağırırken bir satır numarasının nasıl belirtileceği\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" komut geçmişi dosyası için alternatif konum\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" harici sayfalama programının ismi\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" kulanıcının .psqlrc dosyası için alternatif konum\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" \\! komutu tarafından kullanılan kabuk\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" geçici dosyalar için dizin\n"
+
+#: help.c:548
+msgid "Available help:\n"
+msgstr "Yardım:\n"
+
+#: help.c:636
+#, fuzzy, c-format
+#| msgid ""
+#| "Command: %s\n"
+#| "Description: %s\n"
+#| "Syntax:\n"
+#| "%s\n"
+#| "\n"
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"Komut: %s\n"
+"Açıklama: %s\n"
+"Söz dizimi:\n"
+"%s\n"
+"\n"
+
+#: help.c:655
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"\"%s\" için yardım bulunmamaktadır.\n"
+"\\h yazarak yardım konularının listesini görüntüleyin.\n"
+
+#: input.c:218
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "girdi dosyası okuma hatası: %m"
+
+#: input.c:472 input.c:510
+#, fuzzy, c-format
+#| msgid "could not save history to file \"%s\": %s\n"
+msgid "could not save history to file \"%s\": %m"
+msgstr "İşlem geçmişi \"%s\" dosyasına kaydedilemiyor: %s\n"
+
+#: input.c:529
+#, fuzzy, c-format
+#| msgid "history is not supported by this installation\n"
+msgid "history is not supported by this installation"
+msgstr "bu kurulum işlem geçmişini desteklemiyor\n"
+
+#: large_obj.c:65
+#, fuzzy, c-format
+#| msgid "%s: not connected to a database\n"
+msgid "%s: not connected to a database"
+msgstr "%s: veritabanına bağlı değil\n"
+
+#: large_obj.c:84
+#, fuzzy, c-format
+#| msgid "%s: current transaction is aborted\n"
+msgid "%s: current transaction is aborted"
+msgstr "%s: geçerli transaction iptal edildi\n"
+
+#: large_obj.c:87
+#, fuzzy, c-format
+#| msgid "%s: unknown transaction status\n"
+msgid "%s: unknown transaction status"
+msgstr "%s: bilinmeyen transaction durumu\n"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "Large objectler"
+
+#: mainloop.c:136
+#, fuzzy, c-format
+#| msgid "\\if: escaped\n"
+msgid "\\if: escaped"
+msgstr "\\if: yarıda kesildi(escaped)\n"
+
+#: mainloop.c:183
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "%s'den çıkmak için \"\\q\" kullanın.\n"
+
+#: mainloop.c:205
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"Girdi özel formatta bir PostgreSQL dökümüdür (dump).\n"
+"Bu dökümü bir veritabanına geri yüklemek için pg_restore komut satırı istemcisini kullanın.\n"
+
+#: mainloop.c:282
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Yardım için \\? yazınız veya input bufffer'ı temzilemek için kontrol-C'ye basınız."
+
+#: mainloop.c:284
+msgid "Use \\? for help."
+msgstr "Yardım için \\? yazınız."
+
+#: mainloop.c:288
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "PostgreSQL'in komut satırı arabirimi olan psql'i kullanıyorsunuz."
+
+#: mainloop.c:289
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"Komutlar: \\copyright dağıtım koşulları için\n"
+" \\h SQL komutları hakkında yardım için\n"
+" \\? psql dahili komutlarının yardımı için\n"
+" \\g ya da noktalı virgül: sorguyu çalıştırmak için\n"
+" \\q çıkmak için\n"
+
+#: mainloop.c:313
+msgid "Use \\q to quit."
+msgstr "Çıkmak için \\q yazınız."
+
+#: mainloop.c:316 mainloop.c:340
+msgid "Use control-D to quit."
+msgstr "Çıkmak için kontrol-D'ye basınız."
+
+#: mainloop.c:318 mainloop.c:342
+msgid "Use control-C to quit."
+msgstr "Çıkmak için kontrol-C'ye basınız."
+
+#: mainloop.c:449 mainloop.c:591
+#, fuzzy, c-format
+#| msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block\n"
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "\\sorgu yoksayıldı; güncel \\if blokundan çıkmak için \\endif veya Ctrl-C kullanınız\n"
+
+#: mainloop.c:609
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr ""
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "sonuçlandırılmamış tırnakla sınırlandırılmış satır"
+
+#: psqlscanslash.l:811
+#, fuzzy, c-format
+#| msgid "%s: out of memory\n"
+msgid "%s: out of memory"
+msgstr "%s: yetersiz bellek\n"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1089 sql_help.c:1091 sql_help.c:1093 sql_help.c:1109
+#: sql_help.c:1111 sql_help.c:1115 sql_help.c:1118 sql_help.c:1119
+#: sql_help.c:1120 sql_help.c:1123 sql_help.c:1125 sql_help.c:1258
+#: sql_help.c:1260 sql_help.c:1263 sql_help.c:1266 sql_help.c:1268
+#: sql_help.c:1270 sql_help.c:1273 sql_help.c:1276 sql_help.c:1386
+#: sql_help.c:1388 sql_help.c:1390 sql_help.c:1393 sql_help.c:1414
+#: sql_help.c:1417 sql_help.c:1420 sql_help.c:1423 sql_help.c:1427
+#: sql_help.c:1429 sql_help.c:1431 sql_help.c:1433 sql_help.c:1447
+#: sql_help.c:1450 sql_help.c:1452 sql_help.c:1454 sql_help.c:1464
+#: sql_help.c:1466 sql_help.c:1476 sql_help.c:1478 sql_help.c:1488
+#: sql_help.c:1491 sql_help.c:1513 sql_help.c:1515 sql_help.c:1517
+#: sql_help.c:1520 sql_help.c:1522 sql_help.c:1524 sql_help.c:1527
+#: sql_help.c:1577 sql_help.c:1619 sql_help.c:1622 sql_help.c:1624
+#: sql_help.c:1626 sql_help.c:1628 sql_help.c:1630 sql_help.c:1633
+#: sql_help.c:1683 sql_help.c:1699 sql_help.c:1920 sql_help.c:1989
+#: sql_help.c:2008 sql_help.c:2021 sql_help.c:2078 sql_help.c:2085
+#: sql_help.c:2095 sql_help.c:2115 sql_help.c:2140 sql_help.c:2158
+#: sql_help.c:2187 sql_help.c:2282 sql_help.c:2324 sql_help.c:2347
+#: sql_help.c:2368 sql_help.c:2369 sql_help.c:2406 sql_help.c:2426
+#: sql_help.c:2448 sql_help.c:2462 sql_help.c:2482 sql_help.c:2505
+#: sql_help.c:2535 sql_help.c:2560 sql_help.c:2606 sql_help.c:2884
+#: sql_help.c:2897 sql_help.c:2914 sql_help.c:2930 sql_help.c:2970
+#: sql_help.c:3022 sql_help.c:3026 sql_help.c:3028 sql_help.c:3034
+#: sql_help.c:3052 sql_help.c:3079 sql_help.c:3114 sql_help.c:3126
+#: sql_help.c:3135 sql_help.c:3179 sql_help.c:3193 sql_help.c:3221
+#: sql_help.c:3229 sql_help.c:3237 sql_help.c:3245 sql_help.c:3253
+#: sql_help.c:3261 sql_help.c:3269 sql_help.c:3277 sql_help.c:3286
+#: sql_help.c:3297 sql_help.c:3305 sql_help.c:3313 sql_help.c:3321
+#: sql_help.c:3329 sql_help.c:3339 sql_help.c:3348 sql_help.c:3357
+#: sql_help.c:3365 sql_help.c:3375 sql_help.c:3386 sql_help.c:3394
+#: sql_help.c:3403 sql_help.c:3414 sql_help.c:3423 sql_help.c:3431
+#: sql_help.c:3439 sql_help.c:3447 sql_help.c:3455 sql_help.c:3463
+#: sql_help.c:3471 sql_help.c:3479 sql_help.c:3487 sql_help.c:3495
+#: sql_help.c:3503 sql_help.c:3520 sql_help.c:3529 sql_help.c:3537
+#: sql_help.c:3554 sql_help.c:3569 sql_help.c:3839 sql_help.c:3890
+#: sql_help.c:3919 sql_help.c:3927 sql_help.c:4360 sql_help.c:4408
+#: sql_help.c:4549
+msgid "name"
+msgstr "ad"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1770
+#: sql_help.c:3194 sql_help.c:4146
+msgid "aggregate_signature"
+msgstr "aggregate_imzası"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1092 sql_help.c:1126 sql_help.c:1267 sql_help.c:1387
+#: sql_help.c:1430 sql_help.c:1451 sql_help.c:1465 sql_help.c:1477
+#: sql_help.c:1490 sql_help.c:1521 sql_help.c:1578 sql_help.c:1627
+msgid "new_name"
+msgstr "yeni_adı"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1090 sql_help.c:1124 sql_help.c:1327
+#: sql_help.c:1389 sql_help.c:1432 sql_help.c:1453 sql_help.c:1516
+#: sql_help.c:1625 sql_help.c:2870
+msgid "new_owner"
+msgstr "yeni_sahibi"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1094
+#: sql_help.c:1269 sql_help.c:1434 sql_help.c:1455 sql_help.c:1467
+#: sql_help.c:1479 sql_help.c:1523 sql_help.c:1629
+msgid "new_schema"
+msgstr "yeni_şema"
+
+#: sql_help.c:44 sql_help.c:1834 sql_help.c:3195 sql_help.c:4175
+msgid "where aggregate_signature is:"
+msgstr "aggregate_imzası şu şekilde olabilir:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1788
+#: sql_help.c:1805 sql_help.c:1811 sql_help.c:1835 sql_help.c:1838
+#: sql_help.c:1841 sql_help.c:1990 sql_help.c:2009 sql_help.c:2012
+#: sql_help.c:2283 sql_help.c:2483 sql_help.c:3196 sql_help.c:3199
+#: sql_help.c:3202 sql_help.c:3287 sql_help.c:3376 sql_help.c:3404
+#: sql_help.c:3724 sql_help.c:4057 sql_help.c:4152 sql_help.c:4159
+#: sql_help.c:4165 sql_help.c:4176 sql_help.c:4179 sql_help.c:4182
+msgid "argmode"
+msgstr ""
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1789
+#: sql_help.c:1806 sql_help.c:1812 sql_help.c:1836 sql_help.c:1839
+#: sql_help.c:1842 sql_help.c:1991 sql_help.c:2010 sql_help.c:2013
+#: sql_help.c:2284 sql_help.c:2484 sql_help.c:3197 sql_help.c:3200
+#: sql_help.c:3203 sql_help.c:3288 sql_help.c:3377 sql_help.c:3405
+#: sql_help.c:4153 sql_help.c:4160 sql_help.c:4166 sql_help.c:4177
+#: sql_help.c:4180 sql_help.c:4183
+msgid "argname"
+msgstr "bağımsız değişken adı"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1790
+#: sql_help.c:1807 sql_help.c:1813 sql_help.c:1837 sql_help.c:1840
+#: sql_help.c:1843 sql_help.c:2285 sql_help.c:2485 sql_help.c:3198
+#: sql_help.c:3201 sql_help.c:3204 sql_help.c:3289 sql_help.c:3378
+#: sql_help.c:3406 sql_help.c:4154 sql_help.c:4161 sql_help.c:4167
+#: sql_help.c:4178 sql_help.c:4181 sql_help.c:4184
+#, fuzzy
+msgid "argtype"
+msgstr "Hedef tipi"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1448 sql_help.c:1572 sql_help.c:1604
+#: sql_help.c:1652 sql_help.c:1891 sql_help.c:1898 sql_help.c:2190
+#: sql_help.c:2232 sql_help.c:2239 sql_help.c:2248 sql_help.c:2325
+#: sql_help.c:2536 sql_help.c:2628 sql_help.c:2899 sql_help.c:3080
+#: sql_help.c:3102 sql_help.c:3590 sql_help.c:3758 sql_help.c:4610
+msgid "option"
+msgstr "seçenek"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1573 sql_help.c:2326
+#: sql_help.c:2537 sql_help.c:3081
+msgid "where option can be:"
+msgstr "seçenek şunlar olabilir:"
+
+#: sql_help.c:114 sql_help.c:2122
+msgid "allowconn"
+msgstr ""
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1574 sql_help.c:2123
+#: sql_help.c:2538 sql_help.c:3082
+#, fuzzy
+msgid "connlimit"
+msgstr "sınırsız"
+
+#: sql_help.c:116 sql_help.c:2124
+#, fuzzy
+msgid "istemplate"
+msgstr "Şablon"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1272 sql_help.c:1320
+msgid "new_tablespace"
+msgstr "yeni_tablespace"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1137 sql_help.c:1140 sql_help.c:1581
+#: sql_help.c:1585 sql_help.c:1588 sql_help.c:2295 sql_help.c:2489
+#: sql_help.c:3944 sql_help.c:4349
+msgid "configuration_parameter"
+msgstr "yapılandırma_parametresi"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1114 sql_help.c:1117 sql_help.c:1122 sql_help.c:1138
+#: sql_help.c:1139 sql_help.c:1302 sql_help.c:1322 sql_help.c:1370
+#: sql_help.c:1392 sql_help.c:1449 sql_help.c:1582 sql_help.c:1605
+#: sql_help.c:2191 sql_help.c:2233 sql_help.c:2240 sql_help.c:2249
+#: sql_help.c:2296 sql_help.c:2297 sql_help.c:2356 sql_help.c:2390
+#: sql_help.c:2490 sql_help.c:2491 sql_help.c:2508 sql_help.c:2629
+#: sql_help.c:2659 sql_help.c:2764 sql_help.c:2777 sql_help.c:2791
+#: sql_help.c:2832 sql_help.c:2856 sql_help.c:2873 sql_help.c:2900
+#: sql_help.c:3103 sql_help.c:3759 sql_help.c:4350 sql_help.c:4351
+msgid "value"
+msgstr "değer"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "hedef_rol"
+
+#: sql_help.c:198 sql_help.c:2174 sql_help.c:2584 sql_help.c:2589
+#: sql_help.c:3706 sql_help.c:3713 sql_help.c:3727 sql_help.c:3733
+#: sql_help.c:4039 sql_help.c:4046 sql_help.c:4060 sql_help.c:4066
+msgid "schema_name"
+msgstr "şema_adı"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr ""
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr ""
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1271 sql_help.c:1592 sql_help.c:2329 sql_help.c:2330
+#: sql_help.c:2331 sql_help.c:2332 sql_help.c:2333 sql_help.c:2464
+#: sql_help.c:2541 sql_help.c:2542 sql_help.c:2543 sql_help.c:2544
+#: sql_help.c:2545 sql_help.c:3085 sql_help.c:3086 sql_help.c:3087
+#: sql_help.c:3088 sql_help.c:3089 sql_help.c:3740 sql_help.c:3741
+#: sql_help.c:3742 sql_help.c:4040 sql_help.c:4044 sql_help.c:4047
+#: sql_help.c:4049 sql_help.c:4051 sql_help.c:4053 sql_help.c:4055
+#: sql_help.c:4061 sql_help.c:4063 sql_help.c:4065 sql_help.c:4067
+#: sql_help.c:4069 sql_help.c:4071 sql_help.c:4072 sql_help.c:4073
+#: sql_help.c:4370
+msgid "role_name"
+msgstr "rol_adı"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1287 sql_help.c:1289
+#: sql_help.c:1337 sql_help.c:1349 sql_help.c:1374 sql_help.c:1621
+#: sql_help.c:2143 sql_help.c:2147 sql_help.c:2252 sql_help.c:2257
+#: sql_help.c:2351 sql_help.c:2759 sql_help.c:2772 sql_help.c:2786
+#: sql_help.c:2795 sql_help.c:2807 sql_help.c:2836 sql_help.c:3790
+#: sql_help.c:3805 sql_help.c:3807 sql_help.c:4235 sql_help.c:4236
+#: sql_help.c:4245 sql_help.c:4286 sql_help.c:4287 sql_help.c:4288
+#: sql_help.c:4289 sql_help.c:4290 sql_help.c:4291 sql_help.c:4324
+#: sql_help.c:4325 sql_help.c:4330 sql_help.c:4335 sql_help.c:4474
+#: sql_help.c:4475 sql_help.c:4484 sql_help.c:4525 sql_help.c:4526
+#: sql_help.c:4527 sql_help.c:4528 sql_help.c:4529 sql_help.c:4530
+#: sql_help.c:4577 sql_help.c:4579 sql_help.c:4636 sql_help.c:4692
+#: sql_help.c:4693 sql_help.c:4702 sql_help.c:4743 sql_help.c:4744
+#: sql_help.c:4745 sql_help.c:4746 sql_help.c:4747 sql_help.c:4748
+msgid "expression"
+msgstr "ifade"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "alan(domain)_kısıtlaması"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1264 sql_help.c:1308 sql_help.c:1309 sql_help.c:1310
+#: sql_help.c:1336 sql_help.c:1348 sql_help.c:1365 sql_help.c:1776
+#: sql_help.c:1778 sql_help.c:2146 sql_help.c:2251 sql_help.c:2256
+#: sql_help.c:2794 sql_help.c:2806 sql_help.c:3802
+msgid "constraint_name"
+msgstr "%kısıtlama_adı"
+
+#: sql_help.c:244 sql_help.c:1265
+msgid "new_constraint_name"
+msgstr "yeni_kısıtlama_adı"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "yeni_sürüm"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "üye_nesnesi"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr ""
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1768 sql_help.c:1773 sql_help.c:1780
+#: sql_help.c:1781 sql_help.c:1782 sql_help.c:1783 sql_help.c:1784
+#: sql_help.c:1785 sql_help.c:1786 sql_help.c:1791 sql_help.c:1793
+#: sql_help.c:1797 sql_help.c:1799 sql_help.c:1803 sql_help.c:1808
+#: sql_help.c:1809 sql_help.c:1816 sql_help.c:1817 sql_help.c:1818
+#: sql_help.c:1819 sql_help.c:1820 sql_help.c:1821 sql_help.c:1822
+#: sql_help.c:1823 sql_help.c:1824 sql_help.c:1825 sql_help.c:1826
+#: sql_help.c:1831 sql_help.c:1832 sql_help.c:4142 sql_help.c:4147
+#: sql_help.c:4148 sql_help.c:4149 sql_help.c:4150 sql_help.c:4156
+#: sql_help.c:4157 sql_help.c:4162 sql_help.c:4163 sql_help.c:4168
+#: sql_help.c:4169 sql_help.c:4170 sql_help.c:4171 sql_help.c:4172
+#: sql_help.c:4173
+msgid "object_name"
+msgstr "nesne_adı"
+
+#: sql_help.c:326 sql_help.c:1769 sql_help.c:4145
+msgid "aggregate_name"
+msgstr "toplam(aggregate)_adı"
+
+#: sql_help.c:328 sql_help.c:1771 sql_help.c:2055 sql_help.c:2059
+#: sql_help.c:2061 sql_help.c:3212
+#, fuzzy
+msgid "source_type"
+msgstr "Kaynak tipi"
+
+#: sql_help.c:329 sql_help.c:1772 sql_help.c:2056 sql_help.c:2060
+#: sql_help.c:2062 sql_help.c:3213
+#, fuzzy
+msgid "target_type"
+msgstr "Hedef tipi"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1787 sql_help.c:2057
+#: sql_help.c:2098 sql_help.c:2161 sql_help.c:2407 sql_help.c:2438
+#: sql_help.c:2976 sql_help.c:4056 sql_help.c:4151 sql_help.c:4264
+#: sql_help.c:4268 sql_help.c:4272 sql_help.c:4275 sql_help.c:4503
+#: sql_help.c:4507 sql_help.c:4511 sql_help.c:4514 sql_help.c:4721
+#: sql_help.c:4725 sql_help.c:4729 sql_help.c:4732
+msgid "function_name"
+msgstr "fonksiyon_adı"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1794 sql_help.c:2431
+msgid "operator_name"
+msgstr "operatör_adı"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1795
+#: sql_help.c:2408 sql_help.c:3330
+msgid "left_type"
+msgstr "sol_argüman_veri_tipi"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1796
+#: sql_help.c:2409 sql_help.c:3331
+#, fuzzy
+msgid "right_type"
+msgstr "Sağ argüman veri tipi"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1354 sql_help.c:1798 sql_help.c:1800 sql_help.c:2428
+#: sql_help.c:2449 sql_help.c:2812 sql_help.c:3340 sql_help.c:3349
+msgid "index_method"
+msgstr "index_yöntemi"
+
+#: sql_help.c:349 sql_help.c:1804 sql_help.c:4158
+msgid "procedure_name"
+msgstr "prosedür_adı"
+
+#: sql_help.c:353 sql_help.c:1810 sql_help.c:3723 sql_help.c:4164
+#, fuzzy
+#| msgid "role_name"
+msgid "routine_name"
+msgstr "rol_adı"
+
+#: sql_help.c:365 sql_help.c:1326 sql_help.c:1827 sql_help.c:2291
+#: sql_help.c:2488 sql_help.c:2767 sql_help.c:2943 sql_help.c:3511
+#: sql_help.c:3737 sql_help.c:4070
+msgid "type_name"
+msgstr "tip_adı"
+
+#: sql_help.c:366 sql_help.c:1828 sql_help.c:2290 sql_help.c:2487
+#: sql_help.c:2944 sql_help.c:3170 sql_help.c:3512 sql_help.c:3729
+#: sql_help.c:4062
+msgid "lang_name"
+msgstr "dil_adı"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr ""
+
+#: sql_help.c:392 sql_help.c:1922 sql_help.c:2188
+msgid "handler_function"
+msgstr "işleyici_fonksiyon"
+
+#: sql_help.c:393 sql_help.c:2189
+msgid "validator_function"
+msgstr "doğrulayıcı_fonksiyon"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1259 sql_help.c:1514
+msgid "action"
+msgstr "hareket"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1261
+#: sql_help.c:1279 sql_help.c:1283 sql_help.c:1284 sql_help.c:1288
+#: sql_help.c:1290 sql_help.c:1291 sql_help.c:1292 sql_help.c:1294
+#: sql_help.c:1297 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303
+#: sql_help.c:1305 sql_help.c:1350 sql_help.c:1352 sql_help.c:1359
+#: sql_help.c:1368 sql_help.c:1373 sql_help.c:1620 sql_help.c:1623
+#: sql_help.c:1660 sql_help.c:1775 sql_help.c:1888 sql_help.c:1894
+#: sql_help.c:1907 sql_help.c:1908 sql_help.c:1909 sql_help.c:2230
+#: sql_help.c:2243 sql_help.c:2288 sql_help.c:2350 sql_help.c:2354
+#: sql_help.c:2387 sql_help.c:2614 sql_help.c:2642 sql_help.c:2643
+#: sql_help.c:2750 sql_help.c:2758 sql_help.c:2768 sql_help.c:2771
+#: sql_help.c:2781 sql_help.c:2785 sql_help.c:2808 sql_help.c:2810
+#: sql_help.c:2817 sql_help.c:2830 sql_help.c:2835 sql_help.c:2853
+#: sql_help.c:2979 sql_help.c:3115 sql_help.c:3708 sql_help.c:3709
+#: sql_help.c:3789 sql_help.c:3804 sql_help.c:3806 sql_help.c:3808
+#: sql_help.c:4041 sql_help.c:4042 sql_help.c:4144 sql_help.c:4295
+#: sql_help.c:4534 sql_help.c:4576 sql_help.c:4578 sql_help.c:4580
+#: sql_help.c:4624 sql_help.c:4752
+msgid "column_name"
+msgstr "sütun_adı"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1262
+msgid "new_column_name"
+msgstr "yeni_sütun_adı"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1278 sql_help.c:1530
+msgid "where action is one of:"
+msgstr "hareket aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1280
+#: sql_help.c:1285 sql_help.c:1532 sql_help.c:1536 sql_help.c:2141
+#: sql_help.c:2231 sql_help.c:2427 sql_help.c:2607 sql_help.c:2751
+#: sql_help.c:3024 sql_help.c:3891
+msgid "data_type"
+msgstr "veri_tipi"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1281 sql_help.c:1286
+#: sql_help.c:1533 sql_help.c:1537 sql_help.c:2142 sql_help.c:2234
+#: sql_help.c:2352 sql_help.c:2752 sql_help.c:2760 sql_help.c:2773
+#: sql_help.c:2787 sql_help.c:3025 sql_help.c:3031 sql_help.c:3799
+msgid "collation"
+msgstr "sıralama (collation)"
+
+#: sql_help.c:453 sql_help.c:1282 sql_help.c:2235 sql_help.c:2244
+#: sql_help.c:2753 sql_help.c:2769 sql_help.c:2782
+msgid "column_constraint"
+msgstr "kolon_kısıtlaması"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1299
+msgid "integer"
+msgstr "tamsayı"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1301
+#: sql_help.c:1304
+msgid "attribute_option"
+msgstr "özellik_seçeneği"
+
+#: sql_help.c:473 sql_help.c:1306 sql_help.c:2236 sql_help.c:2245
+#: sql_help.c:2754 sql_help.c:2770 sql_help.c:2783
+msgid "table_constraint"
+msgstr "tablo_kısıtlaması"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1311
+#: sql_help.c:1312 sql_help.c:1313 sql_help.c:1314 sql_help.c:1829
+msgid "trigger_name"
+msgstr "tetikleyici_adı"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1324 sql_help.c:1325
+#: sql_help.c:2237 sql_help.c:2242 sql_help.c:2757 sql_help.c:2780
+msgid "parent_table"
+msgstr "üst_tablo"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1493 sql_help.c:2173
+msgid "extension_name"
+msgstr "uzantı_adı"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2292
+msgid "execution_cost"
+msgstr "execution_cost"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2293
+msgid "result_rows"
+msgstr "sonuç_satırları"
+
+#: sql_help.c:543 sql_help.c:2294
+#, fuzzy
+#| msgid "start_function"
+msgid "support_function"
+msgstr "başlangıç_fonksiyonu"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1571 sql_help.c:1579
+#: sql_help.c:1583 sql_help.c:1586 sql_help.c:1589 sql_help.c:2585
+#: sql_help.c:2587 sql_help.c:2590 sql_help.c:2591 sql_help.c:3707
+#: sql_help.c:3711 sql_help.c:3714 sql_help.c:3716 sql_help.c:3718
+#: sql_help.c:3720 sql_help.c:3722 sql_help.c:3728 sql_help.c:3730
+#: sql_help.c:3732 sql_help.c:3734 sql_help.c:3736 sql_help.c:3738
+msgid "role_specification"
+msgstr "rol_tanımlaması"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1602 sql_help.c:2116
+#: sql_help.c:2593 sql_help.c:3100 sql_help.c:3545 sql_help.c:4380
+msgid "user_name"
+msgstr "kullanıcı_adı"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1591 sql_help.c:2592
+#: sql_help.c:3739
+msgid "where role_specification can be:"
+msgstr "rol tanımlaması şunlar olabilir:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "grup_adı"
+
+#: sql_help.c:591 sql_help.c:1371 sql_help.c:2121 sql_help.c:2357
+#: sql_help.c:2391 sql_help.c:2765 sql_help.c:2778 sql_help.c:2792
+#: sql_help.c:2833 sql_help.c:2857 sql_help.c:2869 sql_help.c:3735
+#: sql_help.c:4068
+msgid "tablespace_name"
+msgstr "tablespace_adı"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1319 sql_help.c:1328
+#: sql_help.c:1366 sql_help.c:1709
+msgid "index_name"
+msgstr "index_adı"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1321
+#: sql_help.c:1323 sql_help.c:1369 sql_help.c:2355 sql_help.c:2389
+#: sql_help.c:2763 sql_help.c:2776 sql_help.c:2790 sql_help.c:2831
+#: sql_help.c:2855
+msgid "storage_parameter"
+msgstr "saklama_parametresi"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "sütun_sayısı"
+
+#: sql_help.c:626 sql_help.c:1792 sql_help.c:4155
+msgid "large_object_oid"
+msgstr "büyük_nesne_oid"
+
+#: sql_help.c:713 sql_help.c:2412
+msgid "res_proc"
+msgstr "res_proc"
+
+#: sql_help.c:714 sql_help.c:2413
+msgid "join_proc"
+msgstr "join_proc"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2430
+msgid "strategy_number"
+msgstr "strateji_sayısı"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2432 sql_help.c:2433
+#: sql_help.c:2436 sql_help.c:2437
+msgid "op_type"
+msgstr "operatör_tipi"
+
+#: sql_help.c:770 sql_help.c:2434
+msgid "sort_family_name"
+msgstr "sıralama_family_adı"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2435
+msgid "support_number"
+msgstr "destek_numarası"
+
+#: sql_help.c:775 sql_help.c:2058 sql_help.c:2439 sql_help.c:2946
+#: sql_help.c:2948
+msgid "argument_type"
+msgstr "bağımsız_değişken_tipi"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1489 sql_help.c:1492
+#: sql_help.c:1659 sql_help.c:1708 sql_help.c:1777 sql_help.c:1802
+#: sql_help.c:1815 sql_help.c:1830 sql_help.c:1887 sql_help.c:1893
+#: sql_help.c:2229 sql_help.c:2241 sql_help.c:2348 sql_help.c:2386
+#: sql_help.c:2463 sql_help.c:2506 sql_help.c:2562 sql_help.c:2613
+#: sql_help.c:2644 sql_help.c:2749 sql_help.c:2766 sql_help.c:2779
+#: sql_help.c:2852 sql_help.c:2972 sql_help.c:3149 sql_help.c:3366
+#: sql_help.c:3415 sql_help.c:3521 sql_help.c:3705 sql_help.c:3710
+#: sql_help.c:3755 sql_help.c:3787 sql_help.c:4038 sql_help.c:4043
+#: sql_help.c:4143 sql_help.c:4250 sql_help.c:4252 sql_help.c:4301
+#: sql_help.c:4340 sql_help.c:4489 sql_help.c:4491 sql_help.c:4540
+#: sql_help.c:4574 sql_help.c:4623 sql_help.c:4707 sql_help.c:4709
+#: sql_help.c:4758
+msgid "table_name"
+msgstr "tablo_adı"
+
+#: sql_help.c:811 sql_help.c:2465
+msgid "using_expression"
+msgstr "using_ifadesi"
+
+#: sql_help.c:812 sql_help.c:2466
+msgid "check_expression"
+msgstr "check_ifadesi"
+
+#: sql_help.c:886 sql_help.c:2507
+msgid "publication_parameter"
+msgstr "yayın_parametresi"
+
+#: sql_help.c:929 sql_help.c:1575 sql_help.c:2327 sql_help.c:2539
+#: sql_help.c:3083
+msgid "password"
+msgstr "parola"
+
+#: sql_help.c:930 sql_help.c:1576 sql_help.c:2328 sql_help.c:2540
+#: sql_help.c:3084
+msgid "timestamp"
+msgstr "timestamp"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1580
+#: sql_help.c:1584 sql_help.c:1587 sql_help.c:1590 sql_help.c:3715
+#: sql_help.c:4048
+msgid "database_name"
+msgstr "veritabanı_adı"
+
+#: sql_help.c:1048 sql_help.c:2608
+msgid "increment"
+msgstr "artım"
+
+#: sql_help.c:1049 sql_help.c:2609
+msgid "minvalue"
+msgstr "en düşük değer"
+
+#: sql_help.c:1050 sql_help.c:2610
+msgid "maxvalue"
+msgstr "en yüksek değer"
+
+#: sql_help.c:1051 sql_help.c:2611 sql_help.c:4248 sql_help.c:4338
+#: sql_help.c:4487 sql_help.c:4640 sql_help.c:4705
+msgid "start"
+msgstr "başlat"
+
+#: sql_help.c:1052 sql_help.c:1296
+msgid "restart"
+msgstr "yeniden başlat"
+
+#: sql_help.c:1053 sql_help.c:2612
+msgid "cache"
+msgstr "önbellek"
+
+#: sql_help.c:1110 sql_help.c:2656
+msgid "conninfo"
+msgstr "conninfo"
+
+#: sql_help.c:1112 sql_help.c:2657
+msgid "publication_name"
+msgstr "yayın_adı"
+
+#: sql_help.c:1113
+#, fuzzy
+msgid "set_publication_option"
+msgstr "set_publication_option"
+
+#: sql_help.c:1116
+msgid "refresh_option"
+msgstr "tazeleme_seçeneği"
+
+#: sql_help.c:1121 sql_help.c:2658
+msgid "subscription_parameter"
+msgstr "abonelik_parametresi"
+
+#: sql_help.c:1274 sql_help.c:1277
+msgid "partition_name"
+msgstr "bölümleme(partition)_adı"
+
+#: sql_help.c:1275 sql_help.c:2246 sql_help.c:2784
+msgid "partition_bound_spec"
+msgstr ""
+
+#: sql_help.c:1293 sql_help.c:1340 sql_help.c:2798
+msgid "sequence_options"
+msgstr "sequence_seçenekleri"
+
+#: sql_help.c:1295
+msgid "sequence_option"
+msgstr "sequence_seçeneği"
+
+#: sql_help.c:1307
+msgid "table_constraint_using_index"
+msgstr "ve indeks_kullanan_tablo_kısıtlaması şöyledir:"
+
+#: sql_help.c:1315 sql_help.c:1316 sql_help.c:1317 sql_help.c:1318
+msgid "rewrite_rule_name"
+msgstr "rewrite_kural_adı"
+
+#: sql_help.c:1329 sql_help.c:2823
+msgid "and partition_bound_spec is:"
+msgstr "ve partition_bound_spec şöyledir:"
+
+#: sql_help.c:1330 sql_help.c:1331 sql_help.c:1332 sql_help.c:2824
+#: sql_help.c:2825 sql_help.c:2826
+#, fuzzy
+#| msgid "and partition_bound_spec is:"
+msgid "partition_bound_expr"
+msgstr "ve partition_bound_spec şöyledir:"
+
+#: sql_help.c:1333 sql_help.c:1334 sql_help.c:2827 sql_help.c:2828
+msgid "numeric_literal"
+msgstr "sayısal_sabit"
+
+#: sql_help.c:1335
+msgid "and column_constraint is:"
+msgstr "ve kolon_kısıtlaması şöyledir :"
+
+#: sql_help.c:1338 sql_help.c:2253 sql_help.c:2286 sql_help.c:2486
+#: sql_help.c:2796
+msgid "default_expr"
+msgstr "öntanımlı_ifade"
+
+#: sql_help.c:1339 sql_help.c:2254 sql_help.c:2797
+msgid "generation_expr"
+msgstr ""
+
+#: sql_help.c:1341 sql_help.c:1342 sql_help.c:1351 sql_help.c:1353
+#: sql_help.c:1357 sql_help.c:2799 sql_help.c:2800 sql_help.c:2809
+#: sql_help.c:2811 sql_help.c:2815
+msgid "index_parameters"
+msgstr "indeks_parametreleri"
+
+#: sql_help.c:1343 sql_help.c:1360 sql_help.c:2801 sql_help.c:2818
+msgid "reftable"
+msgstr "referans tablosu"
+
+#: sql_help.c:1344 sql_help.c:1361 sql_help.c:2802 sql_help.c:2819
+msgid "refcolumn"
+msgstr "referans kolonu"
+
+#: sql_help.c:1345 sql_help.c:1346 sql_help.c:1362 sql_help.c:1363
+#: sql_help.c:2803 sql_help.c:2804 sql_help.c:2820 sql_help.c:2821
+#, fuzzy
+#| msgid "initial_condition"
+msgid "referential_action"
+msgstr "ilk_durum"
+
+#: sql_help.c:1347 sql_help.c:2255 sql_help.c:2805
+msgid "and table_constraint is:"
+msgstr "ve tablo_kısıtlaması şöyledir:"
+
+#: sql_help.c:1355 sql_help.c:2813
+msgid "exclude_element"
+msgstr "hariçtutma(ecxlude)_öğesi"
+
+#: sql_help.c:1356 sql_help.c:2814 sql_help.c:4246 sql_help.c:4336
+#: sql_help.c:4485 sql_help.c:4638 sql_help.c:4703
+msgid "operator"
+msgstr "operatör"
+
+#: sql_help.c:1358 sql_help.c:2358 sql_help.c:2816
+msgid "predicate"
+msgstr "yüklem (predicate)"
+
+#: sql_help.c:1364
+msgid "and table_constraint_using_index is:"
+msgstr "ve indeks_kullanan_tablo_kısıtlaması şöyledir:"
+
+#: sql_help.c:1367 sql_help.c:2829
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "UNIQUE, PRIMARY KEY ve EXCLUDE kısıtlamalarında index_parametreleri şunlar olabilir:"
+
+#: sql_help.c:1372 sql_help.c:2834
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr ""
+
+#: sql_help.c:1375 sql_help.c:2353 sql_help.c:2761 sql_help.c:2774
+#: sql_help.c:2788 sql_help.c:2837 sql_help.c:3800
+msgid "opclass"
+msgstr "opclass"
+
+#: sql_help.c:1391 sql_help.c:1394 sql_help.c:2872
+msgid "tablespace_option"
+msgstr "tablespace_seçeneği"
+
+#: sql_help.c:1415 sql_help.c:1418 sql_help.c:1424 sql_help.c:1428
+msgid "token_type"
+msgstr "token_tipi"
+
+#: sql_help.c:1416 sql_help.c:1419
+msgid "dictionary_name"
+msgstr "sözlük_adı"
+
+#: sql_help.c:1421 sql_help.c:1425
+msgid "old_dictionary"
+msgstr "eski_sözlük"
+
+#: sql_help.c:1422 sql_help.c:1426
+msgid "new_dictionary"
+msgstr "yeni_sözlük"
+
+#: sql_help.c:1518 sql_help.c:1531 sql_help.c:1534 sql_help.c:1535
+#: sql_help.c:3023
+msgid "attribute_name"
+msgstr "özellik_adı"
+
+#: sql_help.c:1519
+msgid "new_attribute_name"
+msgstr "yeni_özellik_adı"
+
+#: sql_help.c:1525 sql_help.c:1529
+msgid "new_enum_value"
+msgstr "yeni_enum_değeri"
+
+#: sql_help.c:1526
+msgid "neighbor_enum_value"
+msgstr "komşu_enum_değeri"
+
+#: sql_help.c:1528
+msgid "existing_enum_value"
+msgstr "mevcut_enum_değeri"
+
+#: sql_help.c:1603 sql_help.c:2238 sql_help.c:2247 sql_help.c:2624
+#: sql_help.c:3101 sql_help.c:3546 sql_help.c:3721 sql_help.c:3756
+#: sql_help.c:4054
+msgid "server_name"
+msgstr "sunucu_adı"
+
+#: sql_help.c:1631 sql_help.c:1634 sql_help.c:3116
+msgid "view_option_name"
+msgstr "seçenek_adı_görüntüle"
+
+#: sql_help.c:1632 sql_help.c:3117
+msgid "view_option_value"
+msgstr "seçenek_değeri_görüntüle"
+
+#: sql_help.c:1653 sql_help.c:1654 sql_help.c:4611 sql_help.c:4612
+msgid "table_and_columns"
+msgstr "tablolar_ve_sütunlar"
+
+#: sql_help.c:1655 sql_help.c:1899 sql_help.c:3593 sql_help.c:4613
+msgid "where option can be one of:"
+msgstr "seçenek aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:1656 sql_help.c:1657 sql_help.c:1901 sql_help.c:1904
+#: sql_help.c:2083 sql_help.c:3594 sql_help.c:3595 sql_help.c:3596
+#: sql_help.c:3597 sql_help.c:3598 sql_help.c:3599 sql_help.c:3600
+#: sql_help.c:4614 sql_help.c:4615 sql_help.c:4616 sql_help.c:4617
+#: sql_help.c:4618 sql_help.c:4619 sql_help.c:4620 sql_help.c:4621
+msgid "boolean"
+msgstr "boolean"
+
+#: sql_help.c:1658 sql_help.c:4622
+msgid "and table_and_columns is:"
+msgstr "ve tablolar_ve_sütunlar şöyledir:"
+
+#: sql_help.c:1674 sql_help.c:4396 sql_help.c:4398 sql_help.c:4422
+msgid "transaction_mode"
+msgstr "transaction_modu"
+
+#: sql_help.c:1675 sql_help.c:4399 sql_help.c:4423
+msgid "where transaction_mode is one of:"
+msgstr "transaction_modu aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:1684 sql_help.c:4256 sql_help.c:4265 sql_help.c:4269
+#: sql_help.c:4273 sql_help.c:4276 sql_help.c:4495 sql_help.c:4504
+#: sql_help.c:4508 sql_help.c:4512 sql_help.c:4515 sql_help.c:4713
+#: sql_help.c:4722 sql_help.c:4726 sql_help.c:4730 sql_help.c:4733
+msgid "argument"
+msgstr "bağımsız değişken"
+
+#: sql_help.c:1774
+msgid "relation_name"
+msgstr "nesne_adı"
+
+#: sql_help.c:1779 sql_help.c:3717 sql_help.c:4050
+msgid "domain_name"
+msgstr "domain_adı"
+
+#: sql_help.c:1801
+msgid "policy_name"
+msgstr "ilke(policy)_adı"
+
+#: sql_help.c:1814
+msgid "rule_name"
+msgstr "kural_adı"
+
+#: sql_help.c:1833
+msgid "text"
+msgstr "metin"
+
+#: sql_help.c:1858 sql_help.c:3900 sql_help.c:4088
+msgid "transaction_id"
+msgstr "işlem(transaction)_id"
+
+#: sql_help.c:1889 sql_help.c:1896 sql_help.c:3826
+msgid "filename"
+msgstr "dosyaadı"
+
+#: sql_help.c:1890 sql_help.c:1897 sql_help.c:2564 sql_help.c:2565
+#: sql_help.c:2566
+msgid "command"
+msgstr "komut"
+
+#: sql_help.c:1892 sql_help.c:2563 sql_help.c:2975 sql_help.c:3152
+#: sql_help.c:3810 sql_help.c:4239 sql_help.c:4241 sql_help.c:4329
+#: sql_help.c:4331 sql_help.c:4478 sql_help.c:4480 sql_help.c:4583
+#: sql_help.c:4696 sql_help.c:4698
+msgid "condition"
+msgstr "şart"
+
+#: sql_help.c:1895 sql_help.c:2392 sql_help.c:2858 sql_help.c:3118
+#: sql_help.c:3136 sql_help.c:3791
+msgid "query"
+msgstr "sorgu"
+
+#: sql_help.c:1900
+msgid "format_name"
+msgstr "biçim(format)_adı"
+
+#: sql_help.c:1902
+msgid "delimiter_character"
+msgstr "ayrıştırıcı_karakteri"
+
+#: sql_help.c:1903
+msgid "null_string"
+msgstr "null_dizi"
+
+#: sql_help.c:1905
+msgid "quote_character"
+msgstr " quote_karakteri"
+
+#: sql_help.c:1906
+msgid "escape_character"
+msgstr "kaçış(escape)_karakteri"
+
+#: sql_help.c:1910
+msgid "encoding_name"
+msgstr "dilkodlaması_adı"
+
+#: sql_help.c:1921
+msgid "access_method_type"
+msgstr "erişim_yöntemi_tipi"
+
+#: sql_help.c:1992 sql_help.c:2011 sql_help.c:2014
+msgid "arg_data_type"
+msgstr "arg_veri_tipi"
+
+#: sql_help.c:1993 sql_help.c:2015 sql_help.c:2023
+msgid "sfunc"
+msgstr "sfunc"
+
+#: sql_help.c:1994 sql_help.c:2016 sql_help.c:2024
+msgid "state_data_type"
+msgstr "durum(state)_veri_tipi"
+
+#: sql_help.c:1995 sql_help.c:2017 sql_help.c:2025
+msgid "state_data_size"
+msgstr "durum(state)_veri_boyutu"
+
+#: sql_help.c:1996 sql_help.c:2018 sql_help.c:2026
+msgid "ffunc"
+msgstr "ffunc"
+
+#: sql_help.c:1997 sql_help.c:2027
+msgid "combinefunc"
+msgstr ""
+
+#: sql_help.c:1998 sql_help.c:2028
+msgid "serialfunc"
+msgstr "serialfunc"
+
+#: sql_help.c:1999 sql_help.c:2029
+msgid "deserialfunc"
+msgstr "deserialfunc"
+
+#: sql_help.c:2000 sql_help.c:2019 sql_help.c:2030
+msgid "initial_condition"
+msgstr "ilk_durum"
+
+#: sql_help.c:2001 sql_help.c:2031
+msgid "msfunc"
+msgstr "msfunc"
+
+#: sql_help.c:2002 sql_help.c:2032
+msgid "minvfunc"
+msgstr "en düşük değer fonksiyonu (minvfunc)"
+
+#: sql_help.c:2003 sql_help.c:2033
+msgid "mstate_data_type"
+msgstr "mstate_veri_tipi"
+
+#: sql_help.c:2004 sql_help.c:2034
+msgid "mstate_data_size"
+msgstr "mstate_veri_boyutu"
+
+#: sql_help.c:2005 sql_help.c:2035
+msgid "mffunc"
+msgstr "mffunc"
+
+#: sql_help.c:2006 sql_help.c:2036
+#, fuzzy
+#| msgid "initial_condition"
+msgid "minitial_condition"
+msgstr "ilk_durum"
+
+#: sql_help.c:2007 sql_help.c:2037
+msgid "sort_operator"
+msgstr "sıralama(sort)_operatörü"
+
+#: sql_help.c:2020
+msgid "or the old syntax"
+msgstr "ya da eski sözdizimi"
+
+#: sql_help.c:2022
+#, fuzzy
+msgid "base_type"
+msgstr "Hedef tipi"
+
+#: sql_help.c:2079
+msgid "locale"
+msgstr "yerel ayar"
+
+#: sql_help.c:2080 sql_help.c:2119
+msgid "lc_collate"
+msgstr "lc_collate"
+
+#: sql_help.c:2081 sql_help.c:2120
+msgid "lc_ctype"
+msgstr "lc_ctype"
+
+#: sql_help.c:2082 sql_help.c:4141
+msgid "provider"
+msgstr "sağlayıcı"
+
+#: sql_help.c:2084 sql_help.c:2175
+msgid "version"
+msgstr "sürüm"
+
+#: sql_help.c:2086
+msgid "existing_collation"
+msgstr "mevcut_sıralama(collation)"
+
+#: sql_help.c:2096
+msgid "source_encoding"
+msgstr "kaynak_dil kodlaması"
+
+#: sql_help.c:2097
+msgid "dest_encoding"
+msgstr "hedef_dil kodlaması"
+
+#: sql_help.c:2117 sql_help.c:2898
+msgid "template"
+msgstr "şablon"
+
+#: sql_help.c:2118
+msgid "encoding"
+msgstr "dil kodlaması"
+
+#: sql_help.c:2144
+msgid "constraint"
+msgstr "kısıtlama"
+
+#: sql_help.c:2145
+msgid "where constraint is:"
+msgstr "kısıtlama şu şekilde olabilir:"
+
+#: sql_help.c:2159 sql_help.c:2561 sql_help.c:2971
+msgid "event"
+msgstr "olay"
+
+#: sql_help.c:2160
+msgid "filter_variable"
+msgstr "filtre_değişkeni"
+
+#: sql_help.c:2176
+msgid "old_version"
+msgstr "eski_sürüm"
+
+#: sql_help.c:2250 sql_help.c:2793
+msgid "where column_constraint is:"
+msgstr "kolon_kısıtlaması aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:2287
+msgid "rettype"
+msgstr "dönüş tipi"
+
+#: sql_help.c:2289
+msgid "column_type"
+msgstr "kolon_tipi"
+
+#: sql_help.c:2298 sql_help.c:2492
+msgid "definition"
+msgstr "tanımı"
+
+#: sql_help.c:2299 sql_help.c:2493
+msgid "obj_file"
+msgstr "obj_file"
+
+#: sql_help.c:2300 sql_help.c:2494
+msgid "link_symbol"
+msgstr "link_sembolü"
+
+#: sql_help.c:2334 sql_help.c:2546 sql_help.c:3090
+msgid "uid"
+msgstr "kullanıcı numarası"
+
+#: sql_help.c:2349 sql_help.c:2388 sql_help.c:2762 sql_help.c:2775
+#: sql_help.c:2789 sql_help.c:2854
+msgid "method"
+msgstr "yöntem"
+
+#: sql_help.c:2370
+msgid "call_handler"
+msgstr "call_handler"
+
+#: sql_help.c:2371
+msgid "inline_handler"
+msgstr "inline_handler"
+
+#: sql_help.c:2372
+msgid "valfunction"
+msgstr "valfunction"
+
+#: sql_help.c:2410
+msgid "com_op"
+msgstr "com_op"
+
+#: sql_help.c:2411
+msgid "neg_op"
+msgstr "neg_op"
+
+#: sql_help.c:2429
+msgid "family_name"
+msgstr "family_name"
+
+#: sql_help.c:2440
+msgid "storage_type"
+msgstr "saklama_tipi"
+
+#: sql_help.c:2567 sql_help.c:2978
+msgid "where event can be one of:"
+msgstr "olay (event) aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:2586 sql_help.c:2588
+msgid "schema_element"
+msgstr "şema_elemanı"
+
+#: sql_help.c:2625
+msgid "server_type"
+msgstr "sunucu_tipi"
+
+#: sql_help.c:2626
+msgid "server_version"
+msgstr "sunucu_sürümü"
+
+#: sql_help.c:2627 sql_help.c:3719 sql_help.c:4052
+msgid "fdw_name"
+msgstr "fdw_adı"
+
+#: sql_help.c:2640
+msgid "statistics_name"
+msgstr "istatistik_adı"
+
+#: sql_help.c:2641
+msgid "statistics_kind"
+msgstr "istatistik_tipi"
+
+#: sql_help.c:2655
+msgid "subscription_name"
+msgstr "abonelik_adı(subsciption)"
+
+#: sql_help.c:2755
+msgid "source_table"
+msgstr "kaynak_tablo"
+
+#: sql_help.c:2756
+msgid "like_option"
+msgstr "like_seçeneği"
+
+#: sql_help.c:2822
+msgid "and like_option is:"
+msgstr "like_seçeneği şu olabilir:"
+
+#: sql_help.c:2871
+msgid "directory"
+msgstr "dizin"
+
+#: sql_help.c:2885
+msgid "parser_name"
+msgstr "ayrıştırıcı_adı"
+
+#: sql_help.c:2886
+msgid "source_config"
+msgstr "source_config"
+
+#: sql_help.c:2915
+msgid "start_function"
+msgstr "başlangıç_fonksiyonu"
+
+#: sql_help.c:2916
+msgid "gettoken_function"
+msgstr "gettoken_fonksiyonu"
+
+#: sql_help.c:2917
+msgid "end_function"
+msgstr "end_fonksiyonu"
+
+#: sql_help.c:2918
+msgid "lextypes_function"
+msgstr "lextypes_fonksiyonu"
+
+#: sql_help.c:2919
+#, fuzzy
+msgid "headline_function"
+msgstr "fonksiyon"
+
+#: sql_help.c:2931
+msgid "init_function"
+msgstr "ilkendirme_fonksiyonu"
+
+#: sql_help.c:2932
+msgid "lexize_function"
+msgstr "lexize_fonksiyonu"
+
+#: sql_help.c:2945
+msgid "from_sql_function_name"
+msgstr "from_sql_fonksiyon_adı"
+
+#: sql_help.c:2947
+msgid "to_sql_function_name"
+msgstr "to_sql_fonksiyon_adı"
+
+#: sql_help.c:2973
+msgid "referenced_table_name"
+msgstr "referans_edilen_tablo_adı"
+
+#: sql_help.c:2974
+#, fuzzy
+msgid "transition_relation_name"
+msgstr "dil_adı"
+
+#: sql_help.c:2977
+msgid "arguments"
+msgstr "argümanlar"
+
+#: sql_help.c:3027 sql_help.c:4174
+msgid "label"
+msgstr "etiket"
+
+#: sql_help.c:3029
+msgid "subtype"
+msgstr "alttip"
+
+#: sql_help.c:3030
+msgid "subtype_operator_class"
+msgstr "alttip_operatör_sınıfı"
+
+#: sql_help.c:3032
+msgid "canonical_function"
+msgstr "canonical_fonksiyon"
+
+#: sql_help.c:3033
+msgid "subtype_diff_function"
+msgstr "subtype-diff_fonksiyonu"
+
+#: sql_help.c:3035
+msgid "input_function"
+msgstr "giriş_fonksiyonu"
+
+#: sql_help.c:3036
+msgid "output_function"
+msgstr "çıktı_fonksiyonu"
+
+#: sql_help.c:3037
+msgid "receive_function"
+msgstr "alma_fonksiyonu"
+
+#: sql_help.c:3038
+msgid "send_function"
+msgstr "gönderme_fonksiyonu"
+
+#: sql_help.c:3039
+msgid "type_modifier_input_function"
+msgstr "type_modifier_input_function"
+
+#: sql_help.c:3040
+msgid "type_modifier_output_function"
+msgstr "type_modifier_output_function"
+
+#: sql_help.c:3041
+msgid "analyze_function"
+msgstr "analiz_fonksiyonu"
+
+#: sql_help.c:3042
+msgid "internallength"
+msgstr "internallength"
+
+#: sql_help.c:3043
+msgid "alignment"
+msgstr "hizalama"
+
+#: sql_help.c:3044
+msgid "storage"
+msgstr "saklama"
+
+#: sql_help.c:3045
+msgid "like_type"
+msgstr "like_type"
+
+#: sql_help.c:3046
+msgid "category"
+msgstr "category"
+
+#: sql_help.c:3047
+msgid "preferred"
+msgstr "tercih edilen"
+
+#: sql_help.c:3048
+msgid "default"
+msgstr "öntanımlı"
+
+#: sql_help.c:3049
+msgid "element"
+msgstr "öğe"
+
+#: sql_help.c:3050
+msgid "delimiter"
+msgstr "sınırlayıcı"
+
+#: sql_help.c:3051
+msgid "collatable"
+msgstr "sıralanabilir"
+
+#: sql_help.c:3148 sql_help.c:3786 sql_help.c:4234 sql_help.c:4323
+#: sql_help.c:4473 sql_help.c:4573 sql_help.c:4691
+msgid "with_query"
+msgstr "with_sorgusu"
+
+#: sql_help.c:3150 sql_help.c:3788 sql_help.c:4253 sql_help.c:4259
+#: sql_help.c:4262 sql_help.c:4266 sql_help.c:4270 sql_help.c:4278
+#: sql_help.c:4492 sql_help.c:4498 sql_help.c:4501 sql_help.c:4505
+#: sql_help.c:4509 sql_help.c:4517 sql_help.c:4575 sql_help.c:4710
+#: sql_help.c:4716 sql_help.c:4719 sql_help.c:4723 sql_help.c:4727
+#: sql_help.c:4735
+msgid "alias"
+msgstr "takma ad"
+
+#: sql_help.c:3151
+msgid "using_list"
+msgstr "using_list"
+
+#: sql_help.c:3153 sql_help.c:3626 sql_help.c:3867 sql_help.c:4584
+msgid "cursor_name"
+msgstr "imleç_adı"
+
+#: sql_help.c:3154 sql_help.c:3794 sql_help.c:4585
+msgid "output_expression"
+msgstr "çıktı_ifadesi"
+
+#: sql_help.c:3155 sql_help.c:3795 sql_help.c:4237 sql_help.c:4326
+#: sql_help.c:4476 sql_help.c:4586 sql_help.c:4694
+msgid "output_name"
+msgstr "output_name"
+
+#: sql_help.c:3171
+msgid "code"
+msgstr "kod"
+
+#: sql_help.c:3570
+msgid "parameter"
+msgstr "değişken"
+
+#: sql_help.c:3591 sql_help.c:3592 sql_help.c:3892
+msgid "statement"
+msgstr "ifade"
+
+#: sql_help.c:3625 sql_help.c:3866
+msgid "direction"
+msgstr "yön"
+
+#: sql_help.c:3627 sql_help.c:3868
+msgid "where direction can be empty or one of:"
+msgstr "yön boş ya da şunlardan biri olabilir:"
+
+#: sql_help.c:3628 sql_help.c:3629 sql_help.c:3630 sql_help.c:3631
+#: sql_help.c:3632 sql_help.c:3869 sql_help.c:3870 sql_help.c:3871
+#: sql_help.c:3872 sql_help.c:3873 sql_help.c:4247 sql_help.c:4249
+#: sql_help.c:4337 sql_help.c:4339 sql_help.c:4486 sql_help.c:4488
+#: sql_help.c:4639 sql_help.c:4641 sql_help.c:4704 sql_help.c:4706
+msgid "count"
+msgstr "toplam sayı"
+
+#: sql_help.c:3712 sql_help.c:4045
+msgid "sequence_name"
+msgstr "sequence_adı"
+
+#: sql_help.c:3725 sql_help.c:4058
+msgid "arg_name"
+msgstr "arg_adı"
+
+#: sql_help.c:3726 sql_help.c:4059
+msgid "arg_type"
+msgstr "bağımsız_değişken_tipi"
+
+#: sql_help.c:3731 sql_help.c:4064
+msgid "loid"
+msgstr ""
+
+#: sql_help.c:3754
+msgid "remote_schema"
+msgstr "uzak_şema"
+
+#: sql_help.c:3757
+msgid "local_schema"
+msgstr "yerel_şema"
+
+#: sql_help.c:3792
+msgid "conflict_target"
+msgstr "çakışma_hedefi"
+
+#: sql_help.c:3793
+msgid "conflict_action"
+msgstr "çakışma_eylemi"
+
+#: sql_help.c:3796
+msgid "where conflict_target can be one of:"
+msgstr "çakışma_hedefi aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:3797
+msgid "index_column_name"
+msgstr "indeks_sütun_adı"
+
+#: sql_help.c:3798
+msgid "index_expression"
+msgstr "indeks_ifadesi"
+
+#: sql_help.c:3801
+msgid "index_predicate"
+msgstr "index_yüklemi"
+
+#: sql_help.c:3803
+msgid "and conflict_action is one of:"
+msgstr "ve çakışma_eylemi aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:3809 sql_help.c:4581
+msgid "sub-SELECT"
+msgstr "alt-SELECT"
+
+#: sql_help.c:3818 sql_help.c:3881 sql_help.c:4557
+msgid "channel"
+msgstr "kanal"
+
+#: sql_help.c:3840
+msgid "lockmode"
+msgstr "kilitleme modu"
+
+#: sql_help.c:3841
+msgid "where lockmode is one of:"
+msgstr "kilitleme modu şunlardan biri olabilir:"
+
+#: sql_help.c:3882
+msgid "payload"
+msgstr "yük (payload)"
+
+#: sql_help.c:3909
+msgid "old_role"
+msgstr "eski_rol"
+
+#: sql_help.c:3910
+msgid "new_role"
+msgstr "yeni_rol"
+
+#: sql_help.c:3935 sql_help.c:4096 sql_help.c:4104
+msgid "savepoint_name"
+msgstr "savepoint_adı"
+
+#: sql_help.c:4238 sql_help.c:4280 sql_help.c:4282 sql_help.c:4328
+#: sql_help.c:4477 sql_help.c:4519 sql_help.c:4521 sql_help.c:4695
+#: sql_help.c:4737 sql_help.c:4739
+msgid "from_item"
+msgstr "from_item"
+
+#: sql_help.c:4240 sql_help.c:4292 sql_help.c:4479 sql_help.c:4531
+#: sql_help.c:4697 sql_help.c:4749
+msgid "grouping_element"
+msgstr "gruplama_öğesi"
+
+#: sql_help.c:4242 sql_help.c:4332 sql_help.c:4481 sql_help.c:4699
+msgid "window_name"
+msgstr "pencere_adı"
+
+#: sql_help.c:4243 sql_help.c:4333 sql_help.c:4482 sql_help.c:4700
+msgid "window_definition"
+msgstr "window_tanımı"
+
+#: sql_help.c:4244 sql_help.c:4258 sql_help.c:4296 sql_help.c:4334
+#: sql_help.c:4483 sql_help.c:4497 sql_help.c:4535 sql_help.c:4701
+#: sql_help.c:4715 sql_help.c:4753
+msgid "select"
+msgstr "select"
+
+#: sql_help.c:4251 sql_help.c:4490 sql_help.c:4708
+msgid "where from_item can be one of:"
+msgstr "from_öğesi şunlardan biri olabilir"
+
+#: sql_help.c:4254 sql_help.c:4260 sql_help.c:4263 sql_help.c:4267
+#: sql_help.c:4279 sql_help.c:4493 sql_help.c:4499 sql_help.c:4502
+#: sql_help.c:4506 sql_help.c:4518 sql_help.c:4711 sql_help.c:4717
+#: sql_help.c:4720 sql_help.c:4724 sql_help.c:4736
+msgid "column_alias"
+msgstr "kolon_takma_adı"
+
+#: sql_help.c:4255 sql_help.c:4494 sql_help.c:4712
+msgid "sampling_method"
+msgstr "örnekleme_yöntemi"
+
+#: sql_help.c:4257 sql_help.c:4496 sql_help.c:4714
+msgid "seed"
+msgstr "başlangıç değeri"
+
+#: sql_help.c:4261 sql_help.c:4294 sql_help.c:4500 sql_help.c:4533
+#: sql_help.c:4718 sql_help.c:4751
+msgid "with_query_name"
+msgstr "with_sorgu_adı"
+
+#: sql_help.c:4271 sql_help.c:4274 sql_help.c:4277 sql_help.c:4510
+#: sql_help.c:4513 sql_help.c:4516 sql_help.c:4728 sql_help.c:4731
+#: sql_help.c:4734
+msgid "column_definition"
+msgstr "kolon_tanımı"
+
+#: sql_help.c:4281 sql_help.c:4520 sql_help.c:4738
+msgid "join_type"
+msgstr "join_tipi"
+
+#: sql_help.c:4283 sql_help.c:4522 sql_help.c:4740
+msgid "join_condition"
+msgstr "join_şartı"
+
+#: sql_help.c:4284 sql_help.c:4523 sql_help.c:4741
+msgid "join_column"
+msgstr "join_sütunu"
+
+#: sql_help.c:4285 sql_help.c:4524 sql_help.c:4742
+msgid "and grouping_element can be one of:"
+msgstr "ve grouplama-elemanı aşağıdakilerden birisi olabilir:"
+
+#: sql_help.c:4293 sql_help.c:4532 sql_help.c:4750
+msgid "and with_query is:"
+msgstr "ve with_sorgusu :"
+
+#: sql_help.c:4297 sql_help.c:4536 sql_help.c:4754
+msgid "values"
+msgstr "değerler"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4755
+msgid "insert"
+msgstr "ekle (insert)"
+
+#: sql_help.c:4299 sql_help.c:4538 sql_help.c:4756
+msgid "update"
+msgstr "güncelle (update)"
+
+#: sql_help.c:4300 sql_help.c:4539 sql_help.c:4757
+msgid "delete"
+msgstr "sil (delete)"
+
+#: sql_help.c:4327
+msgid "new_table"
+msgstr "yeni_tablo"
+
+#: sql_help.c:4352
+msgid "timezone"
+msgstr "saat dilimi"
+
+#: sql_help.c:4397
+msgid "snapshot_id"
+msgstr "snapshot_id"
+
+#: sql_help.c:4582
+msgid "from_list"
+msgstr "from_listesi"
+
+#: sql_help.c:4637
+msgid "sort_expression"
+msgstr "sort_ifadesi"
+
+#: sql_help.c:4764 sql_help.c:5742
+msgid "abort the current transaction"
+msgstr "aktif transcation'ı iptal et"
+
+#: sql_help.c:4770
+msgid "change the definition of an aggregate function"
+msgstr "aggregate fonksiyonunun tanımını değiştir"
+
+#: sql_help.c:4776
+msgid "change the definition of a collation"
+msgstr "karşılaştırma (collation) tanımını değiştir"
+
+#: sql_help.c:4782
+msgid "change the definition of a conversion"
+msgstr "bir dönüşümün tanımını değiştir"
+
+#: sql_help.c:4788
+msgid "change a database"
+msgstr "veritabanını değiştir"
+
+#: sql_help.c:4794
+msgid "define default access privileges"
+msgstr "varsayılan erişim haklarını tanımla"
+
+#: sql_help.c:4800
+msgid "change the definition of a domain"
+msgstr "domain tanımını değiştir"
+
+#: sql_help.c:4806
+msgid "change the definition of an event trigger"
+msgstr "olay tetikleyici tanımını değiştir"
+
+#: sql_help.c:4812
+msgid "change the definition of an extension"
+msgstr "uzantı tanımını değiştir"
+
+#: sql_help.c:4818
+msgid "change the definition of a foreign-data wrapper"
+msgstr "foreign-data wrapper tanımını değiştir"
+
+#: sql_help.c:4824
+msgid "change the definition of a foreign table"
+msgstr "uzak (foreign) tablo tanımını değiştir"
+
+#: sql_help.c:4830
+msgid "change the definition of a function"
+msgstr "fonksiyon tanımını değiştir"
+
+#: sql_help.c:4836
+msgid "change role name or membership"
+msgstr "üyeliği veya rol adını değiştir"
+
+#: sql_help.c:4842
+msgid "change the definition of an index"
+msgstr "index tanımını değiştir"
+
+#: sql_help.c:4848
+msgid "change the definition of a procedural language"
+msgstr "yordamsal dilinin tanımını değiştir"
+
+#: sql_help.c:4854
+msgid "change the definition of a large object"
+msgstr "büyük nesne tanımını değiştir"
+
+#: sql_help.c:4860
+msgid "change the definition of a materialized view"
+msgstr "maddileştirilmiş görünüm (materialized view) tanımını değiştir"
+
+#: sql_help.c:4866
+msgid "change the definition of an operator"
+msgstr "operatör tanımını değiştir"
+
+#: sql_help.c:4872
+msgid "change the definition of an operator class"
+msgstr "operatör sınıfının tanımını değiştir"
+
+#: sql_help.c:4878
+msgid "change the definition of an operator family"
+msgstr "operatör ailesinin tanımını değiştir"
+
+#: sql_help.c:4884
+msgid "change the definition of a row level security policy"
+msgstr "satır seviyesi güvenlik ilkesi tanımını değiştir"
+
+#: sql_help.c:4890
+msgid "change the definition of a procedure"
+msgstr "prosedür tanımını değiştir"
+
+#: sql_help.c:4896
+msgid "change the definition of a publication"
+msgstr "yayın tanımını değiştir"
+
+#: sql_help.c:4902 sql_help.c:5004
+msgid "change a database role"
+msgstr "veritabanı dolünü değiştir"
+
+#: sql_help.c:4908
+msgid "change the definition of a routine"
+msgstr "yordam (routine) tanımını değiştir"
+
+#: sql_help.c:4914
+msgid "change the definition of a rule"
+msgstr "kural tanımını değiştir"
+
+#: sql_help.c:4920
+msgid "change the definition of a schema"
+msgstr "şema tanımını değiştir"
+
+#: sql_help.c:4926
+msgid "change the definition of a sequence generator"
+msgstr "sequence üretecinin tanımını değiştir"
+
+#: sql_help.c:4932
+msgid "change the definition of a foreign server"
+msgstr "foreign server tanımını değiştir"
+
+#: sql_help.c:4938
+msgid "change the definition of an extended statistics object"
+msgstr "genişletilmiş istatistik nesnesinin tanımını değiştir"
+
+#: sql_help.c:4944
+msgid "change the definition of a subscription"
+msgstr "abonelik tanımını değiştir"
+
+#: sql_help.c:4950
+msgid "change a server configuration parameter"
+msgstr "bir sunucu yapılandırma parametresini değiştir"
+
+#: sql_help.c:4956
+msgid "change the definition of a table"
+msgstr "tablonun tanımını değiştir"
+
+#: sql_help.c:4962
+msgid "change the definition of a tablespace"
+msgstr "tablespace tanımını değiştir"
+
+#: sql_help.c:4968
+msgid "change the definition of a text search configuration"
+msgstr "metin arama yapılandırmasının tanımını değiştir"
+
+#: sql_help.c:4974
+msgid "change the definition of a text search dictionary"
+msgstr "metin arama sözlüğünün tanımını değiştir"
+
+#: sql_help.c:4980
+msgid "change the definition of a text search parser"
+msgstr "metin arama ayrıştırıcısının tanımını değiştir"
+
+#: sql_help.c:4986
+msgid "change the definition of a text search template"
+msgstr "metin arama şablonunun tanımını değiştir"
+
+#: sql_help.c:4992
+msgid "change the definition of a trigger"
+msgstr "trigger tanımını değiştir"
+
+#: sql_help.c:4998
+msgid "change the definition of a type"
+msgstr "type tanımını değiştir"
+
+#: sql_help.c:5010
+msgid "change the definition of a user mapping"
+msgstr "kullanıcı haritalama tanımını değiştir"
+
+#: sql_help.c:5016
+msgid "change the definition of a view"
+msgstr "view tanımını değiştir"
+
+#: sql_help.c:5022
+msgid "collect statistics about a database"
+msgstr "database hakkında istatistikleri topla"
+
+#: sql_help.c:5028 sql_help.c:5820
+msgid "start a transaction block"
+msgstr "transaction bloğunu başlat"
+
+#: sql_help.c:5034
+msgid "invoke a procedure"
+msgstr "bir prosedürü çağır"
+
+#: sql_help.c:5040
+msgid "force a write-ahead log checkpoint"
+msgstr "write-ahead log checkpoint'i gerçekleştir"
+
+#: sql_help.c:5046
+msgid "close a cursor"
+msgstr "cursor'u kapat"
+
+#: sql_help.c:5052
+msgid "cluster a table according to an index"
+msgstr "indexe dayanarak tabloyu cluster işlemine tabi tut"
+
+#: sql_help.c:5058
+msgid "define or change the comment of an object"
+msgstr "Nesne yorumunu tanımla ya da değiştir"
+
+#: sql_help.c:5064 sql_help.c:5622
+msgid "commit the current transaction"
+msgstr "geçerli transaction'u commit et"
+
+#: sql_help.c:5070
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "daha önce two-phase commit için hazırlanmış transaction'u commit et"
+
+#: sql_help.c:5076
+msgid "copy data between a file and a table"
+msgstr "dosya ile veritabanı tablosu arasında veriyi transfer et"
+
+#: sql_help.c:5082
+msgid "define a new access method"
+msgstr "yeni erişim yöntemi tanımla"
+
+#: sql_help.c:5088
+msgid "define a new aggregate function"
+msgstr "yeni aggregate fonksiyonunu tanımla"
+
+#: sql_help.c:5094
+msgid "define a new cast"
+msgstr "yeni cast tanımla"
+
+#: sql_help.c:5100
+msgid "define a new collation"
+msgstr "yeni karşılaştırma (collation) tanımla"
+
+#: sql_help.c:5106
+msgid "define a new encoding conversion"
+msgstr "yeni kodlama dönüşümü tanımla"
+
+#: sql_help.c:5112
+msgid "create a new database"
+msgstr "yeni veritabanı oluştur"
+
+#: sql_help.c:5118
+msgid "define a new domain"
+msgstr "yeni domaın tanımla"
+
+#: sql_help.c:5124
+msgid "define a new event trigger"
+msgstr "yeni olay tetikleyici tanımla"
+
+#: sql_help.c:5130
+msgid "install an extension"
+msgstr "bir uzantı kur"
+
+#: sql_help.c:5136
+msgid "define a new foreign-data wrapper"
+msgstr "yeni foreign-data wrapper tanımla"
+
+#: sql_help.c:5142
+msgid "define a new foreign table"
+msgstr "yeni uzak (foreign) tablo tanımla"
+
+#: sql_help.c:5148
+msgid "define a new function"
+msgstr "yeni fonksiyonu tanımla"
+
+#: sql_help.c:5154 sql_help.c:5214 sql_help.c:5316
+msgid "define a new database role"
+msgstr "yeni veritabanı rolü tanımla"
+
+#: sql_help.c:5160
+msgid "define a new index"
+msgstr "yeni indeks tanımla"
+
+#: sql_help.c:5166
+msgid "define a new procedural language"
+msgstr "yeni yordamsal dil tanımla"
+
+#: sql_help.c:5172
+msgid "define a new materialized view"
+msgstr "yeni maddileştirilmiş görünüm (materialized view) tanımla"
+
+#: sql_help.c:5178
+msgid "define a new operator"
+msgstr "yeni operator tanımla"
+
+#: sql_help.c:5184
+msgid "define a new operator class"
+msgstr "yeni operator class tanımla"
+
+#: sql_help.c:5190
+msgid "define a new operator family"
+msgstr "yeni operatör ailesini tanımla"
+
+#: sql_help.c:5196
+msgid "define a new row level security policy for a table"
+msgstr "bir tablo için yeni satır-seviyesi güvenlik ilkesi tanımla"
+
+#: sql_help.c:5202
+msgid "define a new procedure"
+msgstr "yeni bir prosedür tanımla"
+
+#: sql_help.c:5208
+msgid "define a new publication"
+msgstr "yeni bir yayın tanımla"
+
+#: sql_help.c:5220
+msgid "define a new rewrite rule"
+msgstr "yeni rewriter rule tanımla"
+
+#: sql_help.c:5226
+msgid "define a new schema"
+msgstr "yeni şema tanımla"
+
+#: sql_help.c:5232
+msgid "define a new sequence generator"
+msgstr "yeni sequence generator tanımla"
+
+#: sql_help.c:5238
+msgid "define a new foreign server"
+msgstr "yeni foreign sunucu tanımla"
+
+#: sql_help.c:5244
+msgid "define extended statistics"
+msgstr "genişletilmiş istatistikleri tanımla"
+
+#: sql_help.c:5250
+msgid "define a new subscription"
+msgstr "yeni abonelik tanımla"
+
+#: sql_help.c:5256
+msgid "define a new table"
+msgstr "yeni tablo tanımla"
+
+#: sql_help.c:5262 sql_help.c:5778
+msgid "define a new table from the results of a query"
+msgstr "sorgu sonuçlarından yeni tablo tanımla"
+
+#: sql_help.c:5268
+msgid "define a new tablespace"
+msgstr "yeni tablespace tanımla"
+
+#: sql_help.c:5274
+msgid "define a new text search configuration"
+msgstr "yeni metin arama yapılandırması tanımla"
+
+#: sql_help.c:5280
+msgid "define a new text search dictionary"
+msgstr "yeni metin arama sözlüğü tanımla"
+
+#: sql_help.c:5286
+msgid "define a new text search parser"
+msgstr "yeni metin arama ayrıştırıcısı tanımla"
+
+#: sql_help.c:5292
+msgid "define a new text search template"
+msgstr "yeni metin arama şablonu tanımla"
+
+#: sql_help.c:5298
+msgid "define a new transform"
+msgstr "yeni bir dönüşüm (transform) tanımla"
+
+#: sql_help.c:5304
+msgid "define a new trigger"
+msgstr "yeni trigger tanımla"
+
+#: sql_help.c:5310
+msgid "define a new data type"
+msgstr "yeni veri tipi tanımla"
+
+#: sql_help.c:5322
+msgid "define a new mapping of a user to a foreign server"
+msgstr "bir foreign sunucuya yeni kullanıcı haritalamasını tanımla"
+
+#: sql_help.c:5328
+msgid "define a new view"
+msgstr "yeni vew tanımla"
+
+#: sql_help.c:5334
+msgid "deallocate a prepared statement"
+msgstr "deallocate a prepared statement"
+
+#: sql_help.c:5340
+msgid "define a cursor"
+msgstr "cursor tanımla"
+
+#: sql_help.c:5346
+msgid "delete rows of a table"
+msgstr "tablodan satırları sil"
+
+#: sql_help.c:5352
+msgid "discard session state"
+msgstr "oturum bilgileri unut"
+
+#: sql_help.c:5358
+msgid "execute an anonymous code block"
+msgstr "bir anonim kod bloğu çalıştır"
+
+#: sql_help.c:5364
+msgid "remove an access method"
+msgstr "bir erişim yöntemini kaldır"
+
+#: sql_help.c:5370
+msgid "remove an aggregate function"
+msgstr "aggregate function'u kaldır"
+
+#: sql_help.c:5376
+msgid "remove a cast"
+msgstr "cast kaldır"
+
+#: sql_help.c:5382
+msgid "remove a collation"
+msgstr "karşılaştırma (collation) kaldır"
+
+#: sql_help.c:5388
+msgid "remove a conversion"
+msgstr "conversion kaldır"
+
+#: sql_help.c:5394
+msgid "remove a database"
+msgstr "veritabanını kaldır"
+
+#: sql_help.c:5400
+msgid "remove a domain"
+msgstr "domain kaldır"
+
+#: sql_help.c:5406
+msgid "remove an event trigger"
+msgstr "olay tetikleyici kaldır"
+
+#: sql_help.c:5412
+msgid "remove an extension"
+msgstr "uzantı kaldır"
+
+#: sql_help.c:5418
+msgid "remove a foreign-data wrapper"
+msgstr "foreign-data wrapper'ını kaldır"
+
+#: sql_help.c:5424
+msgid "remove a foreign table"
+msgstr "uzak (foreign) tablo kaldır"
+
+#: sql_help.c:5430
+msgid "remove a function"
+msgstr "function kaldır"
+
+#: sql_help.c:5436 sql_help.c:5502 sql_help.c:5604
+msgid "remove a database role"
+msgstr "veritabanı rolünü kaldır"
+
+#: sql_help.c:5442
+msgid "remove an index"
+msgstr "indeks kaldır"
+
+#: sql_help.c:5448
+msgid "remove a procedural language"
+msgstr "yordamsal dili kaldır"
+
+#: sql_help.c:5454
+msgid "remove a materialized view"
+msgstr "maddileştirilmiş görünüm (materialized view) kaldır"
+
+#: sql_help.c:5460
+msgid "remove an operator"
+msgstr "opeartor kaldır"
+
+#: sql_help.c:5466
+msgid "remove an operator class"
+msgstr "operator class kaldır"
+
+#: sql_help.c:5472
+msgid "remove an operator family"
+msgstr "opeartör ailesini kaldır"
+
+#: sql_help.c:5478
+msgid "remove database objects owned by a database role"
+msgstr "veritabanı rolüne ait veritabanı nesneleri kaldır"
+
+#: sql_help.c:5484
+msgid "remove a row level security policy from a table"
+msgstr "bir tablodan satır-seviyesi güvenlik politikası kaldır"
+
+#: sql_help.c:5490
+msgid "remove a procedure"
+msgstr "bir prosedür kaldır"
+
+#: sql_help.c:5496
+msgid "remove a publication"
+msgstr "yayın kaldır"
+
+#: sql_help.c:5508
+msgid "remove a routine"
+msgstr "yordam (routine) kaldır"
+
+#: sql_help.c:5514
+msgid "remove a rewrite rule"
+msgstr "rewrite rule kaldır"
+
+#: sql_help.c:5520
+msgid "remove a schema"
+msgstr "şema kaldır"
+
+#: sql_help.c:5526
+msgid "remove a sequence"
+msgstr "sequence kaldır"
+
+#: sql_help.c:5532
+msgid "remove a foreign server descriptor"
+msgstr "foreign sunucu tanımını kaldır"
+
+#: sql_help.c:5538
+msgid "remove extended statistics"
+msgstr "genişletilmiş istatistikleri kaldır"
+
+#: sql_help.c:5544
+msgid "remove a subscription"
+msgstr "abonelik kaldır"
+
+#: sql_help.c:5550
+msgid "remove a table"
+msgstr "tablo kaldır"
+
+#: sql_help.c:5556
+msgid "remove a tablespace"
+msgstr "tablespace kaldır"
+
+#: sql_help.c:5562
+msgid "remove a text search configuration"
+msgstr "metin arama yapılandırmasını kaldır"
+
+#: sql_help.c:5568
+msgid "remove a text search dictionary"
+msgstr "biri metin arama sözlüğünü kaldır"
+
+#: sql_help.c:5574
+msgid "remove a text search parser"
+msgstr "bir metin arama ayrıştırıcısını kaldır"
+
+#: sql_help.c:5580
+msgid "remove a text search template"
+msgstr "bir metin arama şablonunu kaldır"
+
+#: sql_help.c:5586
+msgid "remove a transform"
+msgstr "dönüşüm (transform) kaldır"
+
+#: sql_help.c:5592
+msgid "remove a trigger"
+msgstr "trigger kaldır"
+
+#: sql_help.c:5598
+msgid "remove a data type"
+msgstr "veri tipi kaldır"
+
+#: sql_help.c:5610
+msgid "remove a user mapping for a foreign server"
+msgstr "bir foreign sunucu için kullanıcı haritalamasını kaldır"
+
+#: sql_help.c:5616
+msgid "remove a view"
+msgstr "view kaldır"
+
+#: sql_help.c:5628
+msgid "execute a prepared statement"
+msgstr "hazırlanmış komutu çalıştır"
+
+#: sql_help.c:5634
+msgid "show the execution plan of a statement"
+msgstr "sorgunun execution planını göster"
+
+#: sql_help.c:5640
+msgid "retrieve rows from a query using a cursor"
+msgstr "cursor kullanarak sorgunun sonucundan satırları getir"
+
+#: sql_help.c:5646
+msgid "define access privileges"
+msgstr "erişim haklarını tanımla"
+
+#: sql_help.c:5652
+msgid "import table definitions from a foreign server"
+msgstr "uzak sunucudan (foreign server) tablo tanımlarını al"
+
+#: sql_help.c:5658
+msgid "create new rows in a table"
+msgstr "tabloda yeni satırları ekliyor"
+
+#: sql_help.c:5664
+msgid "listen for a notification"
+msgstr "bildiri bekleme durumuna geç"
+
+#: sql_help.c:5670
+msgid "load a shared library file"
+msgstr "shared library dosyası yükle"
+
+#: sql_help.c:5676
+msgid "lock a table"
+msgstr "tabloyu kilitle"
+
+#: sql_help.c:5682
+msgid "position a cursor"
+msgstr "cursor'u yereştir"
+
+#: sql_help.c:5688
+msgid "generate a notification"
+msgstr "bildiri üret"
+
+#: sql_help.c:5694
+msgid "prepare a statement for execution"
+msgstr "çalıştırmak için sorguyu hazırla"
+
+#: sql_help.c:5700
+msgid "prepare the current transaction for two-phase commit"
+msgstr "geçerli transaction'u two-phase commit için hazırla"
+
+#: sql_help.c:5706
+msgid "change the ownership of database objects owned by a database role"
+msgstr "veritabanı rolünün sahip olduğu nesnelerinin sahipliğini değiştir"
+
+#: sql_help.c:5712
+msgid "replace the contents of a materialized view"
+msgstr "bir maddileştirilmiş görünümün (materialized view) içeriğini değiştir"
+
+#: sql_help.c:5718
+msgid "rebuild indexes"
+msgstr "indeksleri yeniden oluştur"
+
+#: sql_help.c:5724
+msgid "destroy a previously defined savepoint"
+msgstr "önceki tanımlanmış savepoint'i kaldır"
+
+#: sql_help.c:5730
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "çalıştırma zamanı parametresini öntanımlı değerine getir"
+
+#: sql_help.c:5736
+msgid "remove access privileges"
+msgstr "erişim hakkını kaldır"
+
+#: sql_help.c:5748
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "daha önce two-phase commit için hazırlanmış transaction'u iptal et"
+
+#: sql_help.c:5754
+msgid "roll back to a savepoint"
+msgstr "savepoint'a rollback"
+
+#: sql_help.c:5760
+msgid "define a new savepoint within the current transaction"
+msgstr "geerli transaction içinde savepoint tanımla"
+
+#: sql_help.c:5766
+msgid "define or change a security label applied to an object"
+msgstr "bir nesneye uygulanan güvenlik etiketini tanımla ya da değiştir"
+
+#: sql_help.c:5772 sql_help.c:5826 sql_help.c:5862
+msgid "retrieve rows from a table or view"
+msgstr "tablo ya da view'dan satırları getir"
+
+#: sql_help.c:5784
+msgid "change a run-time parameter"
+msgstr "çalışma zamanı parametresini değiştir"
+
+#: sql_help.c:5790
+msgid "set constraint check timing for the current transaction"
+msgstr "geçerli işlem (transaction) için kısıtlama doğrulama zamanlamasını belirle"
+
+#: sql_help.c:5796
+msgid "set the current user identifier of the current session"
+msgstr "geçerli oturumun geçerli kullanıcısını tanımla"
+
+#: sql_help.c:5802
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "ilk oturum ve geçerli oturum için kullanıcı tanımla"
+
+#: sql_help.c:5808
+msgid "set the characteristics of the current transaction"
+msgstr "geçerli transcation'ın karakteristiklerini ayarla"
+
+#: sql_help.c:5814
+msgid "show the value of a run-time parameter"
+msgstr "çalıştırma zaman parametresinın değerini göster"
+
+#: sql_help.c:5832
+msgid "empty a table or set of tables"
+msgstr "bir veya birden fazla tabloyu kısalt"
+
+#: sql_help.c:5838
+msgid "stop listening for a notification"
+msgstr "bildiriyi beklemeyi durdur"
+
+#: sql_help.c:5844
+msgid "update rows of a table"
+msgstr "tablodaki satırları güncelle"
+
+#: sql_help.c:5850
+msgid "garbage-collect and optionally analyze a database"
+msgstr "Veritabanındaki çöpleri-toparla ve veritabanını (tercihe başlı) analiz et"
+
+#: sql_help.c:5856
+msgid "compute a set of rows"
+msgstr "compute a set of rows"
+
+#: startup.c:216
+#, fuzzy, c-format
+#| msgid "%s: -1 can only be used in non-interactive mode\n"
+msgid "-1 can only be used in non-interactive mode"
+msgstr "%s: -1 sadece interaktif olmayan modda kullanılabilir\n"
+
+#: startup.c:303
+#, c-format
+msgid "could not connect to server: %s"
+msgstr "sunucuya bağlanamadı: %s"
+
+#: startup.c:331
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "\"%s\" log dosyası açılamadı: %m"
+
+#: startup.c:442
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"Yardım için \"help\" yazınız.\n"
+"\n"
+
+#: startup.c:592
+#, fuzzy, c-format
+#| msgid "%s: could not set printing parameter \"%s\"\n"
+msgid "could not set printing parameter \"%s\""
+msgstr "%s: \"%s\" yazdırma parametrlesi ayarlanamıyor\n"
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Daha fazla bilgi için \"%s --help\" yazın.\n"
+
+#: startup.c:714
+#, fuzzy, c-format
+#| msgid "%s: warning: extra command-line argument \"%s\" ignored\n"
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "%s: uyarı: \"%s\" fazla argümanı atlanmıştır\n"
+
+#: startup.c:763
+#, fuzzy, c-format
+#| msgid "%s: could not find own program executable\n"
+msgid "could not find own program executable"
+msgstr "%s: çalıştırılabilir dosya bulunamadı\n"
+
+#: tab-complete.c:4380
+#, fuzzy, c-format
+#| msgid ""
+#| "tab completion query failed: %s\n"
+#| "Query was:\n"
+#| "%s\n"
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"sekme tamamlama sorgusu başarısız oldu: %s\n"
+"Sorgu şudur: \n"
+"%s\n"
+
+#: variables.c:141
+#, fuzzy, c-format
+#| msgid "unrecognized value \"%s\" for \"%s\": Boolean expected\n"
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "\"%2$s\" için tanınmayan değer \"%1$s\": Boolean bekleniyor\n"
+
+#: variables.c:178
+#, fuzzy, c-format
+#| msgid "invalid value \"%s\" for \"%s\": integer expected\n"
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "\"%2$s\" için geçersiz değer \"%1$s\": tamsayı bekleniyor\n"
+
+#: variables.c:226
+#, fuzzy, c-format
+#| msgid "invalid variable name: \"%s\"\n"
+msgid "invalid variable name: \"%s\""
+msgstr "geçersiz değişken adı: \"%s\"\n"
+
+#: variables.c:395
+#, fuzzy, c-format
+#| msgid ""
+#| "unrecognized value \"%s\" for \"%s\"\n"
+#| "Available values are: %s.\n"
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"\"%2$s\" için tanınmayan değer \"%1$s\"\n"
+"Mevcut değerler: %3$s.\n"
+
+#~ msgid "(binary compatible)"
+#~ msgstr "(ikili (binary) uyumlu)"
+
+#~ msgid "%s: Warning: The -u option is deprecated. Use -U.\n"
+#~ msgstr "%s: Uyarı: -u parametresi kullanımdan kalkmıştır. -U kullanın.\n"
+
+#~ msgid "ALTER VIEW name RENAME TO newname"
+#~ msgstr "ALTER VIEW view_adı RENAME TO yeni_ad"
+
+#~ msgid " \"%s\""
+#~ msgstr " \"%s\""
+
+#~ msgid "?%c? \"%s.%s\""
+#~ msgstr "?%c? \"%s.%s\""
+
+#~ msgid "Access privileges for database \"%s\""
+#~ msgstr "\"%s\" veritabanının erişim hakları"
+
+#~ msgid ""
+#~ "WARNING: You are connected to a server with major version %d.%d,\n"
+#~ "but your %s client is major version %d.%d. Some backslash commands,\n"
+#~ "such as \\d, might not work properly.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "UYARI: Üst sürümü %d.%d olan sunucuya bağlısınız,\n"
+#~ "ancak %s istemcinizin sürümü %d.%d. \\d gibi bazı backslash ile başlayan komutlar düzgün çalışmayabilir\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Welcome to %s %s, the PostgreSQL interactive terminal.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "PostgreSQL etkilişimli arayüzü %s %s.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Welcome to %s %s (server %s), the PostgreSQL interactive terminal.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "PostgreSQL etkilişimli arayüzü %s %s(server %s).\n"
+#~ "\n"
+
+#~ msgid "Copy, Large Object\n"
+#~ msgstr "Copy, Large Object\n"
+
+#~ msgid " \\z [PATTERN] list table, view, and sequence access privileges (same as \\dp)\n"
+#~ msgstr " \\z [PATTERN] tablo, view, ve sequence erişim haklarını listele (\\dp ile aynı)\n"
+
+#~ msgid " \\l list all databases (add \"+\" for more detail)\n"
+#~ msgstr " \\l tüm veritabanlarını listele (daha fazla ayrıntı için \"+\" ekleyin)\n"
+
+#~ msgid " \\dT [PATTERN] list data types (add \"+\" for more detail)\n"
+#~ msgstr " \\dT [PATTERN] veri tipleri listele (daha fazla ayrıntı için \"+\" ekleyin)\n"
+
+#~ msgid " \\dn [PATTERN] list schemas (add \"+\" for more detail)\n"
+#~ msgstr " \\dn [PATTERN] şemaları göster (daha fazla ayrıntı için \"+\" ekleyin)\n"
+
+#~ msgid " \\dFp [PATTERN] list text search parsers (add \"+\" for more detail)\n"
+#~ msgstr " \\dFp [PATTERN] metin arama ayrıştırıcılarını listele (daha fazla ayrıntı için \"+\" ekleyin)\n"
+
+#~ msgid " \\dFd [PATTERN] list text search dictionaries (add \"+\" for more detail)\n"
+#~ msgstr " \\dFd [PATTERN] metin arama sözlüklerini listele (daha fazla ayrıntı için \"+\" ekleyin)\n"
+
+#~ msgid " \\df [PATTERN] list functions (add \"+\" for more detail)\n"
+#~ msgstr " \\df [PATTERN] fonksiyonları göster (daha fazla ayrıntı için \"+\" ekleyin)\n"
+
+#~ msgid " \\db [PATTERN] list tablespaces (add \"+\" for more detail)\n"
+#~ msgstr " \\db [PATTERN] tablespaceleri listele (daha fazla ayrıntı için \"+\" ekleyin)\n"
+
+#~ msgid ""
+#~ " \\d{t|i|s|v|S} [PATTERN] (add \"+\" for more detail)\n"
+#~ " list tables/indexes/sequences/views/system tables\n"
+#~ msgstr ""
+#~ " \\d{t|i|s|v|S} [PATTERN] (daha fazla ayrıntı için \"+\" ekleyin)\n"
+#~ " tablolar/indeksler/sequenceler/viewlar/system tablolarını listele\n"
+
+#~ msgid " -W force password prompt (should happen automatically)"
+#~ msgstr " -W şifre sorulmasını sağla (otomatik olarak olmalı)"
+
+#~ msgid ""
+#~ "\n"
+#~ "Connection options:"
+#~ msgstr ""
+#~ "\n"
+#~ "Bağlantı tercihleri:"
+
+#~ msgid " -t print rows only (-P tuples_only)"
+#~ msgstr " -t sadece satırları göster (-P tuples_only)"
+
+#~ msgid " --version output version information, then exit"
+#~ msgstr " --version sürüm bilgisini göster ve çık"
+
+#~ msgid " --help show this help, then exit"
+#~ msgstr " --help yardım metnini göster ve çık"
+
+#~ msgid " -1 (\"one\") execute command file as a single transaction"
+#~ msgstr " -1 (rakamla bir) komutu tek bir transaction olarak işle"
+
+#~ msgid "General options:"
+#~ msgstr "Genel tercihler:"
+
+#~ msgid "Usage:"
+#~ msgstr "Kullanımı:"
+
+#~ msgid "(1 row)"
+#~ msgid_plural "(%lu rows)"
+#~ msgstr[0] "(%lu satır)"
+#~ msgstr[1] "(1 satır)"
+
+#~ msgid " \"%s\" IN %s %s"
+#~ msgstr " \"%s\", %s %s içinde"
+
+#~ msgid ""
+#~ "VALUES ( expression [, ...] ) [, ...]\n"
+#~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n"
+#~ " [ LIMIT { count | ALL } ]\n"
+#~ " [ OFFSET start [ ROW | ROWS ] ]\n"
+#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]"
+#~ msgstr ""
+#~ "VALUES ( expression [, ...] ) [, ...]\n"
+#~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n"
+#~ " [ LIMIT { count | ALL } ]\n"
+#~ " [ OFFSET start [ ROW | ROWS ] ]\n"
+#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]"
+
+#~ msgid ""
+#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n"
+#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]"
+#~ msgstr ""
+#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n"
+#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]"
+
+#~ msgid ""
+#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+#~ " SET { column = { expression | DEFAULT } |\n"
+#~ " ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n"
+#~ " [ FROM fromlist ]\n"
+#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
+#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
+#~ msgstr ""
+#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n"
+#~ " SET { column = { expression | DEFAULT } |\n"
+#~ " ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n"
+#~ " [ FROM fromlist ]\n"
+#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
+#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
+
+#~ msgid "UNLISTEN { name | * }"
+#~ msgstr "UNLISTEN { name | * }"
+
+#~ msgid ""
+#~ "TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n"
+#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
+#~ msgstr ""
+#~ "TRUNCATE [ TABLE ] [ ONLY ] ad [, ... ]\n"
+#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]"
+
+#~ msgid ""
+#~ "START TRANSACTION [ transaction_mode [, ...] ]\n"
+#~ "\n"
+#~ "where transaction_mode is one of:\n"
+#~ "\n"
+#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+#~ " READ WRITE | READ ONLY"
+#~ msgstr ""
+#~ "START TRANSACTION [ transaction_mode [, ...] ]\n"
+#~ "\n"
+#~ "transaction_mode aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+#~ " READ WRITE | READ ONLY"
+
+#~ msgid ""
+#~ "SHOW name\n"
+#~ "SHOW ALL"
+#~ msgstr ""
+#~ "SHOW name\n"
+#~ "SHOW ALL"
+
+#~ msgid ""
+#~ "SET TRANSACTION transaction_mode [, ...]\n"
+#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n"
+#~ "\n"
+#~ "where transaction_mode is one of:\n"
+#~ "\n"
+#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+#~ " READ WRITE | READ ONLY"
+#~ msgstr ""
+#~ "SET TRANSACTION transaction_mode [, ...]\n"
+#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n"
+#~ "\n"
+#~ "transaction_mode aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+#~ " READ WRITE | READ ONLY"
+
+#~ msgid ""
+#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n"
+#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n"
+#~ "RESET SESSION AUTHORIZATION"
+#~ msgstr ""
+#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION kullanıcı_adı\n"
+#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n"
+#~ "RESET SESSION AUTHORIZATION"
+
+#~ msgid ""
+#~ "SET [ SESSION | LOCAL ] ROLE rolename\n"
+#~ "SET [ SESSION | LOCAL ] ROLE NONE\n"
+#~ "RESET ROLE"
+#~ msgstr ""
+#~ "SET [ SESSION | LOCAL ] ROLE rol_adı\n"
+#~ "SET [ SESSION | LOCAL ] ROLE NONE\n"
+#~ "RESET ROLE"
+
+#~ msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }"
+#~ msgstr "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }"
+
+#~ msgid ""
+#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }\n"
+#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }"
+#~ msgstr ""
+#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }\n"
+#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }"
+
+#~ msgid ""
+#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n"
+#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n"
+#~ " * | expression [ [ AS ] output_name ] [, ...]\n"
+#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n"
+#~ " [ FROM from_item [, ...] ]\n"
+#~ " [ WHERE condition ]\n"
+#~ " [ GROUP BY expression [, ...] ]\n"
+#~ " [ HAVING condition [, ...] ]\n"
+#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n"
+#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n"
+#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+#~ " [ LIMIT { count | ALL } ]\n"
+#~ " [ OFFSET start [ ROW | ROWS ] ]\n"
+#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n"
+#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]"
+#~ msgstr ""
+#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n"
+#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n"
+#~ " * | expression [ [ AS ] output_name ] [, ...]\n"
+#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n"
+#~ " [ FROM from_item [, ...] ]\n"
+#~ " [ WHERE condition ]\n"
+#~ " [ GROUP BY expression [, ...] ]\n"
+#~ " [ HAVING condition [, ...] ]\n"
+#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n"
+#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n"
+#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+#~ " [ LIMIT { count | ALL } ]\n"
+#~ " [ OFFSET start [ ROW | ROWS ] ]\n"
+#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n"
+#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]"
+
+#~ msgid ""
+#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n"
+#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n"
+#~ " * | expression [ [ AS ] output_name ] [, ...]\n"
+#~ " [ FROM from_item [, ...] ]\n"
+#~ " [ WHERE condition ]\n"
+#~ " [ GROUP BY expression [, ...] ]\n"
+#~ " [ HAVING condition [, ...] ]\n"
+#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n"
+#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n"
+#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+#~ " [ LIMIT { count | ALL } ]\n"
+#~ " [ OFFSET start [ ROW | ROWS ] ]\n"
+#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n"
+#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n"
+#~ "\n"
+#~ "where from_item can be one of:\n"
+#~ "\n"
+#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n"
+#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n"
+#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n"
+#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]\n"
+#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n"
+#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]\n"
+#~ "\n"
+#~ "and with_query is:\n"
+#~ "\n"
+#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n"
+#~ "\n"
+#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }"
+#~ msgstr ""
+#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n"
+#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n"
+#~ " * | expression [ [ AS ] output_name ] [, ...]\n"
+#~ " [ FROM from_item [, ...] ]\n"
+#~ " [ WHERE condition ]\n"
+#~ " [ GROUP BY expression [, ...] ]\n"
+#~ " [ HAVING condition [, ...] ]\n"
+#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n"
+#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n"
+#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+#~ " [ LIMIT { count | ALL } ]\n"
+#~ " [ OFFSET start [ ROW | ROWS ] ]\n"
+#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n"
+#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n"
+#~ "\n"
+#~ "where from_item can be one of:\n"
+#~ "\n"
+#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n"
+#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n"
+#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n"
+#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]\n"
+#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n"
+#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]\n"
+#~ "\n"
+#~ "and with_query is:\n"
+#~ "\n"
+#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n"
+#~ "\n"
+#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }"
+
+#~ msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name"
+#~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_adı"
+
+#~ msgid "ROLLBACK PREPARED transaction_id"
+#~ msgstr "ROLLBACK PREPARED transaction_id"
+
+#~ msgid "ROLLBACK [ WORK | TRANSACTION ]"
+#~ msgstr "ROLLBACK [ WORK | TRANSACTION ]"
+
+#~ msgid ""
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON [ TABLE ] tablename [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n"
+#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n"
+#~ " ON [ TABLE ] tablename [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { USAGE | SELECT | UPDATE }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SEQUENCE sequencename [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON DATABASE dbname [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN SERVER servername [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON LANGUAGE langname [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SCHEMA schemaname [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { CREATE | ALL [ PRIVILEGES ] }\n"
+#~ " ON TABLESPACE tablespacename [, ...]\n"
+#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ ADMIN OPTION FOR ]\n"
+#~ " role [, ...] FROM rolename [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]"
+#~ msgstr ""
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON [ TABLE ] tablo adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( kolon [, ...] )\n"
+#~ " [,...] | ALL [ PRIVILEGES ] ( kolon [, ...] ) }\n"
+#~ " ON [ TABLE ] tablo adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { USAGE | SELECT | UPDATE }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SEQUENCE sequence adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON DATABASE veritabanı adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN DATA WRAPPER fdw adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN SERVER sunucu adu [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FUNCTION fonksiyon adı ( [ [ argüman modu ] [ argüman adı ] argüman tipi [, ...] ] ) [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON LANGUAGE dil adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SCHEMA şema adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ GRANT OPTION FOR ]\n"
+#~ " { CREATE | ALL [ PRIVILEGES ] }\n"
+#~ " ON TABLESPACE tablespace adı [, ...]\n"
+#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]\n"
+#~ "\n"
+#~ "REVOKE [ ADMIN OPTION FOR ]\n"
+#~ " role [, ...] FROM rol adı [, ...]\n"
+#~ " [ CASCADE | RESTRICT ]"
+
+#~ msgid "RELEASE [ SAVEPOINT ] savepoint_name"
+#~ msgstr "RELEASE [ SAVEPOINT ] savepoint_adı"
+
+#~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]"
+#~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } adı [ FORCE ]"
+
+#~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role"
+#~ msgstr "REASSIGN OWNED BY eski_rol [, ...] TO yeni_rol"
+
+#~ msgid "PREPARE TRANSACTION transaction_id"
+#~ msgstr "PREPARE TRANSACTION transaction_id"
+
+#~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement"
+#~ msgstr "PREPARE adı [ ( veri_tipi [, ...] ) ] AS ifade"
+
+#~ msgid "NOTIFY name"
+#~ msgstr "NOTIFY ad"
+
+#~ msgid "MOVE [ direction { FROM | IN } ] cursorname"
+#~ msgstr "MOVE [ direction { FROM | IN } ] cursor_adı"
+
+#~ msgid ""
+#~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n"
+#~ "\n"
+#~ "where lockmode is one of:\n"
+#~ "\n"
+#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
+#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE"
+#~ msgstr ""
+#~ "LOCK [ TABLE ] [ ONLY ] ad [, ...] [ IN kilit modu MODE ] [ NOWAIT ]\n"
+#~ "\n"
+#~ "kilit modu aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
+#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE"
+
+#~ msgid "LOAD 'filename'"
+#~ msgstr "LOAD 'dosya adı'"
+
+#~ msgid "LISTEN name"
+#~ msgstr "LISTEN ad"
+
+#~ msgid ""
+#~ "INSERT INTO table [ ( column [, ...] ) ]\n"
+#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n"
+#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
+#~ msgstr ""
+#~ "IINSERT INTO table [ ( column [, ...] ) ]\n"
+#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n"
+#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
+
+#~ msgid ""
+#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON [ TABLE ] tablename [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n"
+#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n"
+#~ " ON [ TABLE ] tablename [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { USAGE | SELECT | UPDATE }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SEQUENCE sequencename [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON DATABASE dbname [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN SERVER servername [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON LANGUAGE langname [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SCHEMA schemaname [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n"
+#~ " ON TABLESPACE tablespacename [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]"
+#~ msgstr ""
+#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON [ TABLE ] tablo adı [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( kolon [, ...] )\n"
+#~ " [,...] | ALL [ PRIVILEGES ] ( kolon [, ...] ) }\n"
+#~ " ON [ TABLE ] tablo adı [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { USAGE | SELECT | UPDATE }\n"
+#~ " [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SEQUENCE sequence adı [, ...]\n"
+#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON DATABASE veritabanı adı [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN DATA WRAPPER fdw adı [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FOREIGN SERVER sunucu adı [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
+#~ " ON FUNCTION fonksiyon adı ( [ [ argüman modu ] [ argüman adı ] argüman tipi [, ...] ] ) [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+#~ " ON LANGUAGE dil adı [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n"
+#~ " ON SCHEMA şema adı [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n"
+#~ " ON TABLESPACE tablespacename [, ...]\n"
+#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+#~ "\n"
+#~ "GRANT role [, ...] TO rol adı [, ...] [ WITH ADMIN OPTION ]"
+
+#~ msgid ""
+#~ "FETCH [ direction { FROM | IN } ] cursorname\n"
+#~ "\n"
+#~ "where direction can be empty or one of:\n"
+#~ "\n"
+#~ " NEXT\n"
+#~ " PRIOR\n"
+#~ " FIRST\n"
+#~ " LAST\n"
+#~ " ABSOLUTE count\n"
+#~ " RELATIVE count\n"
+#~ " count\n"
+#~ " ALL\n"
+#~ " FORWARD\n"
+#~ " FORWARD count\n"
+#~ " FORWARD ALL\n"
+#~ " BACKWARD\n"
+#~ " BACKWARD count\n"
+#~ " BACKWARD ALL"
+#~ msgstr ""
+#~ "FETCH [ direction { FROM | IN } ] cursorname\n"
+#~ "\n"
+#~ "direction boş ya da aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " NEXT\n"
+#~ " PRIOR\n"
+#~ " FIRST\n"
+#~ " LAST\n"
+#~ " ABSOLUTE count\n"
+#~ " RELATIVE count\n"
+#~ " count\n"
+#~ " ALL\n"
+#~ " FORWARD\n"
+#~ " FORWARD count\n"
+#~ " FORWARD ALL\n"
+#~ " BACKWARD\n"
+#~ " BACKWARD count\n"
+#~ " BACKWARD ALL"
+
+#~ msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement"
+#~ msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] ifade"
+
+#~ msgid "EXECUTE name [ ( parameter [, ...] ) ]"
+#~ msgstr "EXECUTE adı [ ( parameter [, ...] ) ]"
+
+#~ msgid "END [ WORK | TRANSACTION ]"
+#~ msgstr "END [ WORK | TRANSACTION ]"
+
+#~ msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP VIEW [ IF EXISTS ] view_adı [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP USER MAPPING [ IF EXISTS ] FOR { username | USER | CURRENT_USER | PUBLIC } SERVER servername"
+#~ msgstr "DROP USER MAPPING [ IF EXISTS ] FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC } SERVER sunucu adı"
+
+#~ msgid "DROP USER [ IF EXISTS ] name [, ...]"
+#~ msgstr "DROP USER [ IF EXISTS ] name [, ...]"
+
+#~ msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP TYPE [ IF EXISTS ] tip_adı [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP TRIGGER [ IF EXISTS ] trigger_adı ON tablo_adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP TEXT SEARCH PARSER [ IF EXISTS ] adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename"
+#~ msgstr "DROP TABLESPACE [ IF EXISTS ] tablespace_adı"
+
+#~ msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP TABLE [ IF EXISTS ] tablo_adı [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP SERVER [ IF EXISTS ] sunucu adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP SEQUENCE [ IF EXISTS ] sequence_adı [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP SCHEMA [ IF EXISTS ] şema_adı [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP RULE [ IF EXISTS ] rule_adı ON relation [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP ROLE [ IF EXISTS ] name [, ...]"
+#~ msgstr "DROP ROLE [ IF EXISTS ] name [, ...]"
+
+#~ msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP OPERATOR CLASS [ IF EXISTS ] ad USING index_method [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | NONE } ) [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | NONE } ) [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] dil_adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP INDEX [ IF EXISTS ] index_adı [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP GROUP [ IF EXISTS ] name [, ...]"
+#~ msgstr "DROP GROUP [ IF EXISTS ] name [, ...]"
+
+#~ msgid ""
+#~ "DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " [ CASCADE | RESTRICT ]"
+#~ msgstr ""
+#~ "DROP FUNCTION [ IF EXISTS ] fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] ad [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP DOMAIN [ IF EXISTS ] adı [, ...] [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP DATABASE [ IF EXISTS ] name"
+#~ msgstr "DROP DATABASE [ IF EXISTS ] veritabanı_adı"
+
+#~ msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP CONVERSION [ IF EXISTS ] conversion_adı [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]"
+
+#~ msgid "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | RESTRICT ]"
+#~ msgstr "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | RESTRICT ]"
+
+#~ msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }"
+#~ msgstr "DISCARD { ALL | PLANS | TEMPORARY | TEMP }"
+
+#~ msgid ""
+#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n"
+#~ " [ USING usinglist ]\n"
+#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
+#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
+#~ msgstr ""
+#~ "DELETE FROM [ ONLY ] tablo [ [ AS ] takma_adı ]\n"
+#~ " [ USING usinglist ]\n"
+#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n"
+#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]"
+
+#~ msgid ""
+#~ "DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n"
+#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR query"
+#~ msgstr ""
+#~ "DECLARE ad [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n"
+#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR sorgu"
+
+#~ msgid "DEALLOCATE [ PREPARE ] { name | ALL }"
+#~ msgstr "DEALLOCATE [ PREPARE ] { name | ALL }"
+
+#~ msgid ""
+#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]\n"
+#~ " AS query"
+#~ msgstr ""
+#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]\n"
+#~ " AS query"
+
+#~ msgid ""
+#~ "CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n"
+#~ " SERVER servername\n"
+#~ " [ OPTIONS ( option 'value' [ , ... ] ) ]"
+#~ msgstr ""
+#~ "CREATE USER MAPPING FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC }\n"
+#~ " SERVER sunucu adı\n"
+#~ " [ OPTIONS ( seçenek 'değer' [ , ... ] ) ]"
+
+#~ msgid ""
+#~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "where option can be:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT connlimit\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ " | IN ROLE rolename [, ...]\n"
+#~ " | IN GROUP rolename [, ...]\n"
+#~ " | ROLE rolename [, ...]\n"
+#~ " | ADMIN rolename [, ...]\n"
+#~ " | USER rolename [, ...]\n"
+#~ " | SYSID uid"
+#~ msgstr ""
+#~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "seçenek aşağıdakilerden birisi olabilir:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT connlimit\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ " | IN ROLE rolename [, ...]\n"
+#~ " | IN GROUP rolename [, ...]\n"
+#~ " | ROLE rolename [, ...]\n"
+#~ " | ADMIN rolename [, ...]\n"
+#~ " | USER rolename [, ...]\n"
+#~ " | SYSID uid"
+
+#~ msgid ""
+#~ "CREATE TYPE name AS\n"
+#~ " ( attribute_name data_type [, ... ] )\n"
+#~ "\n"
+#~ "CREATE TYPE name AS ENUM\n"
+#~ " ( 'label' [, ... ] )\n"
+#~ "\n"
+#~ "CREATE TYPE name (\n"
+#~ " INPUT = input_function,\n"
+#~ " OUTPUT = output_function\n"
+#~ " [ , RECEIVE = receive_function ]\n"
+#~ " [ , SEND = send_function ]\n"
+#~ " [ , TYPMOD_IN = type_modifier_input_function ]\n"
+#~ " [ , TYPMOD_OUT = type_modifier_output_function ]\n"
+#~ " [ , ANALYZE = analyze_function ]\n"
+#~ " [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n"
+#~ " [ , PASSEDBYVALUE ]\n"
+#~ " [ , ALIGNMENT = alignment ]\n"
+#~ " [ , STORAGE = storage ]\n"
+#~ " [ , LIKE = like_type ]\n"
+#~ " [ , CATEGORY = category ]\n"
+#~ " [ , PREFERRED = preferred ]\n"
+#~ " [ , DEFAULT = default ]\n"
+#~ " [ , ELEMENT = element ]\n"
+#~ " [ , DELIMITER = delimiter ]\n"
+#~ ")\n"
+#~ "\n"
+#~ "CREATE TYPE name"
+#~ msgstr ""
+#~ "CREATE TYPE ad AS\n"
+#~ " ( attribute_name veri tipi [, ... ] )\n"
+#~ "\n"
+#~ "CREATE TYPE ad AS ENUM\n"
+#~ " ( 'label' [, ... ] )\n"
+#~ "\n"
+#~ "CREATE TYPE ad (\n"
+#~ " INPUT = input_function,\n"
+#~ " OUTPUT = output_function\n"
+#~ " [ , RECEIVE = receive_function ]\n"
+#~ " [ , SEND = send_function ]\n"
+#~ " [ , TYPMOD_IN = type_modifier_input_function ]\n"
+#~ " [ , TYPMOD_OUT = type_modifier_output_function ]\n"
+#~ " [ , ANALYZE = analyze_function ]\n"
+#~ " [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n"
+#~ " [ , PASSEDBYVALUE ]\n"
+#~ " [ , ALIGNMENT = alignment ]\n"
+#~ " [ , STORAGE = storage ]\n"
+#~ " [ , LIKE = like_type ]\n"
+#~ " [ , CATEGORY = category ]\n"
+#~ " [ , PREFERRED = preferred ]\n"
+#~ " [ , DEFAULT = default ]\n"
+#~ " [ , ELEMENT = element ]\n"
+#~ " [ , DELIMITER = delimiter ]\n"
+#~ ")\n"
+#~ "\n"
+#~ "CREATE TYPE name"
+
+#~ msgid ""
+#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n"
+#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n"
+#~ " EXECUTE PROCEDURE funcname ( arguments )"
+#~ msgstr ""
+#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n"
+#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n"
+#~ " EXECUTE PROCEDURE funcname ( arguments )"
+
+#~ msgid ""
+#~ "CREATE TEXT SEARCH TEMPLATE name (\n"
+#~ " [ INIT = init_function , ]\n"
+#~ " LEXIZE = lexize_function\n"
+#~ ")"
+#~ msgstr ""
+#~ "CREATE TEXT SEARCH TEMPLATE ad (\n"
+#~ " [ INIT = init_function , ]\n"
+#~ " LEXIZE = lexize_function\n"
+#~ ")"
+
+#~ msgid ""
+#~ "CREATE TEXT SEARCH PARSER name (\n"
+#~ " START = start_function ,\n"
+#~ " GETTOKEN = gettoken_function ,\n"
+#~ " END = end_function ,\n"
+#~ " LEXTYPES = lextypes_function\n"
+#~ " [, HEADLINE = headline_function ]\n"
+#~ ")"
+#~ msgstr ""
+#~ "CREATE TEXT SEARCH PARSER name (\n"
+#~ " START = start_function ,\n"
+#~ " GETTOKEN = gettoken_function ,\n"
+#~ " END = end_function ,\n"
+#~ " LEXTYPES = lextypes_function\n"
+#~ " [, HEADLINE = headline_function ]\n"
+#~ ")"
+
+#~ msgid ""
+#~ "CREATE TEXT SEARCH DICTIONARY name (\n"
+#~ " TEMPLATE = template\n"
+#~ " [, option = value [, ... ]]\n"
+#~ ")"
+#~ msgstr ""
+#~ "CREATE TEXT SEARCH DICTIONARY ad (\n"
+#~ " TEMPLATE = şablon\n"
+#~ " [, option = value [, ... ]]\n"
+#~ ")"
+
+#~ msgid ""
+#~ "CREATE TEXT SEARCH CONFIGURATION name (\n"
+#~ " PARSER = parser_name |\n"
+#~ " COPY = source_config\n"
+#~ ")"
+#~ msgstr ""
+#~ "CREATE TEXT SEARCH CONFIGURATION name (\n"
+#~ " PARSER = parser_name |\n"
+#~ " COPY = source_config\n"
+#~ ")"
+
+#~ msgid "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'"
+#~ msgstr "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'"
+
+#~ msgid ""
+#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n"
+#~ " [ (column_name [, ...] ) ]\n"
+#~ " [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
+#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+#~ " [ TABLESPACE tablespace ]\n"
+#~ " AS query\n"
+#~ " [ WITH [ NO ] DATA ]"
+#~ msgstr ""
+#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo adı\n"
+#~ " [ (kolon adı [, ...] ) ]\n"
+#~ " [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
+#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+#~ " [ TABLESPACE tablespace ]\n"
+#~ " AS sorgu\n"
+#~ " [ WITH [ NO ] DATA ]"
+
+#~ msgid ""
+#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [\n"
+#~ " { column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ]\n"
+#~ " | table_constraint\n"
+#~ " | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES } ] ... }\n"
+#~ " [, ... ]\n"
+#~ "] )\n"
+#~ "[ INHERITS ( parent_table [, ... ] ) ]\n"
+#~ "[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
+#~ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+#~ "[ TABLESPACE tablespace ]\n"
+#~ "\n"
+#~ "where column_constraint is:\n"
+#~ "\n"
+#~ "[ CONSTRAINT constraint_name ]\n"
+#~ "{ NOT NULL | \n"
+#~ " NULL | \n"
+#~ " UNIQUE index_parameters |\n"
+#~ " PRIMARY KEY index_parameters |\n"
+#~ " CHECK ( expression ) |\n"
+#~ " REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
+#~ " [ ON DELETE action ] [ ON UPDATE action ] }\n"
+#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+#~ "\n"
+#~ "and table_constraint is:\n"
+#~ "\n"
+#~ "[ CONSTRAINT constraint_name ]\n"
+#~ "{ UNIQUE ( column_name [, ... ] ) index_parameters |\n"
+#~ " PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n"
+#~ " CHECK ( expression ) |\n"
+#~ " FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]\n"
+#~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }\n"
+#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+#~ "\n"
+#~ "index_parameters in UNIQUE and PRIMARY KEY constraints are:\n"
+#~ "\n"
+#~ "[ WITH ( storage_parameter [= value] [, ... ] ) ]\n"
+#~ "[ USING INDEX TABLESPACE tablespace ]"
+#~ msgstr ""
+#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo_adı ( [\n"
+#~ " { kolon_adı veri_tipi [ DEFAULT default_expr ] [ kolon_kısıtlayıcısı [ ... ] ]\n"
+#~ " | tablo_kısıtlayıcısı\n"
+#~ " | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES } ] ... }\n"
+#~ " [, ... ]\n"
+#~ "] )\n"
+#~ "[ INHERITS ( parent_table [, ... ] ) ]\n"
+#~ "[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
+#~ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+#~ "[ TABLESPACE tablo_uzayı ]\n"
+#~ "\n"
+#~ "kolon_kısıtlayıcısı aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ "im[ CONSTRAINT constraint_name ]\n"
+#~ "{ NOT NULL | \n"
+#~ " NULL | \n"
+#~ " UNIQUE index_parametreleri |\n"
+#~ " PRIMARY KEY index_parametreleri |\n"
+#~ " CHECK ( ifade ) |\n"
+#~ " REFERENCES referans_tablosu [ ( referans_kolonu ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
+#~ " [ ON DELETE işlem ] [ ON UPDATE işlem ] }\n"
+#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+#~ "\n"
+#~ "ve tablo_kısıtlayıcısı aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ "[ CONSTRAINT constraint_name ]\n"
+#~ "{ UNIQUE ( column_name [, ... ] ) index_parameters |\n"
+#~ " PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n"
+#~ " CHECK ( expression ) |\n"
+#~ " FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]\n"
+#~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }\n"
+#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+#~ "\n"
+#~ "UNIQUE ve PRIMARY KEY kısıtlamalarındaki index parametreleri aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ "[ WITH ( storage_parameter [= value] [, ... ] ) ]\n"
+#~ "[ USING INDEX TABLESPACE tablo_uzayı ]"
+
+#~ msgid ""
+#~ "CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION 'serverversion' ]\n"
+#~ " FOREIGN DATA WRAPPER fdwname\n"
+#~ " [ OPTIONS ( option 'value' [, ... ] ) ]"
+#~ msgstr ""
+#~ "CREATE SERVER sunucu adı [ TYPE 'sunucu tipi' ] [ VERSION 'sunucu sürümü' ]\n"
+#~ " FOREIGN DATA WRAPPER fdw adı\n"
+#~ " [ OPTIONS ( seçenek 'değer' [, ... ] ) ]"
+
+#~ msgid ""
+#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n"
+#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n"
+#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n"
+#~ " [ OWNED BY { table.column | NONE } ]"
+#~ msgstr ""
+#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n"
+#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n"
+#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n"
+#~ " [ OWNED BY { table.column | NONE } ]"
+
+#~ msgid ""
+#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]\n"
+#~ "CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]"
+#~ msgstr ""
+#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ TABLESPACE tablespace ] [ schema_element [ ... ] ]\n"
+#~ "CREATE SCHEMA AUTHORIZATION username [ TABLESPACE tablespace ] [ schema_element [ ... ] ]"
+
+#~ msgid ""
+#~ "CREATE [ OR REPLACE ] RULE name AS ON event\n"
+#~ " TO table [ WHERE condition ]\n"
+#~ " DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }"
+#~ msgstr ""
+#~ "CREATE [ OR REPLACE ] RULE name AS ON event\n"
+#~ " TO tablo_adı [ WHERE condition ]\n"
+#~ " DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }"
+
+#~ msgid ""
+#~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "where option can be:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT connlimit\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ " | IN ROLE rolename [, ...]\n"
+#~ " | IN GROUP rolename [, ...]\n"
+#~ " | ROLE rolename [, ...]\n"
+#~ " | ADMIN rolename [, ...]\n"
+#~ " | USER rolename [, ...]\n"
+#~ " | SYSID uid"
+#~ msgstr ""
+#~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "seçenek aşağıdakilerden birisi olabilir:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT connlimit\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ " | IN ROLE rolename [, ...]\n"
+#~ " | IN GROUP rolename [, ...]\n"
+#~ " | ROLE rolename [, ...]\n"
+#~ " | ADMIN rolename [, ...]\n"
+#~ " | USER rolename [, ...]\n"
+#~ " | SYSID uid"
+
+#~ msgid "CREATE OPERATOR FAMILY name USING index_method"
+#~ msgstr "CREATE OPERATOR FAMILY name USING index_method"
+
+#~ msgid ""
+#~ "CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n"
+#~ " USING index_method [ FAMILY family_name ] AS\n"
+#~ " { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ]\n"
+#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n"
+#~ " | STORAGE storage_type\n"
+#~ " } [, ... ]"
+#~ msgstr ""
+#~ "CREATE OPERATOR CLASS ad [ DEFAULT ] FOR TYPE veri tipi\n"
+#~ " USING index metodu [ FAMILY family_name ] AS\n"
+#~ " { OPERATOR strategy_number operatör adı [ ( op_type, op_type ) ]\n"
+#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] fonksiyon adı ( argument_type [, ...] )\n"
+#~ " | STORAGE storage_type\n"
+#~ " } [, ... ]"
+
+#~ msgid ""
+#~ "CREATE OPERATOR name (\n"
+#~ " PROCEDURE = funcname\n"
+#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n"
+#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n"
+#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n"
+#~ " [, HASHES ] [, MERGES ]\n"
+#~ ")"
+#~ msgstr ""
+#~ "CREATE OPERATOR name (\n"
+#~ " PROCEDURE = funcname\n"
+#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n"
+#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n"
+#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n"
+#~ " [, HASHES ] [, MERGES ]\n"
+#~ ")"
+
+#~ msgid ""
+#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n"
+#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n"
+#~ " HANDLER call_handler [ VALIDATOR valfunction ]"
+#~ msgstr ""
+#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n"
+#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n"
+#~ " HANDLER call_handler [ VALIDATOR valfunction ]"
+
+#~ msgid ""
+#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n"
+#~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n"
+#~ " [ WITH ( storage_parameter = value [, ... ] ) ]\n"
+#~ " [ TABLESPACE tablespace ]\n"
+#~ " [ WHERE predicate ]"
+#~ msgstr ""
+#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n"
+#~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n"
+#~ " [ WITH ( storage_parameter = value [, ... ] ) ]\n"
+#~ " [ TABLESPACE tablespace ]\n"
+#~ " [ WHERE predicate ]"
+
+#~ msgid ""
+#~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "where option can be:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ " | IN ROLE rolename [, ...]\n"
+#~ " | IN GROUP rolename [, ...]\n"
+#~ " | ROLE rolename [, ...]\n"
+#~ " | ADMIN rolename [, ...]\n"
+#~ " | USER rolename [, ...]\n"
+#~ " | SYSID uid"
+#~ msgstr ""
+#~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "seçenek aşağıdakilerden birisi olabilir:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'şifre'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ " | IN ROLE rolename [, ...]\n"
+#~ " | IN GROUP rolename [, ...]\n"
+#~ " | ROLE rolename [, ...]\n"
+#~ " | ADMIN rolename [, ...]\n"
+#~ " | USER rolename [, ...]\n"
+#~ " | SYSID uid"
+
+#~ msgid ""
+#~ "CREATE [ OR REPLACE ] FUNCTION\n"
+#~ " name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] [, ...] ] )\n"
+#~ " [ RETURNS rettype\n"
+#~ " | RETURNS TABLE ( colname coltype [, ...] ) ]\n"
+#~ " { LANGUAGE langname\n"
+#~ " | WINDOW\n"
+#~ " | IMMUTABLE | STABLE | VOLATILE\n"
+#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
+#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+#~ " | COST execution_cost\n"
+#~ " | ROWS result_rows\n"
+#~ " | SET configuration_parameter { TO value | = value | FROM CURRENT }\n"
+#~ " | AS 'definition'\n"
+#~ " | AS 'obj_file', 'link_symbol'\n"
+#~ " } ...\n"
+#~ " [ WITH ( attribute [, ...] ) ]"
+#~ msgstr ""
+#~ "CREATE [ OR REPLACE ] FUNCTION\n"
+#~ " ad ( [ [ argüman modu ] [ argüman adı ] argüman tipi [ { DEFAULT | = } defexpr ] [, ...] ] )\n"
+#~ " [ RETURNS rettype\n"
+#~ " | RETURNS TABLE ( kolon_adı kolon_tipi [, ...] ) ]\n"
+#~ " { LANGUAGE dil adı\n"
+#~ " | WINDOW\n"
+#~ " | IMMUTABLE | STABLE | VOLATILE\n"
+#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
+#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+#~ " | COST execution_cost\n"
+#~ " | ROWS result_rows\n"
+#~ " | SET yapılandırma parametresi { TO değer | = değer | FROM CURRENT }\n"
+#~ " | AS 'tanım'\n"
+#~ " | AS 'obj_file', 'link_symbol'\n"
+#~ " } ...\n"
+#~ " [ WITH ( attribute [, ...] ) ]"
+
+#~ msgid ""
+#~ "CREATE FOREIGN DATA WRAPPER name\n"
+#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n"
+#~ " [ OPTIONS ( option 'value' [, ... ] ) ]"
+#~ msgstr ""
+#~ "CREATE FOREIGN DATA WRAPPER ad\n"
+#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n"
+#~ " [ OPTIONS ( option 'value' [, ... ] ) ]"
+
+#~ msgid ""
+#~ "CREATE DOMAIN name [ AS ] data_type\n"
+#~ " [ DEFAULT expression ]\n"
+#~ " [ constraint [ ... ] ]\n"
+#~ "\n"
+#~ "where constraint is:\n"
+#~ "\n"
+#~ "[ CONSTRAINT constraint_name ]\n"
+#~ "{ NOT NULL | NULL | CHECK (expression) }"
+#~ msgstr ""
+#~ "CREATE DOMAIN name [ AS ] data_type\n"
+#~ " [ DEFAULT expression ]\n"
+#~ " [ constraint [ ... ] ]\n"
+#~ "\n"
+#~ "constraint aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ "[ CONSTRAINT constraint_name ]\n"
+#~ "{ NOT NULL | NULL | CHECK (expression) }"
+
+#~ msgid ""
+#~ "CREATE DATABASE name\n"
+#~ " [ [ WITH ] [ OWNER [=] dbowner ]\n"
+#~ " [ TEMPLATE [=] template ]\n"
+#~ " [ ENCODING [=] encoding ]\n"
+#~ " [ LC_COLLATE [=] lc_collate ]\n"
+#~ " [ LC_CTYPE [=] lc_ctype ]\n"
+#~ " [ TABLESPACE [=] tablespace ]\n"
+#~ " [ CONNECTION LIMIT [=] connlimit ] ]"
+#~ msgstr ""
+#~ "CREATE DATABASE ad\n"
+#~ " [ [ WITH ] [ OWNER [=] veritabanı sahibi ]\n"
+#~ " [ TEMPLATE [=] şablon ]\n"
+#~ " [ ENCODING [=] dil kodlaması ]\n"
+#~ " [ LC_COLLATE [=] lc_collate ]\n"
+#~ " [ LC_CTYPE [=] lc_ctype ]\n"
+#~ " [ TABLESPACE [=] tablespace ]\n"
+#~ " [ CONNECTION LIMIT [=] bağlantı sınırı ] ]"
+
+#~ msgid ""
+#~ "CREATE [ DEFAULT ] CONVERSION name\n"
+#~ " FOR source_encoding TO dest_encoding FROM funcname"
+#~ msgstr ""
+#~ "CREATE [ DEFAULT ] CONVERSION name\n"
+#~ " FOR source_encoding TO dest_encoding FROM funcname"
+
+#~ msgid ""
+#~ "CREATE CONSTRAINT TRIGGER name\n"
+#~ " AFTER event [ OR ... ]\n"
+#~ " ON table_name\n"
+#~ " [ FROM referenced_table_name ]\n"
+#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n"
+#~ " FOR EACH ROW\n"
+#~ " EXECUTE PROCEDURE funcname ( arguments )"
+#~ msgstr ""
+#~ "CREATE CONSTRAINT TRIGGER name\n"
+#~ " AFTER event [ OR ... ]\n"
+#~ " ON table_name\n"
+#~ " [ FROM referenced_table_name ]\n"
+#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n"
+#~ " FOR EACH ROW\n"
+#~ " EXECUTE PROCEDURE funcname ( arguments )"
+
+#~ msgid ""
+#~ "CREATE CAST (sourcetype AS targettype)\n"
+#~ " WITH FUNCTION funcname (argtypes)\n"
+#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n"
+#~ "\n"
+#~ "CREATE CAST (sourcetype AS targettype)\n"
+#~ " WITHOUT FUNCTION\n"
+#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n"
+#~ "\n"
+#~ "CREATE CAST (sourcetype AS targettype)\n"
+#~ " WITH INOUT\n"
+#~ " [ AS ASSIGNMENT | AS IMPLICIT ]"
+#~ msgstr ""
+#~ "CREATE CAST (sourcetype AS targettype)\n"
+#~ " WITH FUNCTION funcname (argtypes)\n"
+#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n"
+#~ "\n"
+#~ "CREATE CAST (sourcetype AS targettype)\n"
+#~ " WITHOUT FUNCTION\n"
+#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n"
+#~ "\n"
+#~ "CREATE CAST (sourcetype AS targettype)\n"
+#~ " WITH INOUT\n"
+#~ " [ AS ASSIGNMENT | AS IMPLICIT ]"
+
+#~ msgid ""
+#~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n"
+#~ " SFUNC = sfunc,\n"
+#~ " STYPE = state_data_type\n"
+#~ " [ , FINALFUNC = ffunc ]\n"
+#~ " [ , INITCOND = initial_condition ]\n"
+#~ " [ , SORTOP = sort_operator ]\n"
+#~ ")\n"
+#~ "\n"
+#~ "or the old syntax\n"
+#~ "\n"
+#~ "CREATE AGGREGATE name (\n"
+#~ " BASETYPE = base_type,\n"
+#~ " SFUNC = sfunc,\n"
+#~ " STYPE = state_data_type\n"
+#~ " [ , FINALFUNC = ffunc ]\n"
+#~ " [ , INITCOND = initial_condition ]\n"
+#~ " [ , SORTOP = sort_operator ]\n"
+#~ ")"
+#~ msgstr ""
+#~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n"
+#~ " SFUNC = sfunc,\n"
+#~ " STYPE = state_data_type\n"
+#~ " [ , FINALFUNC = ffunc ]\n"
+#~ " [ , INITCOND = initial_condition ]\n"
+#~ " [ , SORTOP = sort_operator ]\n"
+#~ ")\n"
+#~ "\n"
+#~ "or the old syntax\n"
+#~ "\n"
+#~ "CREATE AGGREGATE name (\n"
+#~ " BASETYPE = base_type,\n"
+#~ " SFUNC = sfunc,\n"
+#~ " STYPE = state_data_type\n"
+#~ " [ , FINALFUNC = ffunc ]\n"
+#~ " [ , INITCOND = initial_condition ]\n"
+#~ " [ , SORTOP = sort_operator ]\n"
+#~ ")"
+
+#~ msgid ""
+#~ "COPY tablename [ ( column [, ...] ) ]\n"
+#~ " FROM { 'filename' | STDIN }\n"
+#~ " [ [ WITH ] \n"
+#~ " [ BINARY ]\n"
+#~ " [ OIDS ]\n"
+#~ " [ DELIMITER [ AS ] 'delimiter' ]\n"
+#~ " [ NULL [ AS ] 'null string' ]\n"
+#~ " [ CSV [ HEADER ]\n"
+#~ " [ QUOTE [ AS ] 'quote' ] \n"
+#~ " [ ESCAPE [ AS ] 'escape' ]\n"
+#~ " [ FORCE NOT NULL column [, ...] ]\n"
+#~ "\n"
+#~ "COPY { tablename [ ( column [, ...] ) ] | ( query ) }\n"
+#~ " TO { 'filename' | STDOUT }\n"
+#~ " [ [ WITH ] \n"
+#~ " [ BINARY ]\n"
+#~ " [ OIDS ]\n"
+#~ " [ DELIMITER [ AS ] 'delimiter' ]\n"
+#~ " [ NULL [ AS ] 'null string' ]\n"
+#~ " [ CSV [ HEADER ]\n"
+#~ " [ QUOTE [ AS ] 'quote' ] \n"
+#~ " [ ESCAPE [ AS ] 'escape' ]\n"
+#~ " [ FORCE QUOTE column [, ...] ]"
+#~ msgstr ""
+#~ "COPY tablo adı [ ( kolon [, ...] ) ]\n"
+#~ " FROM { 'dosya adı' | STDIN }\n"
+#~ " [ [ WITH ] \n"
+#~ " [ BINARY ]\n"
+#~ " [ OIDS ]\n"
+#~ " [ DELIMITER [ AS ] 'delimiter' ]\n"
+#~ " [ NULL [ AS ] 'null string' ]\n"
+#~ " [ CSV [ HEADER ]\n"
+#~ " [ QUOTE [ AS ] 'quote' ] \n"
+#~ " [ ESCAPE [ AS ] 'escape' ]\n"
+#~ " [ FORCE NOT NULL column [, ...] ]\n"
+#~ "\n"
+#~ "COPY { tablo adı [ ( kolon [, ...] ) ] | ( sorgu ) }\n"
+#~ " TO { 'dosya adı' | STDOUT }\n"
+#~ " [ [ WITH ] \n"
+#~ " [ BINARY ]\n"
+#~ " [ OIDS ]\n"
+#~ " [ DELIMITER [ AS ] 'delimiter' ]\n"
+#~ " [ NULL [ AS ] 'null string' ]\n"
+#~ " [ CSV [ HEADER ]\n"
+#~ " [ QUOTE [ AS ] 'quote' ] \n"
+#~ " [ ESCAPE [ AS ] 'escape' ]\n"
+#~ " [ FORCE QUOTE column [, ...] ]"
+
+#~ msgid "COMMIT PREPARED transaction_id"
+#~ msgstr "COMMIT PREPARED transaction_id"
+
+#~ msgid "COMMIT [ WORK | TRANSACTION ]"
+#~ msgstr "COMMIT [ WORK | TRANSACTION ]"
+
+#~ msgid ""
+#~ "COMMENT ON\n"
+#~ "{\n"
+#~ " TABLE object_name |\n"
+#~ " COLUMN table_name.column_name |\n"
+#~ " AGGREGATE agg_name (agg_type [, ...] ) |\n"
+#~ " CAST (sourcetype AS targettype) |\n"
+#~ " CONSTRAINT constraint_name ON table_name |\n"
+#~ " CONVERSION object_name |\n"
+#~ " DATABASE object_name |\n"
+#~ " DOMAIN object_name |\n"
+#~ " FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n"
+#~ " INDEX object_name |\n"
+#~ " LARGE OBJECT large_object_oid |\n"
+#~ " OPERATOR op (leftoperand_type, rightoperand_type) |\n"
+#~ " OPERATOR CLASS object_name USING index_method |\n"
+#~ " OPERATOR FAMILY object_name USING index_method |\n"
+#~ " [ PROCEDURAL ] LANGUAGE object_name |\n"
+#~ " ROLE object_name |\n"
+#~ " RULE rule_name ON table_name |\n"
+#~ " SCHEMA object_name |\n"
+#~ " SEQUENCE object_name |\n"
+#~ " TABLESPACE object_name |\n"
+#~ " TEXT SEARCH CONFIGURATION object_name |\n"
+#~ " TEXT SEARCH DICTIONARY object_name |\n"
+#~ " TEXT SEARCH PARSER object_name |\n"
+#~ " TEXT SEARCH TEMPLATE object_name |\n"
+#~ " TRIGGER trigger_name ON table_name |\n"
+#~ " TYPE object_name |\n"
+#~ " VIEW object_name\n"
+#~ "} IS 'text'"
+#~ msgstr ""
+#~ "COMMENT ON\n"
+#~ "{\n"
+#~ " TABLE nesne_ado |\n"
+#~ " COLUMN tablo_adı.kolon_adı |\n"
+#~ " AGGREGATE agg_name (agg_type [, ...] ) |\n"
+#~ " CAST (sourcetype AS targettype) |\n"
+#~ " CONSTRAINT constraint_name ON table_name |\n"
+#~ " CONVERSION nesne_adı |\n"
+#~ " DATABASE nesne_adı |\n"
+#~ " DOMAIN nesne_adı |\n"
+#~ " FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n"
+#~ " INDEX nesne_adı |\n"
+#~ " LARGE OBJECT large_object_oid |\n"
+#~ " OPERATOR op (leftoperand_type, rightoperand_type) |\n"
+#~ " OPERATOR CLASS nesne_adı USING index_yöntemi |\n"
+#~ " OPERATOR FAMILY nesne_adı USING index_yöntemi |\n"
+#~ " [ PROCEDURAL ] LANGUAGE nesne_adı |\n"
+#~ " ROLE nesne_adı |\n"
+#~ " RULE kural_adı ON tablo_adı |\n"
+#~ " SCHEMA nesne_adı |\n"
+#~ " SEQUENCE nesne_adı |\n"
+#~ " TABLESPACE nesne_adı |\n"
+#~ " TEXT SEARCH CONFIGURATION nesne_adı |\n"
+#~ " TEXT SEARCH DICTIONARY nesne_adı |\n"
+#~ " TEXT SEARCH PARSER nesne_adı |\n"
+#~ " TEXT SEARCH TEMPLATE nesne_adı |\n"
+#~ " TRIGGER tetikleyici_adı ON table_name |\n"
+#~ " TYPE nesne_adı |\n"
+#~ " VIEW nesne_adı\n"
+#~ "} IS 'text'"
+
+#~ msgid ""
+#~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n"
+#~ "CLUSTER [VERBOSE]"
+#~ msgstr ""
+#~ "CLUSTER [VERBOSE] tablo adı [ USING index adı ]\n"
+#~ "CLUSTER [VERBOSE]"
+
+#~ msgid "CLOSE { name | ALL }"
+#~ msgstr "CLOSE { name | ALL }"
+
+#~ msgid "CHECKPOINT"
+#~ msgstr "CHECKPOINT"
+
+#~ msgid ""
+#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n"
+#~ "\n"
+#~ "where transaction_mode is one of:\n"
+#~ "\n"
+#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+#~ " READ WRITE | READ ONLY"
+#~ msgstr ""
+#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_modu [, ...] ]\n"
+#~ "\n"
+#~ "transaction_modu aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+#~ " READ WRITE | READ ONLY"
+
+#~ msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]"
+#~ msgstr "ANALYZE [ VERBOSE ] [ tablo [ ( kolon [, ...] ) ] ]"
+
+#~ msgid ""
+#~ "ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n"
+#~ "ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n"
+#~ "ALTER VIEW name OWNER TO new_owner\n"
+#~ "ALTER VIEW name RENAME TO new_name\n"
+#~ "ALTER VIEW name SET SCHEMA new_schema"
+#~ msgstr ""
+#~ "ALTER VIEW ad ALTER [ COLUMN ] kolon SET DEFAULT ifade\n"
+#~ "ALTER VIEW ad ALTER [ COLUMN ] kolon DROP DEFAULT\n"
+#~ "ALTER VIEW ad OWNER TO yeni sahibi\n"
+#~ "ALTER VIEW ad RENAME TO yeni adı\n"
+#~ "ALTER VIEW ad SET SCHEMA yeni şema"
+
+#~ msgid ""
+#~ "ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n"
+#~ " SERVER servername\n"
+#~ " OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )"
+#~ msgstr ""
+#~ "ALTER USER MAPPING FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC }\n"
+#~ " SERVER sunucu adı\n"
+#~ " OPTIONS ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ] )"
+
+#~ msgid ""
+#~ "ALTER USER name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "where option can be:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT connlimit\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ "\n"
+#~ "ALTER USER name RENAME TO newname\n"
+#~ "\n"
+#~ "ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }\n"
+#~ "ALTER USER name SET configuration_parameter FROM CURRENT\n"
+#~ "ALTER USER name RESET configuration_parameter\n"
+#~ "ALTER USER name RESET ALL"
+#~ msgstr ""
+#~ "ALTER USER kullanıcı_adı [ [ WITH ] seçenek [ ... ] ]\n"
+#~ "\n"
+#~ "seçenek aşağıdakilerden birisi olabilir:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT bağlantı_sayısı_sınırı\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ "\n"
+#~ "ALTER USER kullanıcı_adı RENAME TO yeni_adı\n"
+#~ "\n"
+#~ "ALTER USER kullanıcı_adı SET yapılandırma_parametresi { TO | = } { value | DEFAULT }\n"
+#~ "ALTER USER kullanıcı_adı SET yapılandırma_parametresi FROM CURRENT\n"
+#~ "ALTER USER kullanıcı_adı RESET yapılandırma_parametresi\n"
+#~ "ALTER USER kullanıcı_adı RESET ALL"
+
+#~ msgid ""
+#~ "ALTER TYPE name RENAME TO new_name\n"
+#~ "ALTER TYPE name OWNER TO new_owner \n"
+#~ "ALTER TYPE name SET SCHEMA new_schema"
+#~ msgstr ""
+#~ "ALTER TYPE ad RENAME TO yeni adı\n"
+#~ "ALTER TYPE ad OWNER TO yeni sahibi \n"
+#~ "ALTER TYPE ad SET SCHEMA yeni şema"
+
+#~ msgid "ALTER TRIGGER name ON table RENAME TO newname"
+#~ msgstr "ALTER TRIGGER trigger_adı ON tablo_adı RENAME TO yeni_ad"
+
+#~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname"
+#~ msgstr "ALTER TEXT SEARCH TEMPLATE şablon_adı RENAME TO yeni_adı"
+
+#~ msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname"
+#~ msgstr "ALTER TEXT SEARCH PARSER ayrıştırıcı_adı RENAME TO yeni_adı"
+
+#~ msgid ""
+#~ "ALTER TEXT SEARCH DICTIONARY name (\n"
+#~ " option [ = value ] [, ... ]\n"
+#~ ")\n"
+#~ "ALTER TEXT SEARCH DICTIONARY name RENAME TO newname\n"
+#~ "ALTER TEXT SEARCH DICTIONARY name OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER TEXT SEARCH DICTIONARY ad (\n"
+#~ " option [ = value ] [, ... ]\n"
+#~ ")\n"
+#~ "ALTER TEXT SEARCH DICTIONARY ad RENAME TO yeni adı\n"
+#~ "ALTER TEXT SEARCH DICTIONARY ad OWNER TO yeni sahibi"
+
+#~ msgid ""
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name\n"
+#~ " DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n"
+#~ "ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner"
+
+#~ msgid ""
+#~ "ALTER TABLESPACE name RENAME TO newname\n"
+#~ "ALTER TABLESPACE name OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER TABLESPACE tablespace_adı RENAME TO yeni_ad\n"
+#~ "ALTER TABLESPACE tablespace_adı OWNER TO yeni_sahip"
+
+#~ msgid ""
+#~ "ALTER TABLE [ ONLY ] name [ * ]\n"
+#~ " action [, ... ]\n"
+#~ "ALTER TABLE [ ONLY ] name [ * ]\n"
+#~ " RENAME [ COLUMN ] column TO new_column\n"
+#~ "ALTER TABLE name\n"
+#~ " RENAME TO new_name\n"
+#~ "ALTER TABLE name\n"
+#~ " SET SCHEMA new_schema\n"
+#~ "\n"
+#~ "where action is one of:\n"
+#~ "\n"
+#~ " ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n"
+#~ " DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n"
+#~ " ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n"
+#~ " ALTER [ COLUMN ] column SET DEFAULT expression\n"
+#~ " ALTER [ COLUMN ] column DROP DEFAULT\n"
+#~ " ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n"
+#~ " ALTER [ COLUMN ] column SET STATISTICS integer\n"
+#~ " ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
+#~ " ADD table_constraint\n"
+#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n"
+#~ " DISABLE TRIGGER [ trigger_name | ALL | USER ]\n"
+#~ " ENABLE TRIGGER [ trigger_name | ALL | USER ]\n"
+#~ " ENABLE REPLICA TRIGGER trigger_name\n"
+#~ " ENABLE ALWAYS TRIGGER trigger_name\n"
+#~ " DISABLE RULE rewrite_rule_name\n"
+#~ " ENABLE RULE rewrite_rule_name\n"
+#~ " ENABLE REPLICA RULE rewrite_rule_name\n"
+#~ " ENABLE ALWAYS RULE rewrite_rule_name\n"
+#~ " CLUSTER ON index_name\n"
+#~ " SET WITHOUT CLUSTER\n"
+#~ " SET WITH OIDS\n"
+#~ " SET WITHOUT OIDS\n"
+#~ " SET ( storage_parameter = value [, ... ] )\n"
+#~ " RESET ( storage_parameter [, ... ] )\n"
+#~ " INHERIT parent_table\n"
+#~ " NO INHERIT parent_table\n"
+#~ " OWNER TO new_owner\n"
+#~ " SET TABLESPACE new_tablespace"
+#~ msgstr ""
+#~ "ALTER TABLE [ ONLY ] ad [ * ]\n"
+#~ " action [, ... ]\n"
+#~ "ALTER TABLE [ ONLY ] ad [ * ]\n"
+#~ " RENAME [ COLUMN ] kolon TO yeni kolon\n"
+#~ "ALTER TABLE ad\n"
+#~ " RENAME TO yeni ad\n"
+#~ "ALTER TABLE ad\n"
+#~ " SET SCHEMA yeni şema\n"
+#~ "\n"
+#~ "action aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " ADD [ COLUMN ] kolon kolon_tipi [ kolon kısıtlaması [ ... ] ]\n"
+#~ " DROP [ COLUMN ] kolon [ RESTRICT | CASCADE ]\n"
+#~ " ALTER [ COLUMN ] kolon [ SET DATA ] TYPE type [ USING ifade ]\n"
+#~ " ALTER [ COLUMN ] kolon SET DEFAULT ifade\n"
+#~ " ALTER [ COLUMN ] kolon DROP DEFAULT\n"
+#~ " ALTER [ COLUMN ] kolon { SET | DROP } NOT NULL\n"
+#~ " ALTER [ COLUMN ] kolon SET STATISTICS tamsayı\n"
+#~ " ALTER [ COLUMN ] kolon SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
+#~ " ADD tablo kısıtlaması\n"
+#~ " DROP CONSTRAINT kısıtlama adı [ RESTRICT | CASCADE ]\n"
+#~ " DISABLE TRIGGER [ trigger adı | ALL | USER ]\n"
+#~ " ENABLE TRIGGER[ trigger adı | ALL | USER ]\n"
+#~ " ENABLE REPLICA TRIGGER trigger adı\n"
+#~ " ENABLE ALWAYS TRIGGER trigger adı\n"
+#~ " DISABLE RULE rewrite_rule_name\n"
+#~ " ENABLE RULE rewrite_rule_name\n"
+#~ " ENABLE REPLICA RULE rewrite_rule_name\n"
+#~ " ENABLE ALWAYS RULE rewrite_rule_name\n"
+#~ " CLUSTER ON index adı\n"
+#~ " SET WITHOUT CLUSTER\n"
+#~ " SET WITH OIDS\n"
+#~ " SET WITHOUT OIDS\n"
+#~ " SET ( storage_parameter = value [, ... ] )\n"
+#~ " RESET ( storage_parameter [, ... ] )\n"
+#~ " INHERIT üst tablo\n"
+#~ " NO INHERIT üst tablo\n"
+#~ " OWNER TO yeni sahibi\n"
+#~ " SET TABLESPACE yeni tablespace"
+
+#~ msgid ""
+#~ "ALTER SERVER servername [ VERSION 'newversion' ]\n"
+#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n"
+#~ "ALTER SERVER servername OWNER TO new_owner"
+#~ msgstr ""
+#~ "ALTER SERVER sunucu adı [ VERSION 'yeni sürüm' ]\n"
+#~ " [ OPTIONS ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ] ) ]\n"
+#~ "ALTER SERVER sunucu adı OWNER TO yeni sahibi"
+
+#~ msgid ""
+#~ "ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n"
+#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n"
+#~ " [ START [ WITH ] start ]\n"
+#~ " [ RESTART [ [ WITH ] restart ] ]\n"
+#~ " [ CACHE cache ] [ [ NO ] CYCLE ]\n"
+#~ " [ OWNED BY { table.column | NONE } ]\n"
+#~ "ALTER SEQUENCE name OWNER TO new_owner\n"
+#~ "ALTER SEQUENCE name RENAME TO new_name\n"
+#~ "ALTER SEQUENCE name SET SCHEMA new_schema"
+#~ msgstr ""
+#~ "ALTER SEQUENCE ad [ INCREMENT [ BY ] arttırma miktarı ]\n"
+#~ " [ MINVALUE en az değer | NO MINVALUE ] [ MAXVALUE üst değer | NO MAXVALUE ]\n"
+#~ " [ START [ WITH ] başlama sayısı ]\n"
+#~ " [ RESTART [ [ WITH ] yeniden başlama sayısı ] ]\n"
+#~ " [ CACHE önbellek ] [ [ NO ] CYCLE ]\n"
+#~ " [ OWNED BY { tablo.kolon | NONE } ]\n"
+#~ "ALTER SEQUENCE ad OWNER TO yeni sahibir\n"
+#~ "ALTER SEQUENCE ad RENAME TO yeni adı\n"
+#~ "ALTER SEQUENCE namade SET SCHEMA yeni şeması"
+
+#~ msgid ""
+#~ "ALTER SCHEMA name RENAME TO newname\n"
+#~ "ALTER SCHEMA name OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER SCHEMA şema_adı RENAME TO yeni_ad\n"
+#~ "ALTER SCHEMA şema_adı OWNER TO yeni_sahip"
+
+#~ msgid ""
+#~ "ALTER ROLE name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "where option can be:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT connlimit\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ "\n"
+#~ "ALTER ROLE name RENAME TO newname\n"
+#~ "\n"
+#~ "ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }\n"
+#~ "ALTER ROLE name SET configuration_parameter FROM CURRENT\n"
+#~ "ALTER ROLE name RESET configuration_parameter\n"
+#~ "ALTER ROLE name RESET ALL"
+#~ msgstr ""
+#~ "ALTER ROLE rol_adı [ [ WITH ] seçenek [ ... ] ]\n"
+#~ "\n"
+#~ "seçenek aşağıdakilerden birisi olabilir:\n"
+#~ " \n"
+#~ " SUPERUSER | NOSUPERUSER\n"
+#~ " | CREATEDB | NOCREATEDB\n"
+#~ " | CREATEROLE | NOCREATEROLE\n"
+#~ " | CREATEUSER | NOCREATEUSER\n"
+#~ " | INHERIT | NOINHERIT\n"
+#~ " | LOGIN | NOLOGIN\n"
+#~ " | CONNECTION LIMIT bağlantı_sayısı_sınırı\n"
+#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n"
+#~ " | VALID UNTIL 'timestamp' \n"
+#~ "\n"
+#~ "ALTER ROLE rol_adı RENAME TO yeni_adı\n"
+#~ "\n"
+#~ "ALTER ROLE rol_adı SET yapılandırma_parametresi { TO | = } { value | DEFAULT }\n"
+#~ "ALTER ROLE rol_adı SET yapılandırma_parametresi FROM CURRENT\n"
+#~ "ALTER ROLE rol_adı RESET yapılandırma_parametresi\n"
+#~ "ALTER ROLE rol_adı RESET ALL"
+
+#~ msgid ""
+#~ "ALTER OPERATOR FAMILY name USING index_method ADD\n"
+#~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n"
+#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n"
+#~ " } [, ... ]\n"
+#~ "ALTER OPERATOR FAMILY name USING index_method DROP\n"
+#~ " { OPERATOR strategy_number ( op_type [ , op_type ] )\n"
+#~ " | FUNCTION support_number ( op_type [ , op_type ] )\n"
+#~ " } [, ... ]\n"
+#~ "ALTER OPERATOR FAMILY name USING index_method RENAME TO newname\n"
+#~ "ALTER OPERATOR FAMILY name USING index_method OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER OPERATOR FAMILY adı USING index_methodu ADD\n"
+#~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n"
+#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n"
+#~ " } [, ... ]\n"
+#~ "ALTER OPERATOR FAMILY ad USING index_methodu DROP\n"
+#~ " { OPERATOR strategy_number ( op_type [ , op_type ] )\n"
+#~ " | FUNCTION support_number ( op_type [ , op_type ] )\n"
+#~ " } [, ... ]\n"
+#~ "ALTER OPERATOR FAMILY ad USING index_methodu RENAME TO yeni ad\n"
+#~ "ALTER OPERATOR FAMILY ad USING index_methodu OWNER TO yeni sahibi"
+
+#~ msgid ""
+#~ "ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n"
+#~ "ALTER OPERATOR CLASS name USING index_method OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER OPERATOR CLASS ad USING index_method RENAME TO yeni_ad\n"
+#~ "ALTER OPERATOR CLASS ad USING index_method OWNER TO yeni_sahip"
+
+#~ msgid "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER TO newowner"
+#~ msgstr "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER TO yeni_sahip"
+
+#~ msgid ""
+#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n"
+#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner"
+#~ msgstr ""
+#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n"
+#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner"
+
+#~ msgid ""
+#~ "ALTER INDEX name RENAME TO new_name\n"
+#~ "ALTER INDEX name SET TABLESPACE tablespace_name\n"
+#~ "ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n"
+#~ "ALTER INDEX name RESET ( storage_parameter [, ... ] )"
+#~ msgstr ""
+#~ "ALTER INDEX name RENAME TO new_name\n"
+#~ "ALTER INDEX name SET TABLESPACE tablespace_name\n"
+#~ "ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n"
+#~ "ALTER INDEX name RESET ( storage_parameter [, ... ] )"
+
+#~ msgid ""
+#~ "ALTER GROUP groupname ADD USER username [, ... ]\n"
+#~ "ALTER GROUP groupname DROP USER username [, ... ]\n"
+#~ "\n"
+#~ "ALTER GROUP groupname RENAME TO newname"
+#~ msgstr ""
+#~ "ALTER GROUP grup_adı ADD USER kullanıcı_adı [, ... ]\n"
+#~ "ALTER GROUP grup_adı DROP USER kullanıcı_adı [, ... ]\n"
+#~ "\n"
+#~ "ALTER GROUP grup_adı RENAME TO yeni_ad"
+
+#~ msgid ""
+#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " action [ ... ] [ RESTRICT ]\n"
+#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " RENAME TO new_name\n"
+#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " OWNER TO new_owner\n"
+#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " SET SCHEMA new_schema\n"
+#~ "\n"
+#~ "where action is one of:\n"
+#~ "\n"
+#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
+#~ " IMMUTABLE | STABLE | VOLATILE\n"
+#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+#~ " COST execution_cost\n"
+#~ " ROWS result_rows\n"
+#~ " SET configuration_parameter { TO | = } { value | DEFAULT }\n"
+#~ " SET configuration_parameter FROM CURRENT\n"
+#~ " RESET configuration_parameter\n"
+#~ " RESET ALL"
+#~ msgstr ""
+#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " işlem [ ... ] [ RESTRICT ]\n"
+#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " RENAME TO yeni_adı\n"
+#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " OWNER TO yeni_sahibi\n"
+#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n"
+#~ " SET SCHEMA yeni_şema\n"
+#~ "\n"
+#~ "işlem aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
+#~ " IMMUTABLE | STABLE | VOLATILE\n"
+#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+#~ " COST çalıştırma_maliyeti(execution cost)\n"
+#~ " ROWS result_rows\n"
+#~ " SET yapılandırma_parametresi { TO | = } { value | DEFAULT }\n"
+#~ " SET yapılandırma_parametresi FROM CURRENT\n"
+#~ " RESET yapılandırma_parametresi\n"
+#~ " RESET ALL"
+
+#~ msgid ""
+#~ "ALTER FOREIGN DATA WRAPPER name\n"
+#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n"
+#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]\n"
+#~ "ALTER FOREIGN DATA WRAPPER name OWNER TO new_owner"
+#~ msgstr ""
+#~ "ALTER FOREIGN DATA WRAPPER ad\n"
+#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n"
+#~ " [ SEÇENEKLER ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ]) ]\n"
+#~ "ALTER FOREIGN DATA WRAPPER ad OWNER TO yeni sahibi"
+
+#~ msgid ""
+#~ "ALTER DOMAIN name\n"
+#~ " { SET DEFAULT expression | DROP DEFAULT }\n"
+#~ "ALTER DOMAIN name\n"
+#~ " { SET | DROP } NOT NULL\n"
+#~ "ALTER DOMAIN name\n"
+#~ " ADD domain_constraint\n"
+#~ "ALTER DOMAIN name\n"
+#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n"
+#~ "ALTER DOMAIN name\n"
+#~ " OWNER TO new_owner \n"
+#~ "ALTER DOMAIN name\n"
+#~ " SET SCHEMA new_schema"
+#~ msgstr ""
+#~ "ALTER DOMAIN name\n"
+#~ " { SET DEFAULT expression | DROP DEFAULT }\n"
+#~ "ALTER DOMAIN name\n"
+#~ " { SET | DROP } NOT NULL\n"
+#~ "ALTER DOMAIN name\n"
+#~ " ADD domain_constraint\n"
+#~ "ALTER DOMAIN name\n"
+#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n"
+#~ "ALTER DOMAIN name\n"
+#~ " OWNER TO new_owner \n"
+#~ "ALTER DOMAIN name\n"
+#~ " SET SCHEMA new_schema"
+
+#~ msgid ""
+#~ "ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n"
+#~ "\n"
+#~ "where option can be:\n"
+#~ "\n"
+#~ " CONNECTION LIMIT connlimit\n"
+#~ "\n"
+#~ "ALTER DATABASE name RENAME TO newname\n"
+#~ "\n"
+#~ "ALTER DATABASE name OWNER TO new_owner\n"
+#~ "\n"
+#~ "ALTER DATABASE name SET TABLESPACE new_tablespace\n"
+#~ "\n"
+#~ "ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }\n"
+#~ "ALTER DATABASE name SET configuration_parameter FROM CURRENT\n"
+#~ "ALTER DATABASE name RESET configuration_parameter\n"
+#~ "ALTER DATABASE name RESET ALL"
+#~ msgstr ""
+#~ "ALTER DATABASE veritabanı_adı [ [ WITH ] seçenek [ ... ] ]\n"
+#~ "\n"
+#~ "seçenek aşağıdakilerden birisi olabilir:\n"
+#~ "\n"
+#~ " CONNECTION LIMIT bağlantı limiti\n"
+#~ "\n"
+#~ "ALTER DATABASE veritabanı_adı RENAME TO yeni_adı\n"
+#~ "\n"
+#~ "ALTER DATABASE veritabanı_adı OWNER TO yeni_sahibi\n"
+#~ "\n"
+#~ "ALTER DATABASE veritabanı_adı SET yapılandırma_parametresi { TO | = } { değer | DEFAULT }\n"
+#~ "ALTER DATABASE veritabanı_adı SET yapılandırma_parametresi FROM CURRENT\n"
+#~ "ALTER DATABASE veritabanı_adı RESET yapılandırma_parametresi\n"
+#~ "ALTER DATABASE veritabanı_adı RESET ALL"
+
+#~ msgid ""
+#~ "ALTER CONVERSION name RENAME TO newname\n"
+#~ "ALTER CONVERSION name OWNER TO newowner"
+#~ msgstr ""
+#~ "ALTER CONVERSION dönüşüm_adı RENAME TO yeni_ad\n"
+#~ "ALTER CONVERSION dönüşüm_adı OWNER TO yeni_sahip"
+
+#~ msgid ""
+#~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n"
+#~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n"
+#~ "ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema"
+#~ msgstr ""
+#~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n"
+#~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n"
+#~ "ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema"
+
+#~ msgid "ABORT [ WORK | TRANSACTION ]"
+#~ msgstr "ABORT [ WORK | TRANSACTION ]"
+
+#~ msgid "define a new constraint trigger"
+#~ msgstr "yeni constraint trigger tanımla"
+
+#~ msgid "data type"
+#~ msgstr "veri tipi"
+
+#~ msgid " as user \"%s\""
+#~ msgstr " \"%s\" kullanıcısı"
+
+#~ msgid " at port \"%s\""
+#~ msgstr " \"%s\" portunda"
+
+#~ msgid " on host \"%s\""
+#~ msgstr " \"%s\" sistemi"
+
+#~ msgid "\\%s: error\n"
+#~ msgstr "\\%s: hata\n"
+
+#~ msgid "could not change directory to \"%s\""
+#~ msgstr "çalışma dizini \"%s\" olarak değiştirilemedi"
+
+#, fuzzy
+#~ msgid "attribute"
+#~ msgstr "Özellikler"
+
+#, fuzzy
+#~ msgid "tablespace"
+#~ msgstr "Tablespace"
+
+#, fuzzy
+#~ msgid "input_data_type"
+#~ msgstr "veri tipi"
+
+#~ msgid "new_column"
+#~ msgstr "yeni_kolon"
+
+#~ msgid "column"
+#~ msgstr "kolon"
+
+#, fuzzy
+#~ msgid "agg_type"
+#~ msgstr "Hedef tipi"
+
+#, fuzzy
+#~ msgid "Object Description"
+#~ msgstr "Nesne açıklamaları"
+
+#~ msgid "Modifier"
+#~ msgstr "Düzenleyici"
+
+#~ msgid "No relations found.\n"
+#~ msgstr "Nesne bulunamadı.\n"
+
+#~ msgid "No matching relations found.\n"
+#~ msgstr "Eşleşen nesne bulunamadı.\n"
+
+#, fuzzy
+#~ msgid "No settings found.\n"
+#~ msgstr "Nesne bulunamadı.\n"
+
+#, fuzzy
+#~ msgid "No matching settings found.\n"
+#~ msgstr "Eşleşen nesne bulunamadı.\n"
+
+#~ msgid "default %s"
+#~ msgstr "öntanımlı %s"
+
+#~ msgid "not null"
+#~ msgstr "Null değil"
+
+#~ msgid "Value"
+#~ msgstr "Değer"
+
+#~ msgid "Modifiers"
+#~ msgstr "Modifiers"
+
+#~ msgid "normal"
+#~ msgstr "normal"
+
+#~ msgid "contains support for command-line editing"
+#~ msgstr "komut satırı düzenleme desteği mevcuttur"
+
+#~ msgid "%s: could not set variable \"%s\"\n"
+#~ msgstr "%s: \"%s\" değişkeni atanamıyor\n"
+
+#~ msgid "(No rows)\n"
+#~ msgstr "(Satır yok)\n"
+
+#~ msgid ""
+#~ " \\pset NAME [VALUE] set table output option\n"
+#~ " (NAME := {format|border|expanded|fieldsep|footer|null|\n"
+#~ " numericlocale|recordsep|tuples_only|title|tableattr|pager})\n"
+#~ msgstr ""
+#~ " \\pset AD [VALUE] tablo çıktısı biçimini ayarla\n"
+#~ " (AD := {format|border|expanded|fieldsep|footer|null|\n"
+#~ " numericlocale|recordsep|tuples_only|title|tableattr|pager})\n"
+
+#~ msgid " \\l[+] list all databases\n"
+#~ msgstr " \\l[+] tüm tablespaceleri listele\n"
+
+#~ msgid " --version output version information, then exit\n"
+#~ msgstr " --version sürüm bilgisini gösterir ve çıkar\n"
+
+#~ msgid " --help show this help, then exit\n"
+#~ msgstr " --help bu yardımı gösterir ve çıkar\n"
+
+#~ msgid "could not get current user name: %s\n"
+#~ msgstr "geçerli kullanıcı adı alınamadı: %s\n"
+
+#~ msgid "\\copy: unexpected response (%d)\n"
+#~ msgstr "\\copy: beklenmeyen yanıt (%d)\n"
+
+#~ msgid "\\copy: %s"
+#~ msgstr "\\copy: %s"
+
+#~ msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n"
+#~ msgstr "%s: pg_strdup: null pointer duplicate edilemiyor (iç hata)\n"
+
+#~ msgid "Showing only tuples."
+#~ msgstr "Sadece kayıtlar gösteriliyor."
+
+#~ msgid "Showing locale-adjusted numeric output."
+#~ msgstr "Yerel duyarlı sayısal çıktı gösteriliyor."
+
+#~ msgid "SSL connection (unknown cipher)\n"
+#~ msgstr "SSL bağlantısı (bilinmeyen cipher)\n"
+
+#, fuzzy
+#~ msgid "\\%s: error while setting variable\n"
+#~ msgstr "%s: \"%s\" değişkeni atanamıyor\n"
+
+#~ msgid "Password encryption failed.\n"
+#~ msgstr "Parola şifrleme hatası.\n"
+
+#~ msgid "%s: could not open log file \"%s\": %s\n"
+#~ msgstr "%s: \"%s\" kayıti dosyası açılamıyor: %s\n"
+
+#~ msgid "string_literal"
+#~ msgstr "dizgi_sabiti"
+
+#~ msgid "unterminated quoted string\n"
+#~ msgstr "sonuçlandırılmamış tırnakla sınırlandırılmış dizgi\n"
+
+#~ msgid "could not read from input file: %s\n"
+#~ msgstr "girdi dosyasından okunamadı: %s\n"
+
+#~ msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+#~ msgstr "Hataları <pgsql-bugs@postgresql.org> adresine bildirebilirsiniz.\n"
+
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid "Procedure"
+#~ msgstr "Prosedür"
+
+#~ msgid "could not close pipe to external command: %s\n"
+#~ msgstr "dış komuta doğru olan pipe kapatılamadı: %s\n"
+
+#~ msgid "could not stat file \"%s\": %s\n"
+#~ msgstr "\"%s\" dosyasının durumu görüntülenemedi (stat): %s\n"
+
+#~ msgid "could not execute command \"%s\": %s\n"
+#~ msgstr "\"%s\" komutu yürütülemedi: %s\n"
+
+#~ msgid "could not parse reloptions array\n"
+#~ msgstr "reloptions dizisi (array) ayrıştırılamadı\n"
+
+#~ msgid "could not open temporary file \"%s\": %s\n"
+#~ msgstr "\"%s\" geçici dosya açılamıyor: %s\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
+
+#~ msgid "Invalid command \\%s. Try \\? for help.\n"
+#~ msgstr "Geçersiz komut \\%s. Yardım için \\? yazınız.\n"
+
+#~ msgid "child process was terminated by signal %d"
+#~ msgstr "alt süreç %d sinyali tarafından sonlandırılmıştır"
+
+#~ msgid "child process was terminated by signal %s"
+#~ msgstr "alt süreç %s sinyali tarafından sonlandırılmıştır"
+
+#~ msgid "pclose failed: %s"
+#~ msgstr "pclose başarısız oldu: %s"
+
+#~ msgid "could not read symbolic link \"%s\""
+#~ msgstr "sembolik link \"%s\" okuma hatası"
+
+#~ msgid "could not change directory to \"%s\": %s"
+#~ msgstr "çalışma dizini \"%s\" olarak değiştirilemedi: %s"
+
+#~ msgid "could not identify current directory: %s"
+#~ msgstr "geçerli dizin tespit edilemedi: %s"
diff --git a/src/bin/psql/po/uk.po b/src/bin/psql/po/uk.po
new file mode 100644
index 0000000..5037f3a
--- /dev/null
+++ b/src/bin/psql/po/uk.po
@@ -0,0 +1,6157 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: postgresql\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2020-09-21 21:14+0000\n"
+"PO-Revision-Date: 2020-09-22 13:43\n"
+"Last-Translator: \n"
+"Language-Team: Ukrainian\n"
+"Language: uk_UA\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
+"X-Crowdin-Project: postgresql\n"
+"X-Crowdin-Project-ID: 324573\n"
+"X-Crowdin-Language: uk\n"
+"X-Crowdin-File: /DEV_13/psql.pot\n"
+"X-Crowdin-File-ID: 526\n"
+
+#: ../../../src/common/logging.c:236
+#, c-format
+msgid "fatal: "
+msgstr "збій: "
+
+#: ../../../src/common/logging.c:243
+#, c-format
+msgid "error: "
+msgstr "помилка: "
+
+#: ../../../src/common/logging.c:250
+#, c-format
+msgid "warning: "
+msgstr "попередження: "
+
+#: ../../common/exec.c:137 ../../common/exec.c:254 ../../common/exec.c:300
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "не вдалося визначити поточний каталог: %m"
+
+#: ../../common/exec.c:156
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "невірний бінарний файл \"%s\""
+
+#: ../../common/exec.c:206
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "неможливо прочитати бінарний файл \"%s\""
+
+#: ../../common/exec.c:214
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "неможливо знайти \"%s\" для виконання"
+
+#: ../../common/exec.c:270 ../../common/exec.c:309
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "не вдалося змінити каталог на \"%s\": %m"
+
+#: ../../common/exec.c:287
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "не можливо прочитати символічне послання \"%s\": %m"
+
+#: ../../common/exec.c:410
+#, c-format
+msgid "pclose failed: %m"
+msgstr "помилка pclose: %m"
+
+#: ../../common/exec.c:539 ../../common/exec.c:584 ../../common/exec.c:676
+#: command.c:1255 input.c:227 mainloop.c:81 mainloop.c:402
+#, c-format
+msgid "out of memory"
+msgstr "недостатньо пам'яті"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98 ../../common/fe_memutils.c:162
+#, c-format
+msgid "out of memory\n"
+msgstr "недостатньо пам'яті\n"
+
+#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "неможливо дублювати нульовий покажчик (внутрішня помилка)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "не можу знайти користувача з ефективним ID %ld: %s"
+
+#: ../../common/username.c:45 command.c:559
+msgid "user does not exist"
+msgstr "користувача не існує"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "невдала підстановка імені користувача: код помилки %lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "неможливо виконати команду"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "команду не знайдено"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "дочірній процес завершився з кодом виходу %d"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "дочірній процес перервано через помилку 0х%X"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "дочірній процес перервано через сигнал %d: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "дочірній процес завершився з невизнаним статусом %d"
+
+#: ../../fe_utils/cancel.c:161 ../../fe_utils/cancel.c:206
+msgid "Cancel request sent\n"
+msgstr "Запит на скасування відправлений\n"
+
+#: ../../fe_utils/cancel.c:165
+msgid "Could not send cancel request: "
+msgstr "не вдалося надіслати запит на скасування: "
+
+#: ../../fe_utils/cancel.c:210
+#, c-format
+msgid "Could not send cancel request: %s"
+msgstr "Не вдалося надіслати скасування запиту: %s"
+
+#: ../../fe_utils/print.c:350
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu рядок)"
+msgstr[1] "(%lu рядки)"
+msgstr[2] "(%lu рядків)"
+msgstr[3] "(%lu рядка)"
+
+#: ../../fe_utils/print.c:3055
+#, c-format
+msgid "Interrupted\n"
+msgstr "Перервано\n"
+
+#: ../../fe_utils/print.c:3119
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "Неможливо додати заголовок до вмісту таблиці: кількість колонок %d перевищено.\n"
+
+#: ../../fe_utils/print.c:3159
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "Неможливо додати комірку до вмісту таблиці: перевищено загальну кількість комірок %d.\n"
+
+#: ../../fe_utils/print.c:3414
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "невірний формат виводу (внутрішня помилка): %d"
+
+#: ../../fe_utils/psqlscan.l:694
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "пропуск рекурсивного розгортання змінної \"%s\""
+
+#: command.c:224
+#, c-format
+msgid "invalid command \\%s"
+msgstr "Невірна команда \\%s"
+
+#: command.c:226
+#, c-format
+msgid "Try \\? for help."
+msgstr "Спробуйте \\? для отримання довідки."
+
+#: command.c:244
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s: зайвий аргумент \"%s\" проігноровано"
+
+#: command.c:296
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "\\%s команду проігноровано; скористайтесь \\endif або Ctrl-C, щоб вийти з поточного блоку \\if"
+
+#: command.c:557
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "неможливо отримати домашню директорію для користувача ID %ld: %s"
+
+#: command.c:575
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: неможливо змінити директорію на \"%s\": %m"
+
+#: command.c:600
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "На даний момент ви від'єднанні від бази даних.\n"
+
+#: command.c:613
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" за аресою \"%s\" на порту \"%s\".\n"
+
+#: command.c:616
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" через сокет в \"%s\" на порту \"%s\".\n"
+
+#: command.c:622
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" (за аресою \"%s\") на порту \"%s\".\n"
+
+#: command.c:625
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" на порту \"%s\".\n"
+
+#: command.c:965 command.c:1061 command.c:2550
+#, c-format
+msgid "no query buffer"
+msgstr "немає буферу запитів"
+
+#: command.c:998 command.c:5061
+#, c-format
+msgid "invalid line number: %s"
+msgstr "невірний номер рядка: %s"
+
+#: command.c:1052
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "Сервер (версія %s) не пітдримує редагування вихідного коду функцій."
+
+#: command.c:1055
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "Сервер (версія %s) не підтримує редагування визначення подання."
+
+#: command.c:1137
+msgid "No changes"
+msgstr "Без змін"
+
+#: command.c:1216
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s: невірне ім'я кодування або не знайдено процедуру конверсії"
+
+#: command.c:1251 command.c:1992 command.c:3253 command.c:5163 common.c:174
+#: common.c:223 common.c:388 common.c:1237 common.c:1265 common.c:1373
+#: common.c:1480 common.c:1518 copy.c:488 copy.c:707 help.c:62 large_obj.c:157
+#: large_obj.c:192 large_obj.c:254
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1258
+msgid "There is no previous error."
+msgstr "Попередня помилка відсутня."
+
+#: command.c:1371
+#, c-format
+msgid "\\%s: missing right parenthesis"
+msgstr "\\%s: відсутня права дужка"
+
+#: command.c:1548 command.c:1853 command.c:1867 command.c:1884 command.c:2044
+#: command.c:2281 command.c:2517 command.c:2557
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s: не вистачає обов'язкового аргументу"
+
+#: command.c:1679
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif: не може йти після \\else"
+
+#: command.c:1684
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: немає відповідного \\if"
+
+#: command.c:1748
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: не може йти після \\else"
+
+#: command.c:1753
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: немає відповідного \\if"
+
+#: command.c:1793
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif: немає відповідного \\if"
+
+#: command.c:1948
+msgid "Query buffer is empty."
+msgstr "Буфер запиту порожній."
+
+#: command.c:1970
+msgid "Enter new password: "
+msgstr "Введіть новий пароль:"
+
+#: command.c:1971
+msgid "Enter it again: "
+msgstr "Введіть знову: "
+
+#: command.c:1975
+#, c-format
+msgid "Passwords didn't match."
+msgstr "Паролі не співпадають."
+
+#: command.c:2074
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s: не вдалося прочитати значення змінної"
+
+#: command.c:2177
+msgid "Query buffer reset (cleared)."
+msgstr "Буфер запитів скинуто (очищено)."
+
+#: command.c:2199
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "Історію записано до файлу \"%s\".\n"
+
+#: command.c:2286
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: змінна середовища не повинна містити \"=\""
+
+#: command.c:2347
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "Сервер (версія %s) не пітдримує відображнення вихідного коду функцій."
+
+#: command.c:2350
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "Сервер (версія %s) не підтримує відображення визначення подання."
+
+#: command.c:2357
+#, c-format
+msgid "function name is required"
+msgstr "необхідне ім'я функції"
+
+#: command.c:2359
+#, c-format
+msgid "view name is required"
+msgstr "необхідне ім'я подання"
+
+#: command.c:2489
+msgid "Timing is on."
+msgstr "Таймер увімкнено."
+
+#: command.c:2491
+msgid "Timing is off."
+msgstr "Таймер вимкнено."
+
+#: command.c:2576 command.c:2604 command.c:3661 command.c:3664 command.c:3667
+#: command.c:3673 command.c:3675 command.c:3683 command.c:3693 command.c:3702
+#: command.c:3716 command.c:3733 command.c:3791 common.c:70 copy.c:331
+#: copy.c:403 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2988 startup.c:236 startup.c:287
+msgid "Password: "
+msgstr "Пароль: "
+
+#: command.c:2993 startup.c:284
+#, c-format
+msgid "Password for user %s: "
+msgstr "Пароль користувача %s:"
+
+#: command.c:3064
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "Мають бути введені усі параметри з'єднання, оскільки відсутнє підключення до бази даних"
+
+#: command.c:3257
+#, c-format
+msgid "Previous connection kept"
+msgstr "Попереднє підключення триває"
+
+#: command.c:3261
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\connect: %s"
+
+#: command.c:3310
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" за адресою \"%s\" на порту \"%s\".\n"
+
+#: command.c:3313
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "Ви тепер під'єднані до бази даних \"%s\" як користувач \"%s\" через сокет в \"%s\" на порту \"%s\".\n"
+
+#: command.c:3319
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "Ви під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" (за адресою \"%s\") на порту \"%s\".\n"
+
+#: command.c:3322
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "Ви тепер під'єднані до бази даних \"%s\" як користувач \"%s\" на хості \"%s\" на порту \"%s\".\n"
+
+#: command.c:3327
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "Ви тепер під'єднані до бази даних \"%s\" як користувач \"%s\".\n"
+
+#: command.c:3360
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, сервер %s)\n"
+
+#: command.c:3368
+#, c-format
+msgid "WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr "УВАГА: мажорна версія %s %s, мажорна версія сервера %s.\n"
+" Деякі функції psql можуть не працювати.\n"
+
+#: command.c:3407
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "З'єднання SSL (протокол: %s, шифр: %s, біти: %s, компресія: %s)\n"
+
+#: command.c:3408 command.c:3409 command.c:3410
+msgid "unknown"
+msgstr "невідомо"
+
+#: command.c:3411 help.c:45
+msgid "off"
+msgstr "вимк"
+
+#: command.c:3411 help.c:45
+msgid "on"
+msgstr "увімк"
+
+#: command.c:3425
+#, c-format
+msgid "GSSAPI-encrypted connection\n"
+msgstr "З'єднання зашифровано GSSAPI\n"
+
+#: command.c:3445
+#, c-format
+msgid "WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr "УВАГА: Кодова сторінка консолі (%u) відрізняється від кодової сторінки Windows (%u)\n"
+" 8-бітові символи можуть працювати неправильно. Детальніше у розділі \n"
+" \"Нотатки для користувачів Windows\" у документації psql.\n"
+
+#: command.c:3549
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "змінна середовища PSQL_EDITOR_LINENUMBER_ARG має бути встановлена, щоб вказувати номер рядка"
+
+#: command.c:3578
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "неможливо запустити редактор \"%s\""
+
+#: command.c:3580
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "неможливо запустити /bin/sh"
+
+#: command.c:3618
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "неможливо знайти тимчасову директорію: %s"
+
+#: command.c:3645
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "неможливо відкрити тимчасовий файл \"%s\": %m"
+
+#: command.c:3950
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset: неоднозначна абревіатура \"%s\" відповідає обом \"%s\" і \"%s"
+
+#: command.c:3970
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: дозволені формати: aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:3989
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: дозволені стилі ліній: ascii, old-ascii, unicode"
+
+#: command.c:4004
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset: дозволені стилі ліній рамок Unicode: single, double"
+
+#: command.c:4019
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset: дозволені стилі ліній стовпців для Unicode: single, double"
+
+#: command.c:4034
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset: дозволені стилі ліній заголовків для Unicode: single, double"
+
+#: command.c:4077
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep повинен бути однобайтовим символом"
+
+#: command.c:4082
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldsep не може бути подвійною лапкою, новим рядком або поверненням каретки"
+
+#: command.c:4219 command.c:4407
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: невідомий параметр: %s"
+
+#: command.c:4239
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "Стиль рамки %d.\n"
+
+#: command.c:4245
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "Цільова ширина не встановлена.\n"
+
+#: command.c:4247
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "Цільова ширина %d.\n"
+
+#: command.c:4254
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "Розширене відображення увімкнуто.\n"
+
+#: command.c:4256
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "Розширене відображення використовується автоматично.\n"
+
+#: command.c:4258
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "Розширене відображення вимкнуто.\n"
+
+#: command.c:4264
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "Розділювач полів CSV: \"%s\".\n"
+
+#: command.c:4272 command.c:4280
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "Розділювач полів - нульовий байт.\n"
+
+#: command.c:4274
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "Розділювач полів \"%s\".\n"
+
+#: command.c:4287
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "Нинжній колонтитул увімкнуто за замовчуванням.\n"
+
+#: command.c:4289
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "Нинжній колонтитул вимкнуто за замовчуванням.\n"
+
+#: command.c:4295
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "Формат виводу %s.\n"
+
+#: command.c:4301
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "Стиль лінії %s.\n"
+
+#: command.c:4308
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr "Null відображається як \"%s\".\n"
+
+#: command.c:4316
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "Локалізоване виведення чисел ввімкнено.\n"
+
+#: command.c:4318
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "Локалізоване виведення чисел вимкнено.\n"
+
+#: command.c:4325
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "Пейджер використовується для виведення довгого тексту.\n"
+
+#: command.c:4327
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "Завжди використовується пейджер.\n"
+
+#: command.c:4329
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "Пейджер не використовується.\n"
+
+#: command.c:4335
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "Пейджер не буде використовуватися для менш ніж %d рядка.\n"
+msgstr[1] "Пейджер не буде використовуватися для менш ніж %d рядків.\n"
+msgstr[2] "Пейджер не буде використовуватися для менш ніж %d рядків.\n"
+msgstr[3] "Пейджер не буде використовуватися для менш ніж %d рядка.\n"
+
+#: command.c:4345 command.c:4355
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "Розділювач записів - нульовий байт.\n"
+
+#: command.c:4347
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "Розділювач записів: <newline>.\n"
+
+#: command.c:4349
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "Розділювач записів: \"%s\".\n"
+
+#: command.c:4362
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "Табличні атрибути \"%s\".\n"
+
+#: command.c:4365
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "Атрибути таблиць не задані.\n"
+
+#: command.c:4372
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "Заголовок: \"%s\".\n"
+
+#: command.c:4374
+#, c-format
+msgid "Title is unset.\n"
+msgstr "Заголовок не встановлено.\n"
+
+#: command.c:4381
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "Увімкнуто тільки кортежі.\n"
+
+#: command.c:4383
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "Вимкнуто тільки кортежі.\n"
+
+#: command.c:4389
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Стиль ліній рамки для Unicode: \"%s\".\n"
+
+#: command.c:4395
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Стиль ліній стовпців для Unicode: \"%s\".\n"
+
+#: command.c:4401
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Стиль ліній заголовків для Unicode: \"%s\".\n"
+
+#: command.c:4634
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!: помилка"
+
+#: command.c:4659 common.c:648
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch не може бути використано із пустим запитом"
+
+#: command.c:4700
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (кожні %g сек)\n"
+
+#: command.c:4703
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (кожні %g сек)\n"
+
+#: command.c:4757 command.c:4764 common.c:548 common.c:555 common.c:1220
+#, c-format
+msgid "********* QUERY **********\n"
+"%s\n"
+"**************************\n\n"
+msgstr "********* ЗАПИТ **********\n"
+"%s\n"
+"**************************\n\n"
+
+#: command.c:4956
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\" не є поданням"
+
+#: command.c:4972
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "неможливо розібрати масив reloptions"
+
+#: common.c:159
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "не можна вийти без активного з'єднання"
+
+#: common.c:200
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "аргумент командної оболонки містить символ нового рядка або повернення каретки: \"%s\""
+
+#: common.c:304
+#, c-format
+msgid "connection to server was lost"
+msgstr "з'єднання із сервером втрачено"
+
+#: common.c:308
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "З'єднання із сервером втрачено. Спроба перевстановити:"
+
+#: common.c:313
+#, c-format
+msgid "Failed.\n"
+msgstr "Помилка.\n"
+
+#: common.c:326
+#, c-format
+msgid "Succeeded.\n"
+msgstr "Вдало.\n"
+
+#: common.c:378 common.c:938 common.c:1155
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "неочікуваний PQresultStatus: %d"
+
+#: common.c:487
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "Час: %.3f мс\n"
+
+#: common.c:502
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "Час: %.3f мс (%02d:%06.3f)\n"
+
+#: common.c:511
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "Час: %.3f мс (%02d:%02d:%06.3f)\n"
+
+#: common.c:518
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "Час: %.3f мс (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:542 common.c:600 common.c:1191
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "На даний момент ви від'єднанні від бази даних."
+
+#: common.c:655
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch не може бути використано з COPY"
+
+#: common.c:660
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "неочікуваний результат статусу для \\watch"
+
+#: common.c:690
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "Асинхронне сповіщення \"%s\" з навантаженням \"%s\" отримане від серверного процесу з PID %d.\n"
+
+#: common.c:693
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "Асинхронне сповіщення \"%s\" отримане від серверного процесу з PID %d.\n"
+
+#: common.c:726 common.c:743
+#, c-format
+msgid "could not print result table: %m"
+msgstr "не вдалося надрукувати таблицю результатів: %m"
+
+#: common.c:764
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "немає рядків повернутих для \\gset"
+
+#: common.c:769
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "більш, ніж один рядок повернуто для \\gset"
+
+#: common.c:1200
+#, c-format
+msgid "***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr "***(Покроковий режим: перевірка команди)*******************************************\n"
+"%s\n"
+"***(Enter - виповнити; х і Enter - відмінити)********************\n"
+
+#: common.c:1255
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "Сервер (версія %s) не підтримує точки збереження для ON_ERROR_ROLLBACK."
+
+#: common.c:1318
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "ІНСТРУКЦІЯ: %s"
+
+#: common.c:1361
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "неочікуваний стан транзакції (%d)"
+
+#: common.c:1502 describe.c:2001
+msgid "Column"
+msgstr "Стовпець"
+
+#: common.c:1503 describe.c:177 describe.c:393 describe.c:411 describe.c:456
+#: describe.c:473 describe.c:962 describe.c:1126 describe.c:1711
+#: describe.c:1735 describe.c:2002 describe.c:3729 describe.c:3939
+#: describe.c:4172 describe.c:5378
+msgid "Type"
+msgstr "Тип"
+
+#: common.c:1552
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "Команда не має результату або результат не має стовпців.\n"
+
+#: copy.c:98
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy: необхідні аргументи"
+
+#: copy.c:253
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy: помилка розбору аргументу біля \"%s\""
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy: помилка розбору в кінці рядка"
+
+#: copy.c:328
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "не вдалося виконати команду \"%s\": %m"
+
+#: copy.c:344
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "не вдалося отримати інформацію від файлу \"%s\": %m"
+
+#: copy.c:348
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s: не можна копіювати з/до каталогу"
+
+#: copy.c:385
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "не вдалося закрити канал за допомогою зовнішньої команди: %m"
+
+#: copy.c:390
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:453 copy.c:463
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "неможливо записати дані COPY: %m"
+
+#: copy.c:469
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "Помилка передачі даних COPY: %s"
+
+#: copy.c:530
+msgid "canceled by user"
+msgstr "скасовано користувачем"
+
+#: copy.c:541
+msgid "Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr "Введіть дані для копювання, розділяючи переносом рядка.\n"
+"Завершіть введення за допомогою \"\\.\" або за допомогою сигналу EOF."
+
+#: copy.c:669
+msgid "aborted because of read failure"
+msgstr "перервано через помилку читання"
+
+#: copy.c:703
+msgid "trying to exit copy mode"
+msgstr "спроба вийти з режиму копіювання"
+
+#: crosstabview.c:123
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview: команда не повернула набір з результатами"
+
+#: crosstabview.c:129
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview: запит має повернути принаймні три стовпці"
+
+#: crosstabview.c:156
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: вертикальні і горизонтальні заголовки повинні бути різними стовпцями"
+
+#: crosstabview.c:172
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: необхідно вказати стовпець даних, коли запит повертає більше трьох стовпців"
+
+#: crosstabview.c:228
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: Максимальна кількість стовпців (%d) перевищена"
+
+#: crosstabview.c:397
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: результат запиту містить кілька значень даних для рядка «%s», стовпця «%s»"
+
+#: crosstabview.c:645
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: номер стовпця %d поза межами 1..%d"
+
+#: crosstabview.c:670
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: неоднозначна назва стовпця: \"%s\""
+
+#: crosstabview.c:678
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: ім'я стовпця не знайдено: \"%s\""
+
+#: describe.c:75 describe.c:373 describe.c:678 describe.c:810 describe.c:954
+#: describe.c:1115 describe.c:1187 describe.c:3718 describe.c:3926
+#: describe.c:4170 describe.c:4261 describe.c:4528 describe.c:4688
+#: describe.c:4929 describe.c:5004 describe.c:5015 describe.c:5077
+#: describe.c:5502 describe.c:5585
+msgid "Schema"
+msgstr "Схема"
+
+#: describe.c:76 describe.c:174 describe.c:242 describe.c:250 describe.c:374
+#: describe.c:679 describe.c:811 describe.c:872 describe.c:955 describe.c:1188
+#: describe.c:3719 describe.c:3927 describe.c:4093 describe.c:4171
+#: describe.c:4262 describe.c:4341 describe.c:4529 describe.c:4613
+#: describe.c:4689 describe.c:4930 describe.c:5005 describe.c:5016
+#: describe.c:5078 describe.c:5275 describe.c:5359 describe.c:5583
+#: describe.c:5755 describe.c:5995
+msgid "Name"
+msgstr "Назва"
+
+#: describe.c:77 describe.c:386 describe.c:404 describe.c:450 describe.c:467
+msgid "Result data type"
+msgstr "Тип даних результату"
+
+#: describe.c:85 describe.c:98 describe.c:102 describe.c:387 describe.c:405
+#: describe.c:451 describe.c:468
+msgid "Argument data types"
+msgstr "Типи даних аргументів"
+
+#: describe.c:110 describe.c:117 describe.c:185 describe.c:273 describe.c:513
+#: describe.c:727 describe.c:826 describe.c:897 describe.c:1190 describe.c:2020
+#: describe.c:3506 describe.c:3779 describe.c:3973 describe.c:4124
+#: describe.c:4198 describe.c:4271 describe.c:4354 describe.c:4437
+#: describe.c:4556 describe.c:4622 describe.c:4690 describe.c:4831
+#: describe.c:4873 describe.c:4946 describe.c:5008 describe.c:5017
+#: describe.c:5079 describe.c:5301 describe.c:5381 describe.c:5516
+#: describe.c:5586 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "Опис"
+
+#: describe.c:135
+msgid "List of aggregate functions"
+msgstr "Перелік агрегатних функцій"
+
+#: describe.c:160
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "Сервер (версія %s) не підтримує методи доступу."
+
+#: describe.c:175
+msgid "Index"
+msgstr "Індекс"
+
+#: describe.c:176 describe.c:3737 describe.c:3952 describe.c:5503
+msgid "Table"
+msgstr "Таблиця"
+
+#: describe.c:184 describe.c:5280
+msgid "Handler"
+msgstr "Обробник"
+
+#: describe.c:203
+msgid "List of access methods"
+msgstr "Список методів доступу"
+
+#: describe.c:229
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "Сервер (версія %s) не підтримує табличні простори."
+
+#: describe.c:243 describe.c:251 describe.c:501 describe.c:717 describe.c:873
+#: describe.c:1114 describe.c:3730 describe.c:3928 describe.c:4097
+#: describe.c:4343 describe.c:4614 describe.c:5276 describe.c:5360
+#: describe.c:5756 describe.c:5893 describe.c:5996 describe.c:6111
+#: describe.c:6190 large_obj.c:289
+msgid "Owner"
+msgstr "Власник"
+
+#: describe.c:244 describe.c:252
+msgid "Location"
+msgstr "Розташування"
+
+#: describe.c:263 describe.c:3323
+msgid "Options"
+msgstr "Параметри"
+
+#: describe.c:268 describe.c:690 describe.c:889 describe.c:3771 describe.c:3775
+msgid "Size"
+msgstr "Розмір"
+
+#: describe.c:290
+msgid "List of tablespaces"
+msgstr "Список табличних просторів"
+
+#: describe.c:333
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df приймає в якості параметрів тільки [anptwS+]"
+
+#: describe.c:341 describe.c:352
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df не приймає параметр \"%c\" із сервером версії %s"
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:389 describe.c:407 describe.c:453 describe.c:470
+msgid "agg"
+msgstr "агр."
+
+#: describe.c:390 describe.c:408
+msgid "window"
+msgstr "вікно"
+
+#: describe.c:391
+msgid "proc"
+msgstr "проц"
+
+#: describe.c:392 describe.c:410 describe.c:455 describe.c:472
+msgid "func"
+msgstr "функ"
+
+#: describe.c:409 describe.c:454 describe.c:471 describe.c:1324
+msgid "trigger"
+msgstr "тригер"
+
+#: describe.c:483
+msgid "immutable"
+msgstr "постійна"
+
+#: describe.c:484
+msgid "stable"
+msgstr "стабільна"
+
+#: describe.c:485
+msgid "volatile"
+msgstr "мінлива"
+
+#: describe.c:486
+msgid "Volatility"
+msgstr "Мінливість"
+
+#: describe.c:494
+msgid "restricted"
+msgstr "обмежений"
+
+#: describe.c:495
+msgid "safe"
+msgstr "безпечний"
+
+#: describe.c:496
+msgid "unsafe"
+msgstr "небезпечний"
+
+#: describe.c:497
+msgid "Parallel"
+msgstr "Паралельність"
+
+#: describe.c:502
+msgid "definer"
+msgstr "визначник"
+
+#: describe.c:503
+msgid "invoker"
+msgstr "викликач"
+
+#: describe.c:504
+msgid "Security"
+msgstr "Безпека"
+
+#: describe.c:511
+msgid "Language"
+msgstr "Мова"
+
+#: describe.c:512
+msgid "Source code"
+msgstr "Вихідний код"
+
+#: describe.c:641
+msgid "List of functions"
+msgstr "Список функцій"
+
+#: describe.c:689
+msgid "Internal name"
+msgstr "Внутрішнє назва"
+
+#: describe.c:711
+msgid "Elements"
+msgstr "Елементи"
+
+#: describe.c:768
+msgid "List of data types"
+msgstr "Список типів даних"
+
+#: describe.c:812
+msgid "Left arg type"
+msgstr "Тип лівого аргумента"
+
+#: describe.c:813
+msgid "Right arg type"
+msgstr "Тип правого аргумента"
+
+#: describe.c:814
+msgid "Result type"
+msgstr "Результуючий тип"
+
+#: describe.c:819 describe.c:4349 describe.c:4414 describe.c:4420
+#: describe.c:4830 describe.c:6362 describe.c:6366
+msgid "Function"
+msgstr "Функція"
+
+#: describe.c:844
+msgid "List of operators"
+msgstr "Список операторів"
+
+#: describe.c:874
+msgid "Encoding"
+msgstr "Кодування"
+
+#: describe.c:879 describe.c:4530
+msgid "Collate"
+msgstr "Порядок сортування"
+
+#: describe.c:880 describe.c:4531
+msgid "Ctype"
+msgstr "Ctype"
+
+#: describe.c:893
+msgid "Tablespace"
+msgstr "Табличний простір"
+
+#: describe.c:915
+msgid "List of databases"
+msgstr "Список баз даних"
+
+#: describe.c:956 describe.c:1117 describe.c:3720
+msgid "table"
+msgstr "таблиця"
+
+#: describe.c:957 describe.c:3721
+msgid "view"
+msgstr "подання"
+
+#: describe.c:958 describe.c:3722
+msgid "materialized view"
+msgstr "матеріалізоване подання"
+
+#: describe.c:959 describe.c:1119 describe.c:3724
+msgid "sequence"
+msgstr "послідовність"
+
+#: describe.c:960 describe.c:3726
+msgid "foreign table"
+msgstr "зовнішня таблиця"
+
+#: describe.c:961 describe.c:3727 describe.c:3937
+msgid "partitioned table"
+msgstr "секційна таблиця"
+
+#: describe.c:973
+msgid "Column privileges"
+msgstr "Права для стовпців"
+
+#: describe.c:1004 describe.c:1038
+msgid "Policies"
+msgstr "Політики"
+
+#: describe.c:1070 describe.c:6052 describe.c:6056
+msgid "Access privileges"
+msgstr "Права доступу"
+
+#: describe.c:1101
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "Сервер (версія %s) не підтримує зміну прав за замовчуванням."
+
+#: describe.c:1121
+msgid "function"
+msgstr "функція"
+
+#: describe.c:1123
+msgid "type"
+msgstr "тип"
+
+#: describe.c:1125
+msgid "schema"
+msgstr "схема"
+
+#: describe.c:1149
+msgid "Default access privileges"
+msgstr "Права доступу за замовчуванням"
+
+#: describe.c:1189
+msgid "Object"
+msgstr "Об'єкт"
+
+#: describe.c:1203
+msgid "table constraint"
+msgstr "обмеження таблиці"
+
+#: describe.c:1225
+msgid "domain constraint"
+msgstr "обмеження домену"
+
+#: describe.c:1253
+msgid "operator class"
+msgstr "клас операторів"
+
+#: describe.c:1282
+msgid "operator family"
+msgstr "сімейство операторів"
+
+#: describe.c:1304
+msgid "rule"
+msgstr "правило"
+
+#: describe.c:1346
+msgid "Object descriptions"
+msgstr "Опис об'єкту"
+
+#: describe.c:1402 describe.c:3843
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "Не знайдено жодного відношення під назвою \"%s\"."
+
+#: describe.c:1405 describe.c:3846
+#, c-format
+msgid "Did not find any relations."
+msgstr "Не знайдено жодного відношення."
+
+#: describe.c:1660
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "Не знайдено жодного відношення з OID %s."
+
+#: describe.c:1712 describe.c:1736
+msgid "Start"
+msgstr "Початок"
+
+#: describe.c:1713 describe.c:1737
+msgid "Minimum"
+msgstr "Мінімум"
+
+#: describe.c:1714 describe.c:1738
+msgid "Maximum"
+msgstr "Максимум"
+
+#: describe.c:1715 describe.c:1739
+msgid "Increment"
+msgstr "Приріст"
+
+#: describe.c:1716 describe.c:1740 describe.c:1871 describe.c:4265
+#: describe.c:4431 describe.c:4545 describe.c:4550 describe.c:6099
+msgid "yes"
+msgstr "так"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4265
+#: describe.c:4428 describe.c:4545 describe.c:6100
+msgid "no"
+msgstr "ні"
+
+#: describe.c:1718 describe.c:1742
+msgid "Cycles?"
+msgstr "Цикли?"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cache"
+msgstr "Кеш"
+
+#: describe.c:1786
+#, c-format
+msgid "Owned by: %s"
+msgstr "Власник: %s"
+
+#: describe.c:1790
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "Послідовність для стовпця identity: %s"
+
+#: describe.c:1797
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "Послідовність \"%s.%s\""
+
+#: describe.c:1933
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "Таблиця без журналювання \"%s.%s\""
+
+#: describe.c:1936
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "Таблиця \"%s.%s\""
+
+#: describe.c:1940
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "Подання \"%s.%s\""
+
+#: describe.c:1945
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "Матеріалізоване подання без журналювання \"%s.%s\""
+
+#: describe.c:1948
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "Матеріалізоване подання \"%s.%s\""
+
+#: describe.c:1953
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "Індекс без журналювання \"%s.%s\""
+
+#: describe.c:1956
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "Індекс \"%s.%s\""
+
+#: describe.c:1961
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "Секційний індекс без журналювання \"%s.%s\""
+
+#: describe.c:1964
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "Секційний індекс \"%s.%s\""
+
+#: describe.c:1969
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "Спеціальне відношення \"%s.%s\""
+
+#: describe.c:1973
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "Таблиця TOAST \"%s.%s\""
+
+#: describe.c:1977
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "Композитний тип \"%s.%s\""
+
+#: describe.c:1981
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "Зовнішня таблиця \"%s.%s\""
+
+#: describe.c:1986
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "Секційна таблиця без журналювання \"%s.%s\""
+
+#: describe.c:1989
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "Секційна таблиця \"%s.%s\""
+
+#: describe.c:2005 describe.c:4178
+msgid "Collation"
+msgstr "Сортування"
+
+#: describe.c:2006 describe.c:4185
+msgid "Nullable"
+msgstr "Обнуляється"
+
+#: describe.c:2007 describe.c:4186
+msgid "Default"
+msgstr "За замовчуванням"
+
+#: describe.c:2010
+msgid "Key?"
+msgstr "Ключ?"
+
+#: describe.c:2012
+msgid "Definition"
+msgstr "Визначення"
+
+#: describe.c:2014 describe.c:5296 describe.c:5380 describe.c:5451
+#: describe.c:5515
+msgid "FDW options"
+msgstr "Налаштування FDW"
+
+#: describe.c:2016
+msgid "Storage"
+msgstr "Сховище"
+
+#: describe.c:2018
+msgid "Stats target"
+msgstr "Статистична ціль"
+
+#: describe.c:2131
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "Розділ: %s %s"
+
+#: describe.c:2143
+msgid "No partition constraint"
+msgstr "Відсутнє розділове обмеження"
+
+#: describe.c:2145
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "Обмеження секції: %s"
+
+#: describe.c:2169
+#, c-format
+msgid "Partition key: %s"
+msgstr "Ключ розділу: %s"
+
+#: describe.c:2195
+#, c-format
+msgid "Owning table: \"%s.%s\""
+msgstr "Таблиця, що володіє: \"%s.%s\""
+
+#: describe.c:2266
+msgid "primary key, "
+msgstr "первинний ключ,"
+
+#: describe.c:2268
+msgid "unique, "
+msgstr "унікальний,"
+
+#: describe.c:2274
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "для таблиці \"%s.%s\""
+
+#: describe.c:2278
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", предикат (%s)"
+
+#: describe.c:2281
+msgid ", clustered"
+msgstr ", кластеризовано"
+
+#: describe.c:2284
+msgid ", invalid"
+msgstr ", недійсний"
+
+#: describe.c:2287
+msgid ", deferrable"
+msgstr ", відтермінований"
+
+#: describe.c:2290
+msgid ", initially deferred"
+msgstr ", від початку відтермінований"
+
+#: describe.c:2293
+msgid ", replica identity"
+msgstr ", ідентичність репліки"
+
+#: describe.c:2360
+msgid "Indexes:"
+msgstr "Індекси:"
+
+#: describe.c:2444
+msgid "Check constraints:"
+msgstr "Обмеження перевірки:"
+
+#: describe.c:2512
+msgid "Foreign-key constraints:"
+msgstr "Обмеження зовнішнього ключа:"
+
+#: describe.c:2575
+msgid "Referenced by:"
+msgstr "Посилання ззовні:"
+
+#: describe.c:2625
+msgid "Policies:"
+msgstr "Політики:"
+
+#: describe.c:2628
+msgid "Policies (forced row security enabled):"
+msgstr "Політики (посилений захист рядків активовано):"
+
+#: describe.c:2631
+msgid "Policies (row security enabled): (none)"
+msgstr "Політики (захист рядків ввімкнуто): (ні)"
+
+#: describe.c:2634
+msgid "Policies (forced row security enabled): (none)"
+msgstr "Політики (посилений захист рядків ввімкнуто): (ні)"
+
+#: describe.c:2637
+msgid "Policies (row security disabled):"
+msgstr "Політики (захист рядків вимкнуто):"
+
+#: describe.c:2705
+msgid "Statistics objects:"
+msgstr "Об'єкти статистики:"
+
+#: describe.c:2819 describe.c:2923
+msgid "Rules:"
+msgstr "Правила:"
+
+#: describe.c:2822
+msgid "Disabled rules:"
+msgstr "Вимкнені правила:"
+
+#: describe.c:2825
+msgid "Rules firing always:"
+msgstr "Правила, що завжди працюють:"
+
+#: describe.c:2828
+msgid "Rules firing on replica only:"
+msgstr "Правила, що працюють тільки на репліці:"
+
+#: describe.c:2868
+msgid "Publications:"
+msgstr "Публікації:"
+
+#: describe.c:2906
+msgid "View definition:"
+msgstr "Визначення подання:"
+
+#: describe.c:3053
+msgid "Triggers:"
+msgstr "Тригери:"
+
+#: describe.c:3057
+msgid "Disabled user triggers:"
+msgstr "Вимкнені користувацькі тригери:"
+
+#: describe.c:3059
+msgid "Disabled triggers:"
+msgstr "Вимкнені тригери:"
+
+#: describe.c:3062
+msgid "Disabled internal triggers:"
+msgstr "Вимкнені внутрішні тригери:"
+
+#: describe.c:3065
+msgid "Triggers firing always:"
+msgstr "Тригери, що завжди працюють:"
+
+#: describe.c:3068
+msgid "Triggers firing on replica only:"
+msgstr "Тригери, що працюють тільки на репліці:"
+
+#: describe.c:3140
+#, c-format
+msgid "Server: %s"
+msgstr "Сервер: %s"
+
+#: describe.c:3148
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "Налаштування FDW: (%s)"
+
+#: describe.c:3169
+msgid "Inherits"
+msgstr "Успадковує"
+
+#: describe.c:3229
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "Число секцій: %d"
+
+#: describe.c:3238
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "Кількість розділів: %d (\\d+ для списку)"
+
+#: describe.c:3240
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "Кількість дочірніх таблиць: %d (\\d+ для списку)"
+
+#: describe.c:3247
+msgid "Child tables"
+msgstr "Дочірні таблиці"
+
+#: describe.c:3247
+msgid "Partitions"
+msgstr "Розділи"
+
+#: describe.c:3276
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "Типізована таблиця типу: %s"
+
+#: describe.c:3292
+msgid "Replica Identity"
+msgstr "Ідентичність репліки"
+
+#: describe.c:3305
+msgid "Has OIDs: yes"
+msgstr "Має OIDs: так"
+
+#: describe.c:3314
+#, c-format
+msgid "Access method: %s"
+msgstr "Метод доступу: %s"
+
+#: describe.c:3394
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "Табличний простір: \"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3406
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", табличний простір \"%s\""
+
+#: describe.c:3499
+msgid "List of roles"
+msgstr "Список ролей"
+
+#: describe.c:3501
+msgid "Role name"
+msgstr "Ім'я ролі"
+
+#: describe.c:3502
+msgid "Attributes"
+msgstr "Атрибути"
+
+#: describe.c:3503
+msgid "Member of"
+msgstr "Член"
+
+#: describe.c:3514
+msgid "Superuser"
+msgstr "Суперкористувач"
+
+#: describe.c:3517
+msgid "No inheritance"
+msgstr "Без успадкування"
+
+#: describe.c:3520
+msgid "Create role"
+msgstr "Створити роль"
+
+#: describe.c:3523
+msgid "Create DB"
+msgstr "Створити базу даних"
+
+#: describe.c:3526
+msgid "Cannot login"
+msgstr "Не може увійти"
+
+#: describe.c:3530
+msgid "Replication"
+msgstr "Реплікація"
+
+#: describe.c:3534
+msgid "Bypass RLS"
+msgstr "Обхід RLC"
+
+#: describe.c:3543
+msgid "No connections"
+msgstr "Без підключень"
+
+#: describe.c:3545
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d підключення"
+msgstr[1] "%d підключення"
+msgstr[2] "%d підключень"
+msgstr[3] "%d підключення"
+
+#: describe.c:3555
+msgid "Password valid until "
+msgstr "Пароль дійнсий до"
+
+#: describe.c:3605
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "Сервер (версія %s) не підтримує рольові налаштування побазово."
+
+#: describe.c:3618
+msgid "Role"
+msgstr "Роль"
+
+#: describe.c:3619
+msgid "Database"
+msgstr "База даних"
+
+#: describe.c:3620
+msgid "Settings"
+msgstr "Параметри"
+
+#: describe.c:3641
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "Не знайдено жодного параметра для ролі \"%s\" і бази даних \"%s\"."
+
+#: describe.c:3644
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "Не знайдено жодного параметру для ролі \"%s\"."
+
+#: describe.c:3647
+#, c-format
+msgid "Did not find any settings."
+msgstr "Не знайдено жодного параметру."
+
+#: describe.c:3652
+msgid "List of settings"
+msgstr "Список параметрів"
+
+#: describe.c:3723
+msgid "index"
+msgstr "індекс"
+
+#: describe.c:3725
+msgid "special"
+msgstr "спеціальний"
+
+#: describe.c:3728 describe.c:3938
+msgid "partitioned index"
+msgstr "секційний індекс"
+
+#: describe.c:3752
+msgid "permanent"
+msgstr "постійна"
+
+#: describe.c:3753
+msgid "temporary"
+msgstr "тимчасова"
+
+#: describe.c:3754
+msgid "unlogged"
+msgstr "нежурнальована"
+
+#: describe.c:3755
+msgid "Persistence"
+msgstr "Стійкість"
+
+#: describe.c:3851
+msgid "List of relations"
+msgstr "Список відношень"
+
+#: describe.c:3899
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "Сервер (версія %s) не підтримує декларативне секціонування таблиць."
+
+#: describe.c:3910
+msgid "List of partitioned indexes"
+msgstr "Список секційних індексів"
+
+#: describe.c:3912
+msgid "List of partitioned tables"
+msgstr "Список секційних таблиць"
+
+#: describe.c:3916
+msgid "List of partitioned relations"
+msgstr "Список секційних відношень"
+
+#: describe.c:3947
+msgid "Parent name"
+msgstr "Батьківська назва"
+
+#: describe.c:3960
+msgid "Leaf partition size"
+msgstr "Розмір дочірньої секції"
+
+#: describe.c:3963 describe.c:3969
+msgid "Total size"
+msgstr "Загальний розмір"
+
+#: describe.c:4101
+msgid "Trusted"
+msgstr "Надійний"
+
+#: describe.c:4109
+msgid "Internal language"
+msgstr "Внутрішня мова"
+
+#: describe.c:4110
+msgid "Call handler"
+msgstr "Обробник виклику"
+
+#: describe.c:4111 describe.c:5283
+msgid "Validator"
+msgstr "Функція перевірки"
+
+#: describe.c:4114
+msgid "Inline handler"
+msgstr "Оброблювач впровадженого коду"
+
+#: describe.c:4142
+msgid "List of languages"
+msgstr "Список мов"
+
+#: describe.c:4187
+msgid "Check"
+msgstr "Перевірка"
+
+#: describe.c:4229
+msgid "List of domains"
+msgstr "Список доменів"
+
+#: describe.c:4263
+msgid "Source"
+msgstr "Джерело"
+
+#: describe.c:4264
+msgid "Destination"
+msgstr "Призначення"
+
+#: describe.c:4266 describe.c:6101
+msgid "Default?"
+msgstr "За замовчуванням?"
+
+#: describe.c:4303
+msgid "List of conversions"
+msgstr "Список перетворень"
+
+#: describe.c:4342
+msgid "Event"
+msgstr "Подія"
+
+#: describe.c:4344
+msgid "enabled"
+msgstr "увімкнено"
+
+#: describe.c:4345
+msgid "replica"
+msgstr "репліка"
+
+#: describe.c:4346
+msgid "always"
+msgstr "завжди"
+
+#: describe.c:4347
+msgid "disabled"
+msgstr "вимкнено"
+
+#: describe.c:4348 describe.c:5997
+msgid "Enabled"
+msgstr "Увімкнено"
+
+#: describe.c:4350
+msgid "Tags"
+msgstr "Теги"
+
+#: describe.c:4369
+msgid "List of event triggers"
+msgstr "Список тригерів подій"
+
+#: describe.c:4398
+msgid "Source type"
+msgstr "Початковий тип"
+
+#: describe.c:4399
+msgid "Target type"
+msgstr "Тип цілі"
+
+#: describe.c:4430
+msgid "in assignment"
+msgstr "у призначенні"
+
+#: describe.c:4432
+msgid "Implicit?"
+msgstr "Приховане?"
+
+#: describe.c:4487
+msgid "List of casts"
+msgstr "Список приведення типів"
+
+#: describe.c:4515
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "Сервер (версія %s) не підтримує співставлення."
+
+#: describe.c:4536 describe.c:4540
+msgid "Provider"
+msgstr "Постачальник"
+
+#: describe.c:4546 describe.c:4551
+msgid "Deterministic?"
+msgstr "Детермінований?"
+
+#: describe.c:4586
+msgid "List of collations"
+msgstr "Список правил сортування"
+
+#: describe.c:4645
+msgid "List of schemas"
+msgstr "Список схем"
+
+#: describe.c:4670 describe.c:4917 describe.c:4988 describe.c:5059
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "Сервер (версія %s) не підтримує повнотекстовий пошук."
+
+#: describe.c:4705
+msgid "List of text search parsers"
+msgstr "Список парсерів текстового пошуку"
+
+#: describe.c:4750
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "Не знайдено жодного парсера текстового пошуку \"%s\"."
+
+#: describe.c:4753
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "Не знайдено жодного парсера текстового пошуку."
+
+#: describe.c:4828
+msgid "Start parse"
+msgstr "Почати розбір"
+
+#: describe.c:4829
+msgid "Method"
+msgstr "Метод"
+
+#: describe.c:4833
+msgid "Get next token"
+msgstr "Отримати наступний токен"
+
+#: describe.c:4835
+msgid "End parse"
+msgstr "Закінчити розбір"
+
+#: describe.c:4837
+msgid "Get headline"
+msgstr "Отримати заголовок"
+
+#: describe.c:4839
+msgid "Get token types"
+msgstr "Отримати типи токенів"
+
+#: describe.c:4850
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "Парсер текстового пошуку \"%s.%s\""
+
+#: describe.c:4853
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "Парсер текстового пошуку \"%s\""
+
+#: describe.c:4872
+msgid "Token name"
+msgstr "Ім'я токену"
+
+#: describe.c:4883
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "Типи токенів для парсера \"%s.%s\""
+
+#: describe.c:4886
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "Типи токенів для парсера \"%s\""
+
+#: describe.c:4940
+msgid "Template"
+msgstr "Шаблон"
+
+#: describe.c:4941
+msgid "Init options"
+msgstr "Параметри ініціалізації"
+
+#: describe.c:4963
+msgid "List of text search dictionaries"
+msgstr "Список словників текстового пошуку"
+
+#: describe.c:5006
+msgid "Init"
+msgstr "Ініціалізація"
+
+#: describe.c:5007
+msgid "Lexize"
+msgstr "Виділення лексем"
+
+#: describe.c:5034
+msgid "List of text search templates"
+msgstr "Список шаблонів текстового пошуку"
+
+#: describe.c:5094
+msgid "List of text search configurations"
+msgstr "Список конфігурацій текстового пошуку"
+
+#: describe.c:5140
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "Не знайдено жодної конфігурації текстового пошуку під назвою \"%s\"."
+
+#: describe.c:5143
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "Не знайдено жодної конфігурації текствого пошуку."
+
+#: describe.c:5209
+msgid "Token"
+msgstr "Токен"
+
+#: describe.c:5210
+msgid "Dictionaries"
+msgstr "Словники"
+
+#: describe.c:5221
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "Конфігурація пошуку тексту \"%s.%s\""
+
+#: describe.c:5224
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "Конфігурація пошуку тексту \"%s\""
+
+#: describe.c:5228
+#, c-format
+msgid "\n"
+"Parser: \"%s.%s\""
+msgstr "\n"
+"Парсер: \"%s.%s\""
+
+#: describe.c:5231
+#, c-format
+msgid "\n"
+"Parser: \"%s\""
+msgstr "\n"
+"Парсер: \"%s\""
+
+#: describe.c:5265
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "Сервер (версія %s) не підтримує джерела сторонніх даних."
+
+#: describe.c:5323
+msgid "List of foreign-data wrappers"
+msgstr "Список джерел сторонніх даних"
+
+#: describe.c:5348
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "Сервер (версія %s) не підтримує сторонні сервери."
+
+#: describe.c:5361
+msgid "Foreign-data wrapper"
+msgstr "Джерело сторонніх даних"
+
+#: describe.c:5379 describe.c:5584
+msgid "Version"
+msgstr "Версія"
+
+#: describe.c:5405
+msgid "List of foreign servers"
+msgstr "Список сторонніх серверів"
+
+#: describe.c:5430
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "Сервер (версія %s) не підтримує зіставлення користувачів."
+
+#: describe.c:5440 describe.c:5504
+msgid "Server"
+msgstr "Сервер"
+
+#: describe.c:5441
+msgid "User name"
+msgstr "Ім'я користувача"
+
+#: describe.c:5466
+msgid "List of user mappings"
+msgstr "Список зіставлень користувачів"
+
+#: describe.c:5491
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "Сервер (версія %s) не підтримує сторонні таблиці."
+
+#: describe.c:5544
+msgid "List of foreign tables"
+msgstr "Список сторонніх таблиць"
+
+#: describe.c:5569 describe.c:5626
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "Сервер (версія %s) не підтримує розширення."
+
+#: describe.c:5601
+msgid "List of installed extensions"
+msgstr "Список встановлених розширень"
+
+#: describe.c:5654
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "Не знайдено жодного розширення під назвою \"%s\"."
+
+#: describe.c:5657
+#, c-format
+msgid "Did not find any extensions."
+msgstr "Не знайдено жодного розширення."
+
+#: describe.c:5701
+msgid "Object description"
+msgstr "Опис об'єкту"
+
+#: describe.c:5711
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "Об'єкти в розширенні \"%s\""
+
+#: describe.c:5740 describe.c:5816
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "Сервер (версія %s) не підтримує публікації."
+
+#: describe.c:5757 describe.c:5894
+msgid "All tables"
+msgstr "Усі таблиці"
+
+#: describe.c:5758 describe.c:5895
+msgid "Inserts"
+msgstr "Вставки"
+
+#: describe.c:5759 describe.c:5896
+msgid "Updates"
+msgstr "Оновлення"
+
+#: describe.c:5760 describe.c:5897
+msgid "Deletes"
+msgstr "Видалення"
+
+#: describe.c:5764 describe.c:5899
+msgid "Truncates"
+msgstr "Очищення"
+
+#: describe.c:5768 describe.c:5901
+msgid "Via root"
+msgstr "Через root"
+
+#: describe.c:5785
+msgid "List of publications"
+msgstr "Список публікацій"
+
+#: describe.c:5858
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "Не знайдено жодної публікації під назвою \"%s\"."
+
+#: describe.c:5861
+#, c-format
+msgid "Did not find any publications."
+msgstr "Не знайдено жодної публікації."
+
+#: describe.c:5890
+#, c-format
+msgid "Publication %s"
+msgstr "Публікація %s"
+
+#: describe.c:5938
+msgid "Tables:"
+msgstr "Таблиці:"
+
+#: describe.c:5982
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "Сервер (версія %s) не підтримує підписки."
+
+#: describe.c:5998
+msgid "Publication"
+msgstr "Публікація"
+
+#: describe.c:6005
+msgid "Synchronous commit"
+msgstr "Синхронні затвердження"
+
+#: describe.c:6006
+msgid "Conninfo"
+msgstr "Conninfo"
+
+#: describe.c:6028
+msgid "List of subscriptions"
+msgstr "Список підписок"
+
+#: describe.c:6095 describe.c:6184 describe.c:6270 describe.c:6353
+msgid "AM"
+msgstr "АМ"
+
+#: describe.c:6096
+msgid "Input type"
+msgstr "Тип вводу"
+
+#: describe.c:6097
+msgid "Storage type"
+msgstr "Тип сховища"
+
+#: describe.c:6098
+msgid "Operator class"
+msgstr "Клас операторів"
+
+#: describe.c:6110 describe.c:6185 describe.c:6271 describe.c:6354
+msgid "Operator family"
+msgstr "Сімейство операторів"
+
+#: describe.c:6143
+msgid "List of operator classes"
+msgstr "Список класів операторів"
+
+#: describe.c:6186
+msgid "Applicable types"
+msgstr "Типи для застосування"
+
+#: describe.c:6225
+msgid "List of operator families"
+msgstr "Список сімейств операторів"
+
+#: describe.c:6272
+msgid "Operator"
+msgstr "Оператор"
+
+#: describe.c:6273
+msgid "Strategy"
+msgstr "Стратегія"
+
+#: describe.c:6274
+msgid "ordering"
+msgstr "упорядкування"
+
+#: describe.c:6275
+msgid "search"
+msgstr "пошук"
+
+#: describe.c:6276
+msgid "Purpose"
+msgstr "Ціль"
+
+#: describe.c:6281
+msgid "Sort opfamily"
+msgstr "Сімейство операторів сортування"
+
+#: describe.c:6312
+msgid "List of operators of operator families"
+msgstr "Список операторів сімейств операторів"
+
+#: describe.c:6355
+msgid "Registered left type"
+msgstr "Зареєстрований лівий тип"
+
+#: describe.c:6356
+msgid "Registered right type"
+msgstr "Зареєстрований правий тип"
+
+#: describe.c:6357
+msgid "Number"
+msgstr "Число"
+
+#: describe.c:6393
+msgid "List of support functions of operator families"
+msgstr "Список функцій підтримки сімейств операторів"
+
+#: help.c:73
+#, c-format
+msgid "psql is the PostgreSQL interactive terminal.\n\n"
+msgstr "psql - це інтерактивний термінал PostgreSQL.\n\n"
+
+#: help.c:74 help.c:355 help.c:431 help.c:474
+#, c-format
+msgid "Usage:\n"
+msgstr "Використання:\n"
+
+#: help.c:75
+#, c-format
+msgid " psql [OPTION]... [DBNAME [USERNAME]]\n\n"
+msgstr " psql [ОПЦІЯ]... [БД [КОРИСТУВАЧ]]\n\n"
+
+#: help.c:77
+#, c-format
+msgid "General options:\n"
+msgstr "Основні налаштування:\n"
+
+#: help.c:82
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=КОМАНДА виконати лише одну команду (SQL або внутрішню) і вийти\n"
+
+#: help.c:83
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr " -d, --dbname=DBNAME ім'я бази даних для підключення (за замовчання: \"%s\") \n"
+
+#: help.c:84
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=FILENAME виконує команди з файлу, потім виходить\n"
+
+#: help.c:85
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list виводить список доступних баз даних, потім виходить\n"
+
+#: help.c:86
+#, c-format
+msgid " -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr " -v, --set=, --variable=NAME=VALUE\n"
+" присвоїти змінній psql NAME значення VALUE\n"
+" (наприклад, -v ON_ERROR_STOP=1)\n"
+
+#: help.c:89
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version вивести інформацію про версію, потім вийти\n"
+
+#: help.c:90
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc ігнорувати файл параметрів запуска (~/.psqlrc)\n"
+
+#: help.c:91
+#, c-format
+msgid " -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr " -1 (\"один\"), --single-transaction\n"
+" виконує як одну транзакцію (якщо не інтерактивна)\n"
+
+#: help.c:93
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help [=options] показати цю довідку, потім вийти\n"
+
+#: help.c:94
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands перерахувати команди, потім вийти\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables перерахувати спеціальні змінні, потім вийти\n"
+
+#: help.c:97
+#, c-format
+msgid "\n"
+"Input and output options:\n"
+msgstr "\n"
+"Параметри вводу і виводу:\n"
+
+#: help.c:98
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all відобразити всі вхідні дані з скрипта\n"
+
+#: help.c:99
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors відобразити команди з помилками\n"
+
+#: help.c:100
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries відобразити команди, відправлені на сервер\n"
+
+#: help.c:101
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden відобразити запити, згенеровані внутрішніми командами\n"
+
+#: help.c:102
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=FILENAME зберегти протокол роботи у файл\n"
+
+#: help.c:103
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline вимкнути розширене редагування командного рядка (readline)\n"
+
+#: help.c:104
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=FILENAME надсилати результати запиту до файлу (або до каналу |)\n"
+
+#: help.c:105
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet тихий запуск (ніяких повідомлень, лише результат запитів)\n"
+
+#: help.c:106
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step покроковий режим (підтвердження кожного запиту)\n"
+
+#: help.c:107
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line однорядковий режим (кінець рядка завершує команду)\n"
+
+#: help.c:109
+#, c-format
+msgid "\n"
+"Output format options:\n"
+msgstr "\n"
+"Параметри формату виводу:\n"
+
+#: help.c:110
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align режим виводу не вирівняної таблиці\n"
+
+#: help.c:111
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv режим виводу таблиць CSV (Comma-Separated Values)\n"
+
+#: help.c:112
+#, c-format
+msgid " -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr " -F, --field-separator=СТРОКА\n"
+" розділювач полів при не вирівняному виводі\n"
+" (за замовчуванням: \"%s\")\n"
+
+#: help.c:115
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html вивід таблиці у форматі HTML\n"
+
+#: help.c:116
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr " -P, --pset=VAR[=ARG] встановити параметр виводу змінної VAR значенню ARG (див. команду \"\\pset\")\n"
+
+#: help.c:117
+#, c-format
+msgid " -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr " -R, --record-separator=СТРОКА\n"
+" розділювач записів при не вирівняному виводі\n"
+" (за замовчуванням: новий рядок)\n"
+
+#: help.c:119
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only виводити лише рядки\n"
+
+#: help.c:120
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr " -T, --table-attr=ТЕКСТ встановити атрибути HTML-таблиці (width, border)\n"
+
+#: help.c:121
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded ввімкнути розширене виведення таблиці\n"
+
+#: help.c:122
+#, c-format
+msgid " -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr " -z, --field-separator-zero\n"
+" встановити розділювач полів для не вирівняного виводу в нульовий байт\n"
+
+#: help.c:124
+#, c-format
+msgid " -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr " -0, --record-separator-zero\n"
+" встановити розділювач записів для не вирівняного виводу в нульовий байт\n"
+
+#: help.c:127
+#, c-format
+msgid "\n"
+"Connection options:\n"
+msgstr "\n"
+"Налаштування з'єднання:\n"
+
+#: help.c:130
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr " -h, --host=HOSTNAME хост сервера бази даних або каталог сокетів (за замовчуванням: \"%s)\n"
+
+#: help.c:131
+msgid "local socket"
+msgstr "локальний сокет"
+
+#: help.c:134
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=PORT порт сервера бази даних (за замовчуванням: \"%s\")\n"
+
+#: help.c:140
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=USERNAME ім'я користувача бази даних (за змовчуванням: \"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password ніколи не запитувати пароль\n"
+
+#: help.c:142
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr " -W, --password запитувати пароль завжди (повинно траплятись автоматично)\n"
+
+#: help.c:144
+#, c-format
+msgid "\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n\n"
+msgstr "\n"
+"Щоб дізнатися більше, введіть \"\\?\" (для внутрішніх команд) або \"\\help\"(для команд SQL) в psql, або звіртеся з розділом psql документації PostgreSQL. \n\n"
+
+#: help.c:147
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Повідомляти про помилки на <%s>.\n"
+
+#: help.c:148
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Домашня сторінка %s: <%s>\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "Загальні\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright умови використання і розповсюдження PostgreSQL\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [COLUMNS] виконати запит і відобразити результати у перехресній таблиці\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose вивести максимально докладне повідомлення про останню помилку\n"
+
+#: help.c:178
+#, c-format
+msgid " \\g [(OPTIONS)] [FILE] execute query (and send results to file or |pipe);\n"
+" \\g with no arguments is equivalent to a semicolon\n"
+msgstr " \\g [(OPTIONS)] [FILE] виконати запит (і надіслати результати до файлу або |каналу);\n"
+" \\g без аргументів рівнозначно крапці з комою\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc описати результат запиту без виконання\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec виконати запит, потім виконати кожне значення в його результаті\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] виконати запит та зберегти результати в змінних psql \n"
+
+#: help.c:183
+#, c-format
+msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [(OPTIONS)] [FILE] як \\g, але вмикає розширений режим виводу\n"
+
+#: help.c:184
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q вийти з psql\n"
+
+#: help.c:185
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEC] виконувати запит кожні SEC секунд\n"
+
+#: help.c:188
+#, c-format
+msgid "Help\n"
+msgstr "Довідка\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] показати довідку по командах з \\\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options показати довідку по параметрах командного рядку psql\n"
+
+#: help.c:192
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables показати довідку по спеціальних змінних\n"
+
+#: help.c:193
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr " \\h [NAME] довідка з синтаксису команд SQL, * для всіх команд\n"
+
+#: help.c:196
+#, c-format
+msgid "Query Buffer\n"
+msgstr "Буфер запитів\n"
+
+#: help.c:197
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr " \\e [FILE] [LINE] редагувати буфер запитів (або файл) зовнішнім редактором\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [FUNCNAME [LINE]] редагувати визначення функції зовнішнім редактором\n"
+
+#: help.c:199
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [VIEWNAME [LINE]] редагувати визначення подання зовнішнім редактором\n"
+
+#: help.c:200
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p показати вміст буфера запитів\n"
+
+#: help.c:201
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r скинути (очистити) буфер запитів\n"
+
+#: help.c:203
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [FILE] відобразити історію або зберегти її до файлу\n"
+
+#: help.c:205
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w FILE писати буфер запитів до файлу\n"
+
+#: help.c:208
+#, c-format
+msgid "Input/Output\n"
+msgstr "Ввід/Вивід\n"
+
+#: help.c:209
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... виконати команду SQL COPY з потоком даних на клієнтський хост\n"
+
+#: help.c:210
+#, c-format
+msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"
+msgstr " \\echo [-n] [STRING] записати рядок до стандартного виводу (-n для пропуску нового рядка)\n"
+
+#: help.c:211
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i FILE виконати команди з файлу\n"
+
+#: help.c:212
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr " \\ir ФАЙЛ те саме, що \\i, але відносно розташування поточного сценарію\n"
+
+#: help.c:213
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [FILE] надсилати всі результати запитів до файлу або до каналу |\n"
+
+#: help.c:214
+#, c-format
+msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"
+msgstr " \\qecho [-n] [STRING] записати рядок до вихідного потоку \\o (-n для пропуску нового рядка)\n"
+
+#: help.c:215
+#, c-format
+msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"
+msgstr " \\warn [-n] [STRING] записати рядок до стандартної помилки (-n для пропуску нового рядка)\n"
+
+#: help.c:218
+#, c-format
+msgid "Conditional\n"
+msgstr "Умовний\n"
+
+#: help.c:219
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR початок умовного блоку\n"
+
+#: help.c:220
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR альтернатива в рамках поточного блоку\n"
+
+#: help.c:221
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else остаточна альтернатива в рамках поточного умовного блоку\n"
+
+#: help.c:222
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif кінець умовного блоку\n"
+
+#: help.c:225
+#, c-format
+msgid "Informational\n"
+msgstr "Інформаційний\n"
+
+#: help.c:226
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (параметри: S = показати системні об'єкти, + = додаткові деталі)\n"
+
+#: help.c:227
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] вивести таблиці, подання і послідовності\n"
+
+#: help.c:228
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] NAME описати таблицю, подання, послідовність або індекс\n"
+
+#: help.c:229
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [PATTERN] вивести агрегати\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [PATTERN] вивести методи доступу\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"
+msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] список класів операторів\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"
+msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] список сімейств операторів\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"
+msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] список операторів сімейств операторів\n"
+
+#: help.c:234
+#, c-format
+msgid " \\dAp [AMPTRN [OPFPTRN]] list support functions of operator families\n"
+msgstr " \\dAp [AMPTRN [OPFPTRN]] список функцій підтримки сімейств операторів\n"
+
+#: help.c:235
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [PATTERN] вивести табличні простори\n"
+
+#: help.c:236
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [PATTERN] вивести перетворення\n"
+
+#: help.c:237
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [PATTERN] вивести приведення типів\n"
+
+#: help.c:238
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [PATTERN] показати опис об'єкта, що не відображається в іншому місці\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [PATTERN] вивести домени\n"
+
+#: help.c:240
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [PATTERN] вивести привілеї за замовчуванням\n"
+
+#: help.c:241
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [PATTERN] вивести зовнішні таблиці\n"
+
+#: help.c:242
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [PATTERN] вивести зовнішні таблиці\n"
+
+#: help.c:243
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [PATTERN] вивести зовнішні сервери\n"
+
+#: help.c:244
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [PATTERN] вивести користувацькі зіставлення\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [PATTERN] список джерел сторонніх даних\n"
+
+#: help.c:246
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[anptw][S+] [PATRN] вивести [тільки аггрегатні/нормальні/процедурні/тригерні/віконні] функції\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [PATTERN] вивести конфігурації текстового пошуку\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [PATTERN] вивести словники текстового пошуку\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [PATTERN] вивести парсери текстового пошуку\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [PATTERN] вивести шаблони текстового пошуку\n"
+
+#: help.c:251
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [PATTERN] вивести ролі\n"
+
+#: help.c:252
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [PATTERN] вивести індекси\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl вивести великі об'єкти, те саме, що \\lo_list\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [PATTERN] вивести процедурні мови\n"
+
+#: help.c:255
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [PATTERN] вивести матеріалізовані подання\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [PATTERN] вивести схеми\n"
+
+#: help.c:257
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [PATTERN] вивести оператори\n"
+
+#: help.c:258
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [PATTERN] вивести правила сортування\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [PATTERN] вивести привілеї доступу до таблиць, подань або послідновностей \n"
+
+#: help.c:260
+#, c-format
+msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"
+msgstr " \\dP[itn+] [PATTERN] вивести [тільки індекс/таблицю] секційні відношення [n=вкладені]\n"
+
+#: help.c:261
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [PATRN1 [PATRN2]] вивести налаштування ролей побазово\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [PATTERN] вивести реплікаційні публікації\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [PATTERN] вивести реплікаційні підписки\n"
+
+#: help.c:264
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [PATTERN] вивести послідовності\n"
+
+#: help.c:265
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [PATTERN] вивести таблиці\n"
+
+#: help.c:266
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [PATTERN] вивести типи даних\n"
+
+#: help.c:267
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [PATTERN] вивести ролі\n"
+
+#: help.c:268
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [PATTERN] вивести подання\n"
+
+#: help.c:269
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [PATTERN] вивести розширення\n"
+
+#: help.c:270
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [PATTERN] вивести тригери подій\n"
+
+#: help.c:271
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [PATTERN] вивести бази даних\n"
+
+#: help.c:272
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNCNAME відобразити визначення функції\n"
+
+#: help.c:273
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] VIEWNAME відобразити визначення подання\n"
+
+#: help.c:274
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [PATTERN] те саме, що \\dp\n"
+
+#: help.c:277
+#, c-format
+msgid "Formatting\n"
+msgstr "Форматування\n"
+
+#: help.c:278
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a перемикання між режимами виводу: unaligned, aligned\n"
+
+#: help.c:279
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [STRING] встановити заголовок таблиці або прибрати, якщо не задано\n"
+
+#: help.c:280
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr " \\f [STRING] показати або встановити розділювач полів для не вирівняного виводу запиту\n"
+
+#: help.c:281
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H переключити режим виводу HTML (поточний: %s)\n"
+
+#: help.c:283
+#, c-format
+msgid " \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr " \\pset [NAME [VALUE]] встановити параметр виводу таблиці\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+
+#: help.c:290
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [on|off] показувати лише рядки (поточно %s)\n"
+
+#: help.c:292
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [STRING] встановити атрибути для HTML <table> або прибрати, якщо не задані\n"
+
+#: help.c:293
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] переключити розширений вивід (поточний: %s)\n"
+
+#: help.c:297
+#, c-format
+msgid "Connection\n"
+msgstr "Підключення\n"
+
+#: help.c:299
+#, c-format
+msgid " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo} під'єднатися до нової бази даних (поточно \"%s\")\n"
+
+#: help.c:303
+#, c-format
+msgid " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo} під'єднатися до нової бази даних (зараз з'єднання відсутнє)\n"
+
+#: help.c:305
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo показати інформацію про поточне з'єднання\n"
+
+#: help.c:306
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [ENCODING] показати або встановити кодування клієнта\n"
+
+#: help.c:307
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [USERNAME] безпечно змінити пароль користувача \n"
+
+#: help.c:310
+#, c-format
+msgid "Operating System\n"
+msgstr "Операційна система\n"
+
+#: help.c:311
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [DIR] змінити поточний робочий каталог\n"
+
+#: help.c:312
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NAME [VALUE] встановити або скинути змінну середовища\n"
+
+#: help.c:313
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [on|off] переключити таймер команд (поточний: %s)\n"
+
+#: help.c:315
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr " \\! [COMMAND] виконати команду в оболонці або запустити інтерактивну оболонку\n"
+
+#: help.c:318
+#, c-format
+msgid "Variables\n"
+msgstr "Змінні\n"
+
+#: help.c:319
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [TEXT] NAME запитати користувача значення внутрішньої змінної\n"
+
+#: help.c:320
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr " \\set [NAME [VALUE]] встановити внутрішню змінну або вивести всі, якщо не задані параметри\n"
+
+#: help.c:321
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset NAME скинути (видалити) значення внутрішньої змінної\n"
+
+#: help.c:324
+#, c-format
+msgid "Large Objects\n"
+msgstr "Великі об'єкти\n"
+
+#: help.c:325
+#, c-format
+msgid " \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr " \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID операції з великими об'єктами\n"
+
+#: help.c:352
+#, c-format
+msgid "List of specially treated variables\n\n"
+msgstr "Список спеціальних змінних\n\n"
+
+#: help.c:354
+#, c-format
+msgid "psql variables:\n"
+msgstr "змінні psql:\n"
+
+#: help.c:356
+#, c-format
+msgid " psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n\n"
+msgstr " psql --set=ІМ'Я=ЗНАЧЕННЯ\n"
+" або \\set ІМ'Я ЗНАЧЕННЯ усередині psql\n\n"
+
+#: help.c:358
+#, c-format
+msgid " AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr " AUTOCOMMIT\n"
+" якщо встановлений, успішні SQL-команди підтверджуються автоматично\n"
+
+#: help.c:360
+#, c-format
+msgid " COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr " COMP_KEYWORD_CASE\n"
+" визначає регістр для автодоповнення ключових слів SQL\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:363
+#, c-format
+msgid " DBNAME\n"
+" the currently connected database name\n"
+msgstr " DBNAME назва під'єднаної бази даних\n"
+
+#: help.c:365
+#, c-format
+msgid " ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr " ECHO контролює ввід, що виводиться на стандартний вивід [all, errors, none, queries]\n"
+
+#: help.c:368
+#, c-format
+msgid " ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr " ECHO_HIDDEN\n"
+" якщо ввімкнено, виводить внутрішні запити, виконані за допомогою \"\\\";\n"
+" якщо встановлено значення \"noexec\", тільки виводяться, але не виконуються\n"
+
+#: help.c:371
+#, c-format
+msgid " ENCODING\n"
+" current client character set encoding\n"
+msgstr " ENCODING\n"
+" поточне кодування набору символів клієнта\n"
+
+#: help.c:373
+#, c-format
+msgid " ERROR\n"
+" true if last query failed, else false\n"
+msgstr " ERROR\n"
+" істина, якщо в останньому запиті є помилка, в іншому разі - хибність\n"
+
+#: help.c:375
+#, c-format
+msgid " FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr " FETCH_COUNT\n"
+" число рядків з результатами для передачі та відображення за один раз (0 = необмежено)\n"
+
+#: help.c:377
+#, c-format
+msgid " HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr " HIDE_TABLEAM\n"
+" якщо вказано, методи доступу до таблиць не відображаються\n"
+
+#: help.c:379
+#, c-format
+msgid " HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr " HISTCONTROL контролює історію команд [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:381
+#, c-format
+msgid " HISTFILE\n"
+" file name used to store the command history\n"
+msgstr " HISTFILE ім'я файлу для зберігання історії команд\n"
+
+#: help.c:383
+#, c-format
+msgid " HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr " HISTSIZE максимальна кількість команд для зберігання в історії команд\n"
+
+#: help.c:385
+#, c-format
+msgid " HOST\n"
+" the currently connected database server host\n"
+msgstr " HOST поточний підключений хост сервера бази даних\n"
+
+#: help.c:387
+#, c-format
+msgid " IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr " IGNOREEOF кількість EOF для завершення інтерактивної сесії\n"
+
+#: help.c:389
+#, c-format
+msgid " LASTOID\n"
+" value of the last affected OID\n"
+msgstr " LASTOID значення останнього залученого OID\n"
+
+#: help.c:391
+#, c-format
+msgid " LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr " LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" повідомлення та код SQLSTATE останньої помилки, або пустий рядок та \"00000\", якщо помилки не було\n"
+
+#: help.c:394
+#, c-format
+msgid " ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr " ON_ERROR_ROLLBACK\n"
+" якщо встановлено, транзакція не припиняється у разі помилки (використовуються неявні точки збереження)\n"
+
+#: help.c:396
+#, c-format
+msgid " ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr " ON_ERROR_STOP\n"
+" зупиняти виконання пакету команд після помилки\n"
+
+#: help.c:398
+#, c-format
+msgid " PORT\n"
+" server port of the current connection\n"
+msgstr " PORT\n"
+" порт сервера для поточного з'єднання\n"
+
+#: help.c:400
+#, c-format
+msgid " PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr " PROMPT1\n"
+" визначає стандратне запрошення psql \n"
+
+#: help.c:402
+#, c-format
+msgid " PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr " PROMPT2\n"
+" визначає запрошення, яке використовується при продовженні команди з попереднього рядка\n"
+
+#: help.c:404
+#, c-format
+msgid " PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr " PROMPT3\n"
+" визначає запрошення, яке виконується під час COPY ... FROM STDIN\n"
+
+#: help.c:406
+#, c-format
+msgid " QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr " QUIET\n"
+" тихий запуск ( як із параметром -q)\n"
+
+#: help.c:408
+#, c-format
+msgid " ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr " ROW_COUNT\n"
+" число повернених або оброблених рядків останнім запитом, або 0\n"
+
+#: help.c:410
+#, c-format
+msgid " SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr " SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" версія серевера (у короткому текстовому або числовому форматі)\n"
+
+#: help.c:413
+#, c-format
+msgid " SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr " SHOW_CONTEXT\n"
+" керує відображенням полів контексту повідомлень [never, errors, always]\n"
+
+#: help.c:415
+#, c-format
+msgid " SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr " SINGLELINE\n"
+" якщо встановлено, кінець рядка завершує режим вводу SQL-команди (як з параметром -S)\n"
+
+#: help.c:417
+#, c-format
+msgid " SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr " SINGLESTEP\n"
+" покроковий режим (як з параметром -s)\n"
+
+#: help.c:419
+#, c-format
+msgid " SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr " SQLSTATE\n"
+" SQLSTATE останнього запиту, або \"00000\" якщо немає помилок\n"
+
+#: help.c:421
+#, c-format
+msgid " USER\n"
+" the currently connected database user\n"
+msgstr " USER\n"
+" поточний користувач, підключений до бази даних\n"
+
+#: help.c:423
+#, c-format
+msgid " VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr " VERBOSITY\n"
+" контролює докладність звітів про помилку [default, verbose, terse, sqlstate]\n"
+
+#: help.c:425
+#, c-format
+msgid " VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr " VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql версія (в розгорнутому, в короткому текстовому або числовому форматі)\n"
+
+#: help.c:430
+#, c-format
+msgid "\n"
+"Display settings:\n"
+msgstr "\n"
+"Налаштування відобреження:\n"
+
+#: help.c:432
+#, c-format
+msgid " psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n\n"
+msgstr " psql --pset=NAME[=VALUE]\n"
+" або \\pset ІМ'Я [VALUE] всередині psql\n\n"
+
+#: help.c:434
+#, c-format
+msgid " border\n"
+" border style (number)\n"
+msgstr " border\n"
+" стиль рамки (число)\n"
+
+#: help.c:436
+#, c-format
+msgid " columns\n"
+" target width for the wrapped format\n"
+msgstr " columns\n"
+" цільова ширина для формату з переносом\n"
+
+#: help.c:438
+#, c-format
+msgid " expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr " expanded (or x)\n"
+" розширений вивід [on, off, auto]\n"
+
+#: help.c:440
+#, c-format
+msgid " fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr " fieldsep\n"
+" розділювач полів для не вирівняного виводу (за замовчуванням \"%s\")\n"
+
+#: help.c:443
+#, c-format
+msgid " fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr " fieldsep_zero\n"
+" встановити розділювач полів для невирівняного виводу на нульовий байт\n"
+
+#: help.c:445
+#, c-format
+msgid " footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr " footer\n"
+" вмикає або вимикає вивід підписів таблиці [on, off]\n"
+
+#: help.c:447
+#, c-format
+msgid " format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr " format\n"
+" встановити формат виводу [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:449
+#, c-format
+msgid " linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr " linestyle\n"
+" встановлює стиль малювання ліній рамки [ascii, old-ascii, unicode]\n"
+
+#: help.c:451
+#, c-format
+msgid " null\n"
+" set the string to be printed in place of a null value\n"
+msgstr " null\n"
+" встановлює рядок, який буде виведено замість значення (null)\n"
+
+#: help.c:453
+#, c-format
+msgid " numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr " numericlocale\n"
+" вмикає виведення заданого локалью роздільника групи цифр\n"
+
+#: help.c:455
+#, c-format
+msgid " pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr " pager\n"
+" контролює використання зовнішнього пейджера [yes, no, always]\n"
+
+#: help.c:457
+#, c-format
+msgid " recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr " recordsep\n"
+" розділювач записів (рядків) для не вирівняного виводу\n"
+
+#: help.c:459
+#, c-format
+msgid " recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr " recordsep_zero\n"
+" встановлює розділювач записів для невирівняного виводу на нульовий байт\n"
+
+#: help.c:461
+#, c-format
+msgid " tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr " tableattr (або T)\n"
+" вказує атрибути для тегу table у html форматі або пропорційні \n"
+" ширини стовпців для вирівняних вліво даних, у latex-longtable форматі\n"
+
+#: help.c:464
+#, c-format
+msgid " title\n"
+" set the table title for subsequently printed tables\n"
+msgstr " title\n"
+" задає заголовок таблиці для послідовно друкованих таблиць\n"
+
+#: help.c:466
+#, c-format
+msgid " tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr " tuples_only\n"
+" якщо встановлено, виводяться лише фактичні табличні дані\n"
+
+#: help.c:468
+#, c-format
+msgid " unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr " unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" задає стиль мальювання ліній (Unicode) [single, double]\n"
+
+#: help.c:473
+#, c-format
+msgid "\n"
+"Environment variables:\n"
+msgstr "\n"
+"Змінні оточення:\n"
+
+#: help.c:477
+#, c-format
+msgid " NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n\n"
+msgstr " ІМ'Я=ЗНАЧЕННЯ [ІМ'Я=ЗНАЧЕННЯ] psql ...\n"
+" або \\setenv ІМ'Я [VALUE] всередині psql\n\n"
+
+#: help.c:479
+#, c-format
+msgid " set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n\n"
+msgstr " встановлює ІМ'Я=ЗНАЧЕННЯ\n"
+" psql ...\n"
+" або \\setenv ІМ'Я [VALUE] всередині psql\n\n"
+
+#: help.c:482
+#, c-format
+msgid " COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr " COLUMNS\n"
+" число стовпців для форматування з переносом\n"
+
+#: help.c:484
+#, c-format
+msgid " PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr " PGAPPNAME\n"
+" те саме, що параметр підключення application_name\n"
+
+#: help.c:486
+#, c-format
+msgid " PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr " PGDATABASE\n"
+" те саме, що параметр підключення dbname\n"
+
+#: help.c:488
+#, c-format
+msgid " PGHOST\n"
+" same as the host connection parameter\n"
+msgstr " PGHOST\n"
+" те саме, що параметр підключення host\n"
+
+#: help.c:490
+#, c-format
+msgid " PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr " PGPASSWORD\n"
+" пароль для підключення (не рекомендується)\n"
+
+#: help.c:492
+#, c-format
+msgid " PGPASSFILE\n"
+" password file name\n"
+msgstr " PGPASSFILE\n"
+" назва файлу з паролем\n"
+
+#: help.c:494
+#, c-format
+msgid " PGPORT\n"
+" same as the port connection parameter\n"
+msgstr " PGPORT\n"
+" те саме, що параметр підключення port\n"
+
+#: help.c:496
+#, c-format
+msgid " PGUSER\n"
+" same as the user connection parameter\n"
+msgstr " PGUSER\n"
+" те саме, що параметр підключення user\n"
+
+#: help.c:498
+#, c-format
+msgid " PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr " PSQL_EDITOR, EDITOR, VISUAL\n"
+" редактор для команд \\e, \\ef і \\ev\n"
+
+#: help.c:500
+#, c-format
+msgid " PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr " PSQL_EDITOR_LINENUMBER_ARG\n"
+" як вказати номер рядка при виклику редактора\n"
+
+#: help.c:502
+#, c-format
+msgid " PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr " PSQL_HISTORY\n"
+" альтернативне розміщення файлу з історією команд\n"
+
+#: help.c:504
+#, c-format
+msgid " PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr " PSQL_PAGER, PAGER\n"
+" ім'я програми зовнішнього пейджеру\n"
+
+#: help.c:506
+#, c-format
+msgid " PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr " PSQLRC\n"
+" альтернативне розміщення користувацького файла .psqlrc\n"
+
+#: help.c:508
+#, c-format
+msgid " SHELL\n"
+" shell used by the \\! command\n"
+msgstr " SHELL\n"
+" оболонка, що використовується командою \\!\n"
+
+#: help.c:510
+#, c-format
+msgid " TMPDIR\n"
+" directory for temporary files\n"
+msgstr " TMPDIR\n"
+" каталог для тимчасових файлів\n"
+
+#: help.c:554
+msgid "Available help:\n"
+msgstr "Доступна довідка:\n"
+
+#: help.c:642
+#, c-format
+msgid "Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n\n"
+"URL: %s\n\n"
+msgstr "Команда: %s\n"
+"Опис: %s\n"
+"Синтаксис:\n"
+"%s\n\n"
+"URL: %s\n\n"
+
+#: help.c:661
+#, c-format
+msgid "No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr "Немає доступної довідки по команді \"%s\".\n"
+"Спробуйте \\h без аргументів, щоб подивитись доступну довідку.\n"
+
+#: input.c:217
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "не вдалося прочитати з вхідного файлу: %m"
+
+#: input.c:471 input.c:509
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "не можливо зберегти історію в файлі \"%s\": %m"
+
+#: input.c:528
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "ця установка не підтримує історію"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s: немає з'єднання з базою даних"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s: поточна транзакція перервана"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s: невідомий стан транзакції"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "Великі об'єкти"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: вихід"
+
+#: mainloop.c:195
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "Введіть \"\\q\", щоб вийти з %s.\n"
+
+#: mainloop.c:217
+msgid "The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr "Ввід являє собою спеціальний формат дампу PostgreSQL.\n"
+"Щоб відновити базу даних з цього дампу, скористайтеся командою pg_restore.\n"
+
+#: mainloop.c:298
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "Для отримання довідки введіть \\? або натисніть сontrol-C для очищення буферу вводу."
+
+#: mainloop.c:300
+msgid "Use \\? for help."
+msgstr "Введіть \\? для отримання довідки."
+
+#: mainloop.c:304
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "Ви використовуєте psql — інтерфейс командного рядка до PostgreSQL."
+
+#: mainloop.c:305
+#, c-format
+msgid "Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr "Введіть: \\copyright для умов розповсюдження\n"
+" \\h для довідки по командах SQL\n"
+" \\? для довідки по командах psql\n"
+" \\g або крапку з комою в кінці рядка для виконання запиту\n"
+" \\q для виходу\n"
+
+#: mainloop.c:329
+msgid "Use \\q to quit."
+msgstr "Введіть \\q, щоб вийти."
+
+#: mainloop.c:332 mainloop.c:356
+msgid "Use control-D to quit."
+msgstr "Натисніть control-D, щоб вийти."
+
+#: mainloop.c:334 mainloop.c:358
+msgid "Use control-C to quit."
+msgstr "Натисніть control-C, щоб вийти."
+
+#: mainloop.c:465 mainloop.c:613
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "запит ігнорується; введіть \\endif або натисніть Ctrl-C для завершення поточного \\if блоку"
+
+#: mainloop.c:631
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "досягнуто кінця файлу без завершального \\endif"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "незавершений рядок в лапках"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: бракує пам'яті"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014 sql_help.c:1025
+#: sql_help.c:1027 sql_help.c:1046 sql_help.c:1056 sql_help.c:1058
+#: sql_help.c:1060 sql_help.c:1072 sql_help.c:1076 sql_help.c:1078
+#: sql_help.c:1090 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096
+#: sql_help.c:1112 sql_help.c:1114 sql_help.c:1118 sql_help.c:1121
+#: sql_help.c:1122 sql_help.c:1123 sql_help.c:1126 sql_help.c:1128
+#: sql_help.c:1262 sql_help.c:1264 sql_help.c:1267 sql_help.c:1270
+#: sql_help.c:1272 sql_help.c:1274 sql_help.c:1277 sql_help.c:1280
+#: sql_help.c:1391 sql_help.c:1393 sql_help.c:1395 sql_help.c:1398
+#: sql_help.c:1419 sql_help.c:1422 sql_help.c:1425 sql_help.c:1428
+#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1436 sql_help.c:1438
+#: sql_help.c:1452 sql_help.c:1455 sql_help.c:1457 sql_help.c:1459
+#: sql_help.c:1469 sql_help.c:1471 sql_help.c:1481 sql_help.c:1483
+#: sql_help.c:1493 sql_help.c:1496 sql_help.c:1519 sql_help.c:1521
+#: sql_help.c:1523 sql_help.c:1525 sql_help.c:1528 sql_help.c:1530
+#: sql_help.c:1533 sql_help.c:1536 sql_help.c:1586 sql_help.c:1629
+#: sql_help.c:1632 sql_help.c:1634 sql_help.c:1636 sql_help.c:1639
+#: sql_help.c:1641 sql_help.c:1643 sql_help.c:1646 sql_help.c:1696
+#: sql_help.c:1712 sql_help.c:1933 sql_help.c:2002 sql_help.c:2021
+#: sql_help.c:2034 sql_help.c:2091 sql_help.c:2098 sql_help.c:2108
+#: sql_help.c:2129 sql_help.c:2155 sql_help.c:2173 sql_help.c:2200
+#: sql_help.c:2295 sql_help.c:2340 sql_help.c:2364 sql_help.c:2387
+#: sql_help.c:2391 sql_help.c:2425 sql_help.c:2445 sql_help.c:2467
+#: sql_help.c:2481 sql_help.c:2501 sql_help.c:2524 sql_help.c:2554
+#: sql_help.c:2579 sql_help.c:2625 sql_help.c:2903 sql_help.c:2916
+#: sql_help.c:2933 sql_help.c:2949 sql_help.c:2989 sql_help.c:3041
+#: sql_help.c:3045 sql_help.c:3047 sql_help.c:3053 sql_help.c:3071
+#: sql_help.c:3098 sql_help.c:3133 sql_help.c:3145 sql_help.c:3154
+#: sql_help.c:3198 sql_help.c:3212 sql_help.c:3240 sql_help.c:3248
+#: sql_help.c:3260 sql_help.c:3270 sql_help.c:3278 sql_help.c:3286
+#: sql_help.c:3294 sql_help.c:3302 sql_help.c:3311 sql_help.c:3322
+#: sql_help.c:3330 sql_help.c:3338 sql_help.c:3346 sql_help.c:3354
+#: sql_help.c:3364 sql_help.c:3373 sql_help.c:3382 sql_help.c:3390
+#: sql_help.c:3400 sql_help.c:3411 sql_help.c:3419 sql_help.c:3428
+#: sql_help.c:3439 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464
+#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3488 sql_help.c:3496
+#: sql_help.c:3504 sql_help.c:3512 sql_help.c:3520 sql_help.c:3528
+#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3562 sql_help.c:3579
+#: sql_help.c:3594 sql_help.c:3869 sql_help.c:3920 sql_help.c:3949
+#: sql_help.c:3962 sql_help.c:4407 sql_help.c:4455 sql_help.c:4596
+msgid "name"
+msgstr "назва"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1783
+#: sql_help.c:3213 sql_help.c:4193
+msgid "aggregate_signature"
+msgstr "сигнатура_агр_функції"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1093 sql_help.c:1129 sql_help.c:1271 sql_help.c:1392
+#: sql_help.c:1435 sql_help.c:1456 sql_help.c:1470 sql_help.c:1482
+#: sql_help.c:1495 sql_help.c:1522 sql_help.c:1587 sql_help.c:1640
+msgid "new_name"
+msgstr "нова_назва"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028 sql_help.c:1057
+#: sql_help.c:1077 sql_help.c:1091 sql_help.c:1127 sql_help.c:1332
+#: sql_help.c:1394 sql_help.c:1437 sql_help.c:1458 sql_help.c:1520
+#: sql_help.c:1635 sql_help.c:2889
+msgid "new_owner"
+msgstr "новий_власник"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061 sql_help.c:1095
+#: sql_help.c:1273 sql_help.c:1439 sql_help.c:1460 sql_help.c:1472
+#: sql_help.c:1484 sql_help.c:1524 sql_help.c:1642
+msgid "new_schema"
+msgstr "нова_схема"
+
+#: sql_help.c:44 sql_help.c:1847 sql_help.c:3214 sql_help.c:4222
+msgid "where aggregate_signature is:"
+msgstr "де сигнатура_агр_функції:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1801
+#: sql_help.c:1818 sql_help.c:1824 sql_help.c:1848 sql_help.c:1851
+#: sql_help.c:1854 sql_help.c:2003 sql_help.c:2022 sql_help.c:2025
+#: sql_help.c:2296 sql_help.c:2502 sql_help.c:3215 sql_help.c:3218
+#: sql_help.c:3221 sql_help.c:3312 sql_help.c:3401 sql_help.c:3429
+#: sql_help.c:3753 sql_help.c:4101 sql_help.c:4199 sql_help.c:4206
+#: sql_help.c:4212 sql_help.c:4223 sql_help.c:4226 sql_help.c:4229
+msgid "argmode"
+msgstr "режим_аргументу"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1802
+#: sql_help.c:1819 sql_help.c:1825 sql_help.c:1849 sql_help.c:1852
+#: sql_help.c:1855 sql_help.c:2004 sql_help.c:2023 sql_help.c:2026
+#: sql_help.c:2297 sql_help.c:2503 sql_help.c:3216 sql_help.c:3219
+#: sql_help.c:3222 sql_help.c:3313 sql_help.c:3402 sql_help.c:3430
+#: sql_help.c:4200 sql_help.c:4207 sql_help.c:4213 sql_help.c:4224
+#: sql_help.c:4227 sql_help.c:4230
+msgid "argname"
+msgstr "ім'я_аргументу"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1803
+#: sql_help.c:1820 sql_help.c:1826 sql_help.c:1850 sql_help.c:1853
+#: sql_help.c:1856 sql_help.c:2298 sql_help.c:2504 sql_help.c:3217
+#: sql_help.c:3220 sql_help.c:3223 sql_help.c:3314 sql_help.c:3403
+#: sql_help.c:3431 sql_help.c:4201 sql_help.c:4208 sql_help.c:4214
+#: sql_help.c:4225 sql_help.c:4228 sql_help.c:4231
+msgid "argtype"
+msgstr "тип_аргументу"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1453 sql_help.c:1581 sql_help.c:1613
+#: sql_help.c:1665 sql_help.c:1904 sql_help.c:1911 sql_help.c:2203
+#: sql_help.c:2245 sql_help.c:2252 sql_help.c:2261 sql_help.c:2341
+#: sql_help.c:2555 sql_help.c:2647 sql_help.c:2918 sql_help.c:3099
+#: sql_help.c:3121 sql_help.c:3261 sql_help.c:3616 sql_help.c:3788
+#: sql_help.c:3961 sql_help.c:4658
+msgid "option"
+msgstr "параметр"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1582 sql_help.c:2342
+#: sql_help.c:2556 sql_help.c:3100 sql_help.c:3262
+msgid "where option can be:"
+msgstr "де параметр може бути:"
+
+#: sql_help.c:114 sql_help.c:2137
+msgid "allowconn"
+msgstr "дозвол_підкл"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1583 sql_help.c:2138
+#: sql_help.c:2343 sql_help.c:2557 sql_help.c:3101
+msgid "connlimit"
+msgstr "ліміт_підключень"
+
+#: sql_help.c:116 sql_help.c:2139
+msgid "istemplate"
+msgstr "чи_шаблон"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1276 sql_help.c:1325
+msgid "new_tablespace"
+msgstr "новий_табл_простір"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1140 sql_help.c:1143 sql_help.c:1590
+#: sql_help.c:1594 sql_help.c:1597 sql_help.c:2308 sql_help.c:2508
+#: sql_help.c:3980 sql_help.c:4396
+msgid "configuration_parameter"
+msgstr "параметр_конфігурації"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1117 sql_help.c:1120 sql_help.c:1125 sql_help.c:1141
+#: sql_help.c:1142 sql_help.c:1307 sql_help.c:1327 sql_help.c:1375
+#: sql_help.c:1397 sql_help.c:1454 sql_help.c:1538 sql_help.c:1591
+#: sql_help.c:1614 sql_help.c:2204 sql_help.c:2246 sql_help.c:2253
+#: sql_help.c:2262 sql_help.c:2309 sql_help.c:2310 sql_help.c:2372
+#: sql_help.c:2375 sql_help.c:2409 sql_help.c:2509 sql_help.c:2510
+#: sql_help.c:2527 sql_help.c:2648 sql_help.c:2678 sql_help.c:2783
+#: sql_help.c:2796 sql_help.c:2810 sql_help.c:2851 sql_help.c:2875
+#: sql_help.c:2892 sql_help.c:2919 sql_help.c:3122 sql_help.c:3789
+#: sql_help.c:4397 sql_help.c:4398
+msgid "value"
+msgstr "значення"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "цільова_роль"
+
+#: sql_help.c:198 sql_help.c:2188 sql_help.c:2603 sql_help.c:2608
+#: sql_help.c:3735 sql_help.c:3742 sql_help.c:3756 sql_help.c:3762
+#: sql_help.c:4083 sql_help.c:4090 sql_help.c:4104 sql_help.c:4110
+msgid "schema_name"
+msgstr "ім'я_схеми"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "скорочено_GRANT_або_REVOKE"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "де скорочено_GRANT_або_REVOKE є одним з:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1275 sql_help.c:1601 sql_help.c:2346 sql_help.c:2347
+#: sql_help.c:2348 sql_help.c:2349 sql_help.c:2350 sql_help.c:2483
+#: sql_help.c:2560 sql_help.c:2561 sql_help.c:2562 sql_help.c:2563
+#: sql_help.c:2564 sql_help.c:3104 sql_help.c:3105 sql_help.c:3106
+#: sql_help.c:3107 sql_help.c:3108 sql_help.c:3768 sql_help.c:3772
+#: sql_help.c:4116 sql_help.c:4120 sql_help.c:4417
+msgid "role_name"
+msgstr "ім'я_ролі"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1342 sql_help.c:1354 sql_help.c:1379 sql_help.c:1631
+#: sql_help.c:2158 sql_help.c:2162 sql_help.c:2265 sql_help.c:2270
+#: sql_help.c:2368 sql_help.c:2778 sql_help.c:2791 sql_help.c:2805
+#: sql_help.c:2814 sql_help.c:2826 sql_help.c:2855 sql_help.c:3820
+#: sql_help.c:3835 sql_help.c:3837 sql_help.c:4282 sql_help.c:4283
+#: sql_help.c:4292 sql_help.c:4333 sql_help.c:4334 sql_help.c:4335
+#: sql_help.c:4336 sql_help.c:4337 sql_help.c:4338 sql_help.c:4371
+#: sql_help.c:4372 sql_help.c:4377 sql_help.c:4382 sql_help.c:4521
+#: sql_help.c:4522 sql_help.c:4531 sql_help.c:4572 sql_help.c:4573
+#: sql_help.c:4574 sql_help.c:4575 sql_help.c:4576 sql_help.c:4577
+#: sql_help.c:4624 sql_help.c:4626 sql_help.c:4685 sql_help.c:4741
+#: sql_help.c:4742 sql_help.c:4751 sql_help.c:4792 sql_help.c:4793
+#: sql_help.c:4794 sql_help.c:4795 sql_help.c:4796 sql_help.c:4797
+msgid "expression"
+msgstr "вираз"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "обмеження_домену"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1268 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315
+#: sql_help.c:1341 sql_help.c:1353 sql_help.c:1370 sql_help.c:1789
+#: sql_help.c:1791 sql_help.c:2161 sql_help.c:2264 sql_help.c:2269
+#: sql_help.c:2813 sql_help.c:2825 sql_help.c:3832
+msgid "constraint_name"
+msgstr "ім'я_обмеження"
+
+#: sql_help.c:244 sql_help.c:1269
+msgid "new_constraint_name"
+msgstr "ім'я_нового_обмеження"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "нова_версія"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "елемент_об'єкт"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "де елемент_об'єкт є:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1781 sql_help.c:1786 sql_help.c:1793
+#: sql_help.c:1794 sql_help.c:1795 sql_help.c:1796 sql_help.c:1797
+#: sql_help.c:1798 sql_help.c:1799 sql_help.c:1804 sql_help.c:1806
+#: sql_help.c:1810 sql_help.c:1812 sql_help.c:1816 sql_help.c:1821
+#: sql_help.c:1822 sql_help.c:1829 sql_help.c:1830 sql_help.c:1831
+#: sql_help.c:1832 sql_help.c:1833 sql_help.c:1834 sql_help.c:1835
+#: sql_help.c:1836 sql_help.c:1837 sql_help.c:1838 sql_help.c:1839
+#: sql_help.c:1844 sql_help.c:1845 sql_help.c:4189 sql_help.c:4194
+#: sql_help.c:4195 sql_help.c:4196 sql_help.c:4197 sql_help.c:4203
+#: sql_help.c:4204 sql_help.c:4209 sql_help.c:4210 sql_help.c:4215
+#: sql_help.c:4216 sql_help.c:4217 sql_help.c:4218 sql_help.c:4219
+#: sql_help.c:4220
+msgid "object_name"
+msgstr "ім'я_об'єкту"
+
+#: sql_help.c:326 sql_help.c:1782 sql_help.c:4192
+msgid "aggregate_name"
+msgstr "ім'я_агр_функції"
+
+#: sql_help.c:328 sql_help.c:1784 sql_help.c:2068 sql_help.c:2072
+#: sql_help.c:2074 sql_help.c:3231
+msgid "source_type"
+msgstr "початковий_тип"
+
+#: sql_help.c:329 sql_help.c:1785 sql_help.c:2069 sql_help.c:2073
+#: sql_help.c:2075 sql_help.c:3232
+msgid "target_type"
+msgstr "тип_цілі"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1800 sql_help.c:2070
+#: sql_help.c:2111 sql_help.c:2176 sql_help.c:2426 sql_help.c:2457
+#: sql_help.c:2995 sql_help.c:4100 sql_help.c:4198 sql_help.c:4311
+#: sql_help.c:4315 sql_help.c:4319 sql_help.c:4322 sql_help.c:4550
+#: sql_help.c:4554 sql_help.c:4558 sql_help.c:4561 sql_help.c:4770
+#: sql_help.c:4774 sql_help.c:4778 sql_help.c:4781
+msgid "function_name"
+msgstr "ім'я_функції"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1807 sql_help.c:2450
+msgid "operator_name"
+msgstr "ім'я_оператора"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1808
+#: sql_help.c:2427 sql_help.c:3355
+msgid "left_type"
+msgstr "тип_ліворуч"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1809
+#: sql_help.c:2428 sql_help.c:3356
+msgid "right_type"
+msgstr "тип_праворуч"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1359 sql_help.c:1811 sql_help.c:1813 sql_help.c:2447
+#: sql_help.c:2468 sql_help.c:2831 sql_help.c:3365 sql_help.c:3374
+msgid "index_method"
+msgstr "метод_індексу"
+
+#: sql_help.c:349 sql_help.c:1817 sql_help.c:4205
+msgid "procedure_name"
+msgstr "назва_процедури"
+
+#: sql_help.c:353 sql_help.c:1823 sql_help.c:3752 sql_help.c:4211
+msgid "routine_name"
+msgstr "ім'я_підпрограми"
+
+#: sql_help.c:365 sql_help.c:1331 sql_help.c:1840 sql_help.c:2304
+#: sql_help.c:2507 sql_help.c:2786 sql_help.c:2962 sql_help.c:3536
+#: sql_help.c:3766 sql_help.c:4114
+msgid "type_name"
+msgstr "назва_типу"
+
+#: sql_help.c:366 sql_help.c:1841 sql_help.c:2303 sql_help.c:2506
+#: sql_help.c:2963 sql_help.c:3189 sql_help.c:3537 sql_help.c:3758
+#: sql_help.c:4106
+msgid "lang_name"
+msgstr "назва_мови"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "і сигнатура_агр_функції:"
+
+#: sql_help.c:392 sql_help.c:1935 sql_help.c:2201
+msgid "handler_function"
+msgstr "функція_обробник"
+
+#: sql_help.c:393 sql_help.c:2202
+msgid "validator_function"
+msgstr "функція_перевірки"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1263 sql_help.c:1529
+msgid "action"
+msgstr "дія"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1265
+#: sql_help.c:1283 sql_help.c:1287 sql_help.c:1288 sql_help.c:1292
+#: sql_help.c:1294 sql_help.c:1295 sql_help.c:1296 sql_help.c:1297
+#: sql_help.c:1299 sql_help.c:1302 sql_help.c:1303 sql_help.c:1305
+#: sql_help.c:1308 sql_help.c:1310 sql_help.c:1355 sql_help.c:1357
+#: sql_help.c:1364 sql_help.c:1373 sql_help.c:1378 sql_help.c:1630
+#: sql_help.c:1633 sql_help.c:1637 sql_help.c:1673 sql_help.c:1788
+#: sql_help.c:1901 sql_help.c:1907 sql_help.c:1920 sql_help.c:1921
+#: sql_help.c:1922 sql_help.c:2243 sql_help.c:2256 sql_help.c:2301
+#: sql_help.c:2367 sql_help.c:2373 sql_help.c:2406 sql_help.c:2633
+#: sql_help.c:2661 sql_help.c:2662 sql_help.c:2769 sql_help.c:2777
+#: sql_help.c:2787 sql_help.c:2790 sql_help.c:2800 sql_help.c:2804
+#: sql_help.c:2827 sql_help.c:2829 sql_help.c:2836 sql_help.c:2849
+#: sql_help.c:2854 sql_help.c:2872 sql_help.c:2998 sql_help.c:3134
+#: sql_help.c:3737 sql_help.c:3738 sql_help.c:3819 sql_help.c:3834
+#: sql_help.c:3836 sql_help.c:3838 sql_help.c:4085 sql_help.c:4086
+#: sql_help.c:4191 sql_help.c:4342 sql_help.c:4581 sql_help.c:4623
+#: sql_help.c:4625 sql_help.c:4627 sql_help.c:4673 sql_help.c:4801
+msgid "column_name"
+msgstr "назва_стовпця"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1266 sql_help.c:1638
+msgid "new_column_name"
+msgstr "нова_назва_стовпця"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1282 sql_help.c:1539
+msgid "where action is one of:"
+msgstr "де допустима дія:"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1284
+#: sql_help.c:1289 sql_help.c:1541 sql_help.c:1545 sql_help.c:2156
+#: sql_help.c:2244 sql_help.c:2446 sql_help.c:2626 sql_help.c:2770
+#: sql_help.c:3043 sql_help.c:3921
+msgid "data_type"
+msgstr "тип_даних"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1285 sql_help.c:1290
+#: sql_help.c:1542 sql_help.c:1546 sql_help.c:2157 sql_help.c:2247
+#: sql_help.c:2369 sql_help.c:2771 sql_help.c:2779 sql_help.c:2792
+#: sql_help.c:2806 sql_help.c:3044 sql_help.c:3050 sql_help.c:3829
+msgid "collation"
+msgstr "правила_сортування"
+
+#: sql_help.c:453 sql_help.c:1286 sql_help.c:2248 sql_help.c:2257
+#: sql_help.c:2772 sql_help.c:2788 sql_help.c:2801
+msgid "column_constraint"
+msgstr "обмеження_стовпця"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1304 sql_help.c:4670
+msgid "integer"
+msgstr "ціле"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1306
+#: sql_help.c:1309
+msgid "attribute_option"
+msgstr "параметр_атрибуту"
+
+#: sql_help.c:473 sql_help.c:1311 sql_help.c:2249 sql_help.c:2258
+#: sql_help.c:2773 sql_help.c:2789 sql_help.c:2802
+msgid "table_constraint"
+msgstr "обмеження_таблиці"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1316
+#: sql_help.c:1317 sql_help.c:1318 sql_help.c:1319 sql_help.c:1842
+msgid "trigger_name"
+msgstr "ім'я_тригеру"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1329 sql_help.c:1330
+#: sql_help.c:2250 sql_help.c:2255 sql_help.c:2776 sql_help.c:2799
+msgid "parent_table"
+msgstr "батьківська_таблиця"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1498 sql_help.c:2187
+msgid "extension_name"
+msgstr "ім'я_розширення"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2305
+msgid "execution_cost"
+msgstr "вартість_виконання"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2306
+msgid "result_rows"
+msgstr "рядки_результату"
+
+#: sql_help.c:543 sql_help.c:2307
+msgid "support_function"
+msgstr "функція_підтримки"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1580 sql_help.c:1588
+#: sql_help.c:1592 sql_help.c:1595 sql_help.c:1598 sql_help.c:2604
+#: sql_help.c:2606 sql_help.c:2609 sql_help.c:2610 sql_help.c:3736
+#: sql_help.c:3740 sql_help.c:3743 sql_help.c:3745 sql_help.c:3747
+#: sql_help.c:3749 sql_help.c:3751 sql_help.c:3757 sql_help.c:3759
+#: sql_help.c:3761 sql_help.c:3763 sql_help.c:3765 sql_help.c:3767
+#: sql_help.c:3769 sql_help.c:3770 sql_help.c:4084 sql_help.c:4088
+#: sql_help.c:4091 sql_help.c:4093 sql_help.c:4095 sql_help.c:4097
+#: sql_help.c:4099 sql_help.c:4105 sql_help.c:4107 sql_help.c:4109
+#: sql_help.c:4111 sql_help.c:4113 sql_help.c:4115 sql_help.c:4117
+#: sql_help.c:4118
+msgid "role_specification"
+msgstr "вказання_ролі"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1611 sql_help.c:2130
+#: sql_help.c:2612 sql_help.c:3119 sql_help.c:3570 sql_help.c:4427
+msgid "user_name"
+msgstr "ім'я_користувача"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1600 sql_help.c:2611
+#: sql_help.c:3771 sql_help.c:4119
+msgid "where role_specification can be:"
+msgstr "де вказання_ролі може бути:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "ім'я_групи"
+
+#: sql_help.c:591 sql_help.c:1376 sql_help.c:2136 sql_help.c:2376
+#: sql_help.c:2410 sql_help.c:2784 sql_help.c:2797 sql_help.c:2811
+#: sql_help.c:2852 sql_help.c:2876 sql_help.c:2888 sql_help.c:3764
+#: sql_help.c:4112
+msgid "tablespace_name"
+msgstr "ім'я_табличного_простору"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1324 sql_help.c:1333
+#: sql_help.c:1371 sql_help.c:1722
+msgid "index_name"
+msgstr "назва_індексу"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1326
+#: sql_help.c:1328 sql_help.c:1374 sql_help.c:2374 sql_help.c:2408
+#: sql_help.c:2782 sql_help.c:2795 sql_help.c:2809 sql_help.c:2850
+#: sql_help.c:2874
+msgid "storage_parameter"
+msgstr "параметр_зберігання"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "номер_стовпця"
+
+#: sql_help.c:626 sql_help.c:1805 sql_help.c:4202
+msgid "large_object_oid"
+msgstr "oid_великого_об'єкта"
+
+#: sql_help.c:713 sql_help.c:2431
+msgid "res_proc"
+msgstr "res_процедура"
+
+#: sql_help.c:714 sql_help.c:2432
+msgid "join_proc"
+msgstr "процедура_приєднання"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2449
+msgid "strategy_number"
+msgstr "номер_стратегії"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2451 sql_help.c:2452
+#: sql_help.c:2455 sql_help.c:2456
+msgid "op_type"
+msgstr "тип_операції"
+
+#: sql_help.c:770 sql_help.c:2453
+msgid "sort_family_name"
+msgstr "ім'я_родини_сортування"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2454
+msgid "support_number"
+msgstr "номер_підтримки"
+
+#: sql_help.c:775 sql_help.c:2071 sql_help.c:2458 sql_help.c:2965
+#: sql_help.c:2967
+msgid "argument_type"
+msgstr "тип_аргументу"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1494 sql_help.c:1497
+#: sql_help.c:1672 sql_help.c:1721 sql_help.c:1790 sql_help.c:1815
+#: sql_help.c:1828 sql_help.c:1843 sql_help.c:1900 sql_help.c:1906
+#: sql_help.c:2242 sql_help.c:2254 sql_help.c:2365 sql_help.c:2405
+#: sql_help.c:2482 sql_help.c:2525 sql_help.c:2581 sql_help.c:2632
+#: sql_help.c:2663 sql_help.c:2768 sql_help.c:2785 sql_help.c:2798
+#: sql_help.c:2871 sql_help.c:2991 sql_help.c:3168 sql_help.c:3391
+#: sql_help.c:3440 sql_help.c:3546 sql_help.c:3734 sql_help.c:3739
+#: sql_help.c:3785 sql_help.c:3817 sql_help.c:4082 sql_help.c:4087
+#: sql_help.c:4190 sql_help.c:4297 sql_help.c:4299 sql_help.c:4348
+#: sql_help.c:4387 sql_help.c:4536 sql_help.c:4538 sql_help.c:4587
+#: sql_help.c:4621 sql_help.c:4672 sql_help.c:4756 sql_help.c:4758
+#: sql_help.c:4807
+msgid "table_name"
+msgstr "ім'я_таблиці"
+
+#: sql_help.c:811 sql_help.c:2484
+msgid "using_expression"
+msgstr "вираз_використання"
+
+#: sql_help.c:812 sql_help.c:2485
+msgid "check_expression"
+msgstr "вираз_перевірки"
+
+#: sql_help.c:886 sql_help.c:2526
+msgid "publication_parameter"
+msgstr "параметр_публікації"
+
+#: sql_help.c:929 sql_help.c:1584 sql_help.c:2344 sql_help.c:2558
+#: sql_help.c:3102
+msgid "password"
+msgstr "пароль"
+
+#: sql_help.c:930 sql_help.c:1585 sql_help.c:2345 sql_help.c:2559
+#: sql_help.c:3103
+msgid "timestamp"
+msgstr "мітка часу"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1589
+#: sql_help.c:1593 sql_help.c:1596 sql_help.c:1599 sql_help.c:3744
+#: sql_help.c:4092
+msgid "database_name"
+msgstr "назва_бази_даних"
+
+#: sql_help.c:1048 sql_help.c:2627
+msgid "increment"
+msgstr "інкремент"
+
+#: sql_help.c:1049 sql_help.c:2628
+msgid "minvalue"
+msgstr "мін_значення"
+
+#: sql_help.c:1050 sql_help.c:2629
+msgid "maxvalue"
+msgstr "макс_значення"
+
+#: sql_help.c:1051 sql_help.c:2630 sql_help.c:4295 sql_help.c:4385
+#: sql_help.c:4534 sql_help.c:4689 sql_help.c:4754
+msgid "start"
+msgstr "початок"
+
+#: sql_help.c:1052 sql_help.c:1301
+msgid "restart"
+msgstr "перезапуск"
+
+#: sql_help.c:1053 sql_help.c:2631
+msgid "cache"
+msgstr "кеш"
+
+#: sql_help.c:1097
+msgid "new_target"
+msgstr "нова_ціль"
+
+#: sql_help.c:1113 sql_help.c:2675
+msgid "conninfo"
+msgstr "інформація_підключення"
+
+#: sql_help.c:1115 sql_help.c:2676
+msgid "publication_name"
+msgstr "назва_публікації"
+
+#: sql_help.c:1116
+msgid "set_publication_option"
+msgstr "опція_set_publication"
+
+#: sql_help.c:1119
+msgid "refresh_option"
+msgstr "опція_оновлення"
+
+#: sql_help.c:1124 sql_help.c:2677
+msgid "subscription_parameter"
+msgstr "параметр_підписки"
+
+#: sql_help.c:1278 sql_help.c:1281
+msgid "partition_name"
+msgstr "ім'я_розділу"
+
+#: sql_help.c:1279 sql_help.c:2259 sql_help.c:2803
+msgid "partition_bound_spec"
+msgstr "специфікація_рамок_розділу"
+
+#: sql_help.c:1298 sql_help.c:1345 sql_help.c:2817
+msgid "sequence_options"
+msgstr "опції_послідовності"
+
+#: sql_help.c:1300
+msgid "sequence_option"
+msgstr "опція_послідовності"
+
+#: sql_help.c:1312
+msgid "table_constraint_using_index"
+msgstr "індекс_обмеження_таблиці"
+
+#: sql_help.c:1320 sql_help.c:1321 sql_help.c:1322 sql_help.c:1323
+msgid "rewrite_rule_name"
+msgstr "ім'я_правила_перезапису"
+
+#: sql_help.c:1334 sql_help.c:2842
+msgid "and partition_bound_spec is:"
+msgstr "і специфікація_рамок_розділу:"
+
+#: sql_help.c:1335 sql_help.c:1336 sql_help.c:1337 sql_help.c:2843
+#: sql_help.c:2844 sql_help.c:2845
+msgid "partition_bound_expr"
+msgstr "код_секції"
+
+#: sql_help.c:1338 sql_help.c:1339 sql_help.c:2846 sql_help.c:2847
+msgid "numeric_literal"
+msgstr "числовий_літерал"
+
+#: sql_help.c:1340
+msgid "and column_constraint is:"
+msgstr "і обмеження_стовпця:"
+
+#: sql_help.c:1343 sql_help.c:2266 sql_help.c:2299 sql_help.c:2505
+#: sql_help.c:2815
+msgid "default_expr"
+msgstr "вираз_за_замовчуванням"
+
+#: sql_help.c:1344 sql_help.c:2267 sql_help.c:2816
+msgid "generation_expr"
+msgstr "код_генерації"
+
+#: sql_help.c:1346 sql_help.c:1347 sql_help.c:1356 sql_help.c:1358
+#: sql_help.c:1362 sql_help.c:2818 sql_help.c:2819 sql_help.c:2828
+#: sql_help.c:2830 sql_help.c:2834
+msgid "index_parameters"
+msgstr "параметри_індексу"
+
+#: sql_help.c:1348 sql_help.c:1365 sql_help.c:2820 sql_help.c:2837
+msgid "reftable"
+msgstr "залежна_таблиця"
+
+#: sql_help.c:1349 sql_help.c:1366 sql_help.c:2821 sql_help.c:2838
+msgid "refcolumn"
+msgstr "залежний_стовпець"
+
+#: sql_help.c:1350 sql_help.c:1351 sql_help.c:1367 sql_help.c:1368
+#: sql_help.c:2822 sql_help.c:2823 sql_help.c:2839 sql_help.c:2840
+msgid "referential_action"
+msgstr "дія_посилання"
+
+#: sql_help.c:1352 sql_help.c:2268 sql_help.c:2824
+msgid "and table_constraint is:"
+msgstr "і обмеження_таблиці:"
+
+#: sql_help.c:1360 sql_help.c:2832
+msgid "exclude_element"
+msgstr "об'єкт_виключення"
+
+#: sql_help.c:1361 sql_help.c:2833 sql_help.c:4293 sql_help.c:4383
+#: sql_help.c:4532 sql_help.c:4687 sql_help.c:4752
+msgid "operator"
+msgstr "оператор"
+
+#: sql_help.c:1363 sql_help.c:2377 sql_help.c:2835
+msgid "predicate"
+msgstr "предикат"
+
+#: sql_help.c:1369
+msgid "and table_constraint_using_index is:"
+msgstr "і індекс_обмеження_таблиці:"
+
+#: sql_help.c:1372 sql_help.c:2848
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "параметри_індексу в обмеженнях UNIQUE, PRIMARY KEY, EXCLUDE:"
+
+#: sql_help.c:1377 sql_help.c:2853
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "елемент_виключення в обмеженні EXCLUDE:"
+
+#: sql_help.c:1380 sql_help.c:2370 sql_help.c:2780 sql_help.c:2793
+#: sql_help.c:2807 sql_help.c:2856 sql_help.c:3830
+msgid "opclass"
+msgstr "клас_оператора"
+
+#: sql_help.c:1396 sql_help.c:1399 sql_help.c:2891
+msgid "tablespace_option"
+msgstr "опція_табличного_простору"
+
+#: sql_help.c:1420 sql_help.c:1423 sql_help.c:1429 sql_help.c:1433
+msgid "token_type"
+msgstr "тип_токену"
+
+#: sql_help.c:1421 sql_help.c:1424
+msgid "dictionary_name"
+msgstr "ім'я_словника"
+
+#: sql_help.c:1426 sql_help.c:1430
+msgid "old_dictionary"
+msgstr "старий_словник"
+
+#: sql_help.c:1427 sql_help.c:1431
+msgid "new_dictionary"
+msgstr "новий_словник"
+
+#: sql_help.c:1526 sql_help.c:1540 sql_help.c:1543 sql_help.c:1544
+#: sql_help.c:3042
+msgid "attribute_name"
+msgstr "ім'я_атрибута"
+
+#: sql_help.c:1527
+msgid "new_attribute_name"
+msgstr "нове_ім'я_атрибута"
+
+#: sql_help.c:1531 sql_help.c:1535
+msgid "new_enum_value"
+msgstr "нове_значення_перерахування"
+
+#: sql_help.c:1532
+msgid "neighbor_enum_value"
+msgstr "сусіднє_значення_перерахування"
+
+#: sql_help.c:1534
+msgid "existing_enum_value"
+msgstr "існуюче_значення_перерахування"
+
+#: sql_help.c:1537
+msgid "property"
+msgstr "властивість"
+
+#: sql_help.c:1612 sql_help.c:2251 sql_help.c:2260 sql_help.c:2643
+#: sql_help.c:3120 sql_help.c:3571 sql_help.c:3750 sql_help.c:3786
+#: sql_help.c:4098
+msgid "server_name"
+msgstr "назва_серверу"
+
+#: sql_help.c:1644 sql_help.c:1647 sql_help.c:3135
+msgid "view_option_name"
+msgstr "ім'я_параметра_представлення"
+
+#: sql_help.c:1645 sql_help.c:3136
+msgid "view_option_value"
+msgstr "значення_параметра_представлення"
+
+#: sql_help.c:1666 sql_help.c:1667 sql_help.c:4659 sql_help.c:4660
+msgid "table_and_columns"
+msgstr "таблиця_і_стовпці"
+
+#: sql_help.c:1668 sql_help.c:1912 sql_help.c:3619 sql_help.c:3963
+#: sql_help.c:4661
+msgid "where option can be one of:"
+msgstr "де параметр може бути одним із:"
+
+#: sql_help.c:1669 sql_help.c:1670 sql_help.c:1914 sql_help.c:1917
+#: sql_help.c:2096 sql_help.c:3620 sql_help.c:3621 sql_help.c:3622
+#: sql_help.c:3623 sql_help.c:3624 sql_help.c:3625 sql_help.c:3626
+#: sql_help.c:3627 sql_help.c:4662 sql_help.c:4663 sql_help.c:4664
+#: sql_help.c:4665 sql_help.c:4666 sql_help.c:4667 sql_help.c:4668
+#: sql_help.c:4669
+msgid "boolean"
+msgstr "логічний"
+
+#: sql_help.c:1671 sql_help.c:4671
+msgid "and table_and_columns is:"
+msgstr "і таблиця_і_стовпці:"
+
+#: sql_help.c:1687 sql_help.c:4443 sql_help.c:4445 sql_help.c:4469
+msgid "transaction_mode"
+msgstr "режим_транзакції"
+
+#: sql_help.c:1688 sql_help.c:4446 sql_help.c:4470
+msgid "where transaction_mode is one of:"
+msgstr "де режим_транзакції один з:"
+
+#: sql_help.c:1697 sql_help.c:4303 sql_help.c:4312 sql_help.c:4316
+#: sql_help.c:4320 sql_help.c:4323 sql_help.c:4542 sql_help.c:4551
+#: sql_help.c:4555 sql_help.c:4559 sql_help.c:4562 sql_help.c:4762
+#: sql_help.c:4771 sql_help.c:4775 sql_help.c:4779 sql_help.c:4782
+msgid "argument"
+msgstr "аргумент"
+
+#: sql_help.c:1787
+msgid "relation_name"
+msgstr "назва_відношення"
+
+#: sql_help.c:1792 sql_help.c:3746 sql_help.c:4094
+msgid "domain_name"
+msgstr "назва_домену"
+
+#: sql_help.c:1814
+msgid "policy_name"
+msgstr "назва_політики"
+
+#: sql_help.c:1827
+msgid "rule_name"
+msgstr "назва_правила"
+
+#: sql_help.c:1846
+msgid "text"
+msgstr "текст"
+
+#: sql_help.c:1871 sql_help.c:3930 sql_help.c:4135
+msgid "transaction_id"
+msgstr "ідентифікатор_транзакції"
+
+#: sql_help.c:1902 sql_help.c:1909 sql_help.c:3856
+msgid "filename"
+msgstr "ім'я файлу"
+
+#: sql_help.c:1903 sql_help.c:1910 sql_help.c:2583 sql_help.c:2584
+#: sql_help.c:2585
+msgid "command"
+msgstr "команда"
+
+#: sql_help.c:1905 sql_help.c:2582 sql_help.c:2994 sql_help.c:3171
+#: sql_help.c:3840 sql_help.c:4286 sql_help.c:4288 sql_help.c:4376
+#: sql_help.c:4378 sql_help.c:4525 sql_help.c:4527 sql_help.c:4630
+#: sql_help.c:4745 sql_help.c:4747
+msgid "condition"
+msgstr "умова"
+
+#: sql_help.c:1908 sql_help.c:2411 sql_help.c:2877 sql_help.c:3137
+#: sql_help.c:3155 sql_help.c:3821
+msgid "query"
+msgstr "запит"
+
+#: sql_help.c:1913
+msgid "format_name"
+msgstr "назва_формату"
+
+#: sql_help.c:1915
+msgid "delimiter_character"
+msgstr "символ_роздільник"
+
+#: sql_help.c:1916
+msgid "null_string"
+msgstr "представлення_NULL"
+
+#: sql_help.c:1918
+msgid "quote_character"
+msgstr "символ_лапок"
+
+#: sql_help.c:1919
+msgid "escape_character"
+msgstr "символ_екранування"
+
+#: sql_help.c:1923
+msgid "encoding_name"
+msgstr "ім'я_кодування"
+
+#: sql_help.c:1934
+msgid "access_method_type"
+msgstr "тип_метода_доступа"
+
+#: sql_help.c:2005 sql_help.c:2024 sql_help.c:2027
+msgid "arg_data_type"
+msgstr "тип_даних_аргумента"
+
+#: sql_help.c:2006 sql_help.c:2028 sql_help.c:2036
+msgid "sfunc"
+msgstr "функція_стану"
+
+#: sql_help.c:2007 sql_help.c:2029 sql_help.c:2037
+msgid "state_data_type"
+msgstr "тип_даних_стану"
+
+#: sql_help.c:2008 sql_help.c:2030 sql_help.c:2038
+msgid "state_data_size"
+msgstr "розмір_даних_стану"
+
+#: sql_help.c:2009 sql_help.c:2031 sql_help.c:2039
+msgid "ffunc"
+msgstr "функція_завершення"
+
+#: sql_help.c:2010 sql_help.c:2040
+msgid "combinefunc"
+msgstr "комбінуюча_функція"
+
+#: sql_help.c:2011 sql_help.c:2041
+msgid "serialfunc"
+msgstr "функція_серіалізації"
+
+#: sql_help.c:2012 sql_help.c:2042
+msgid "deserialfunc"
+msgstr "функція_десеріалізації"
+
+#: sql_help.c:2013 sql_help.c:2032 sql_help.c:2043
+msgid "initial_condition"
+msgstr "початкова_умова"
+
+#: sql_help.c:2014 sql_help.c:2044
+msgid "msfunc"
+msgstr "функція_стану_рух"
+
+#: sql_help.c:2015 sql_help.c:2045
+msgid "minvfunc"
+msgstr "зворотна_функція_рух"
+
+#: sql_help.c:2016 sql_help.c:2046
+msgid "mstate_data_type"
+msgstr "тип_даних_стану_рух"
+
+#: sql_help.c:2017 sql_help.c:2047
+msgid "mstate_data_size"
+msgstr "розмір_даних_стану_рух"
+
+#: sql_help.c:2018 sql_help.c:2048
+msgid "mffunc"
+msgstr "функція_завершення_рух"
+
+#: sql_help.c:2019 sql_help.c:2049
+msgid "minitial_condition"
+msgstr "початкова_умова_рух"
+
+#: sql_help.c:2020 sql_help.c:2050
+msgid "sort_operator"
+msgstr "оператор_сортування"
+
+#: sql_help.c:2033
+msgid "or the old syntax"
+msgstr "або старий синтаксис"
+
+#: sql_help.c:2035
+msgid "base_type"
+msgstr "базовий_тип"
+
+#: sql_help.c:2092 sql_help.c:2133
+msgid "locale"
+msgstr "локаль"
+
+#: sql_help.c:2093 sql_help.c:2134
+msgid "lc_collate"
+msgstr "код_правила_сортування"
+
+#: sql_help.c:2094 sql_help.c:2135
+msgid "lc_ctype"
+msgstr "код_класифікації_символів"
+
+#: sql_help.c:2095 sql_help.c:4188
+msgid "provider"
+msgstr "постачальник"
+
+#: sql_help.c:2097 sql_help.c:2189
+msgid "version"
+msgstr "версія"
+
+#: sql_help.c:2099
+msgid "existing_collation"
+msgstr "існуюче_правило_сортування"
+
+#: sql_help.c:2109
+msgid "source_encoding"
+msgstr "початкове_кодування"
+
+#: sql_help.c:2110
+msgid "dest_encoding"
+msgstr "цільве_кодування"
+
+#: sql_help.c:2131 sql_help.c:2917
+msgid "template"
+msgstr "шаблон"
+
+#: sql_help.c:2132
+msgid "encoding"
+msgstr "кодування"
+
+#: sql_help.c:2159
+msgid "constraint"
+msgstr "обмеження"
+
+#: sql_help.c:2160
+msgid "where constraint is:"
+msgstr "де обмеження:"
+
+#: sql_help.c:2174 sql_help.c:2580 sql_help.c:2990
+msgid "event"
+msgstr "подія"
+
+#: sql_help.c:2175
+msgid "filter_variable"
+msgstr "змінна_фільтру"
+
+#: sql_help.c:2263 sql_help.c:2812
+msgid "where column_constraint is:"
+msgstr "де обмеження_стовпців:"
+
+#: sql_help.c:2300
+msgid "rettype"
+msgstr "тип_результату"
+
+#: sql_help.c:2302
+msgid "column_type"
+msgstr "тип_стовпця"
+
+#: sql_help.c:2311 sql_help.c:2511
+msgid "definition"
+msgstr "визначення"
+
+#: sql_help.c:2312 sql_help.c:2512
+msgid "obj_file"
+msgstr "об'єктний_файл"
+
+#: sql_help.c:2313 sql_help.c:2513
+msgid "link_symbol"
+msgstr "символ_експорту"
+
+#: sql_help.c:2351 sql_help.c:2565 sql_help.c:3109
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2366 sql_help.c:2407 sql_help.c:2781 sql_help.c:2794
+#: sql_help.c:2808 sql_help.c:2873
+msgid "method"
+msgstr "метод"
+
+#: sql_help.c:2371
+msgid "opclass_parameter"
+msgstr "opclass_parameter"
+
+#: sql_help.c:2388
+msgid "call_handler"
+msgstr "обробник_виклику"
+
+#: sql_help.c:2389
+msgid "inline_handler"
+msgstr "обробник_впровадженого_коду"
+
+#: sql_help.c:2390
+msgid "valfunction"
+msgstr "функція_перевірки"
+
+#: sql_help.c:2429
+msgid "com_op"
+msgstr "комут_оператор"
+
+#: sql_help.c:2430
+msgid "neg_op"
+msgstr "зворотній_оператор"
+
+#: sql_help.c:2448
+msgid "family_name"
+msgstr "назва_сімейства"
+
+#: sql_help.c:2459
+msgid "storage_type"
+msgstr "тип_зберігання"
+
+#: sql_help.c:2586 sql_help.c:2997
+msgid "where event can be one of:"
+msgstr "де подія може бути однією з:"
+
+#: sql_help.c:2605 sql_help.c:2607
+msgid "schema_element"
+msgstr "елемент_схеми"
+
+#: sql_help.c:2644
+msgid "server_type"
+msgstr "тип_серверу"
+
+#: sql_help.c:2645
+msgid "server_version"
+msgstr "версія_серверу"
+
+#: sql_help.c:2646 sql_help.c:3748 sql_help.c:4096
+msgid "fdw_name"
+msgstr "назва_fdw"
+
+#: sql_help.c:2659
+msgid "statistics_name"
+msgstr "назва_статистики"
+
+#: sql_help.c:2660
+msgid "statistics_kind"
+msgstr "вид_статистики"
+
+#: sql_help.c:2674
+msgid "subscription_name"
+msgstr "назва_підписки"
+
+#: sql_help.c:2774
+msgid "source_table"
+msgstr "вихідна_таблиця"
+
+#: sql_help.c:2775
+msgid "like_option"
+msgstr "параметр_породження"
+
+#: sql_help.c:2841
+msgid "and like_option is:"
+msgstr "і параметр_породження:"
+
+#: sql_help.c:2890
+msgid "directory"
+msgstr "каталог"
+
+#: sql_help.c:2904
+msgid "parser_name"
+msgstr "назва_парсера"
+
+#: sql_help.c:2905
+msgid "source_config"
+msgstr "початкова_конфігурація"
+
+#: sql_help.c:2934
+msgid "start_function"
+msgstr "функція_початку"
+
+#: sql_help.c:2935
+msgid "gettoken_function"
+msgstr "функція_видачі_токену"
+
+#: sql_help.c:2936
+msgid "end_function"
+msgstr "функція_завершення"
+
+#: sql_help.c:2937
+msgid "lextypes_function"
+msgstr "функція_лекс_типів"
+
+#: sql_help.c:2938
+msgid "headline_function"
+msgstr "функція_створення_заголовків"
+
+#: sql_help.c:2950
+msgid "init_function"
+msgstr "функція_ініціалізації"
+
+#: sql_help.c:2951
+msgid "lexize_function"
+msgstr "функція_виділення_лексем"
+
+#: sql_help.c:2964
+msgid "from_sql_function_name"
+msgstr "ім'я_функції_з_sql"
+
+#: sql_help.c:2966
+msgid "to_sql_function_name"
+msgstr "ім'я_функції_в_sql"
+
+#: sql_help.c:2992
+msgid "referenced_table_name"
+msgstr "ім'я_залежної_таблиці"
+
+#: sql_help.c:2993
+msgid "transition_relation_name"
+msgstr "ім'я_перехідного_відношення"
+
+#: sql_help.c:2996
+msgid "arguments"
+msgstr "аргументи"
+
+#: sql_help.c:3046 sql_help.c:4221
+msgid "label"
+msgstr "мітка"
+
+#: sql_help.c:3048
+msgid "subtype"
+msgstr "підтип"
+
+#: sql_help.c:3049
+msgid "subtype_operator_class"
+msgstr "клас_оператора_підтипу"
+
+#: sql_help.c:3051
+msgid "canonical_function"
+msgstr "канонічна_функція"
+
+#: sql_help.c:3052
+msgid "subtype_diff_function"
+msgstr "функція_розбіжностей_підтипу"
+
+#: sql_help.c:3054
+msgid "input_function"
+msgstr "функція_вводу"
+
+#: sql_help.c:3055
+msgid "output_function"
+msgstr "функція_виводу"
+
+#: sql_help.c:3056
+msgid "receive_function"
+msgstr "функція_отримання"
+
+#: sql_help.c:3057
+msgid "send_function"
+msgstr "функція_відправки"
+
+#: sql_help.c:3058
+msgid "type_modifier_input_function"
+msgstr "функція_введення_модифікатора_типу"
+
+#: sql_help.c:3059
+msgid "type_modifier_output_function"
+msgstr "функція_виводу_модифікатора_типу"
+
+#: sql_help.c:3060
+msgid "analyze_function"
+msgstr "функція_аналізу"
+
+#: sql_help.c:3061
+msgid "internallength"
+msgstr "внутр_довжина"
+
+#: sql_help.c:3062
+msgid "alignment"
+msgstr "вирівнювання"
+
+#: sql_help.c:3063
+msgid "storage"
+msgstr "зберігання"
+
+#: sql_help.c:3064
+msgid "like_type"
+msgstr "тип_зразок"
+
+#: sql_help.c:3065
+msgid "category"
+msgstr "категорія"
+
+#: sql_help.c:3066
+msgid "preferred"
+msgstr "привілейований"
+
+#: sql_help.c:3067
+msgid "default"
+msgstr "за_замовчуванням"
+
+#: sql_help.c:3068
+msgid "element"
+msgstr "елемент"
+
+#: sql_help.c:3069
+msgid "delimiter"
+msgstr "роздільник"
+
+#: sql_help.c:3070
+msgid "collatable"
+msgstr "сортувальний"
+
+#: sql_help.c:3167 sql_help.c:3816 sql_help.c:4281 sql_help.c:4370
+#: sql_help.c:4520 sql_help.c:4620 sql_help.c:4740
+msgid "with_query"
+msgstr "with_запит"
+
+#: sql_help.c:3169 sql_help.c:3818 sql_help.c:4300 sql_help.c:4306
+#: sql_help.c:4309 sql_help.c:4313 sql_help.c:4317 sql_help.c:4325
+#: sql_help.c:4539 sql_help.c:4545 sql_help.c:4548 sql_help.c:4552
+#: sql_help.c:4556 sql_help.c:4564 sql_help.c:4622 sql_help.c:4759
+#: sql_help.c:4765 sql_help.c:4768 sql_help.c:4772 sql_help.c:4776
+#: sql_help.c:4784
+msgid "alias"
+msgstr "псевдонім"
+
+#: sql_help.c:3170 sql_help.c:4285 sql_help.c:4327 sql_help.c:4329
+#: sql_help.c:4375 sql_help.c:4524 sql_help.c:4566 sql_help.c:4568
+#: sql_help.c:4629 sql_help.c:4744 sql_help.c:4786 sql_help.c:4788
+msgid "from_item"
+msgstr "джерело_даних"
+
+#: sql_help.c:3172 sql_help.c:3653 sql_help.c:3897 sql_help.c:4631
+msgid "cursor_name"
+msgstr "ім'я_курсору"
+
+#: sql_help.c:3173 sql_help.c:3824 sql_help.c:4632
+msgid "output_expression"
+msgstr "вираз_результату"
+
+#: sql_help.c:3174 sql_help.c:3825 sql_help.c:4284 sql_help.c:4373
+#: sql_help.c:4523 sql_help.c:4633 sql_help.c:4743
+msgid "output_name"
+msgstr "ім'я_результату"
+
+#: sql_help.c:3190
+msgid "code"
+msgstr "код"
+
+#: sql_help.c:3595
+msgid "parameter"
+msgstr "параметр"
+
+#: sql_help.c:3617 sql_help.c:3618 sql_help.c:3922
+msgid "statement"
+msgstr "оператор"
+
+#: sql_help.c:3652 sql_help.c:3896
+msgid "direction"
+msgstr "напрямок"
+
+#: sql_help.c:3654 sql_help.c:3898
+msgid "where direction can be empty or one of:"
+msgstr "де напрямок може бути пустим або одним із:"
+
+#: sql_help.c:3655 sql_help.c:3656 sql_help.c:3657 sql_help.c:3658
+#: sql_help.c:3659 sql_help.c:3899 sql_help.c:3900 sql_help.c:3901
+#: sql_help.c:3902 sql_help.c:3903 sql_help.c:4294 sql_help.c:4296
+#: sql_help.c:4384 sql_help.c:4386 sql_help.c:4533 sql_help.c:4535
+#: sql_help.c:4688 sql_help.c:4690 sql_help.c:4753 sql_help.c:4755
+msgid "count"
+msgstr "кількість"
+
+#: sql_help.c:3741 sql_help.c:4089
+msgid "sequence_name"
+msgstr "ім'я_послідовності"
+
+#: sql_help.c:3754 sql_help.c:4102
+msgid "arg_name"
+msgstr "ім'я_аргументу"
+
+#: sql_help.c:3755 sql_help.c:4103
+msgid "arg_type"
+msgstr "тип_аргументу"
+
+#: sql_help.c:3760 sql_help.c:4108
+msgid "loid"
+msgstr "код_вел_об'єкту"
+
+#: sql_help.c:3784
+msgid "remote_schema"
+msgstr "віддалена_схема"
+
+#: sql_help.c:3787
+msgid "local_schema"
+msgstr "локальна_схема"
+
+#: sql_help.c:3822
+msgid "conflict_target"
+msgstr "ціль_конфлікту"
+
+#: sql_help.c:3823
+msgid "conflict_action"
+msgstr "дія_при_конфлікті"
+
+#: sql_help.c:3826
+msgid "where conflict_target can be one of:"
+msgstr "де ціль_конфлікту може бути одним з:"
+
+#: sql_help.c:3827
+msgid "index_column_name"
+msgstr "ім'я_стовпця_індексу"
+
+#: sql_help.c:3828
+msgid "index_expression"
+msgstr "вираз_індексу"
+
+#: sql_help.c:3831
+msgid "index_predicate"
+msgstr "предикат_індексу"
+
+#: sql_help.c:3833
+msgid "and conflict_action is one of:"
+msgstr "і дія_при_конфлікті одна з:"
+
+#: sql_help.c:3839 sql_help.c:4628
+msgid "sub-SELECT"
+msgstr "вкладений-SELECT"
+
+#: sql_help.c:3848 sql_help.c:3911 sql_help.c:4604
+msgid "channel"
+msgstr "канал"
+
+#: sql_help.c:3870
+msgid "lockmode"
+msgstr "режим_блокування"
+
+#: sql_help.c:3871
+msgid "where lockmode is one of:"
+msgstr "де режим_блокування один з:"
+
+#: sql_help.c:3912
+msgid "payload"
+msgstr "зміст"
+
+#: sql_help.c:3939
+msgid "old_role"
+msgstr "стара_роль"
+
+#: sql_help.c:3940
+msgid "new_role"
+msgstr "нова_роль"
+
+#: sql_help.c:3971 sql_help.c:4143 sql_help.c:4151
+msgid "savepoint_name"
+msgstr "ім'я_точки_збереження"
+
+#: sql_help.c:4287 sql_help.c:4339 sql_help.c:4526 sql_help.c:4578
+#: sql_help.c:4746 sql_help.c:4798
+msgid "grouping_element"
+msgstr "елемент_групування"
+
+#: sql_help.c:4289 sql_help.c:4379 sql_help.c:4528 sql_help.c:4748
+msgid "window_name"
+msgstr "назва_вікна"
+
+#: sql_help.c:4290 sql_help.c:4380 sql_help.c:4529 sql_help.c:4749
+msgid "window_definition"
+msgstr "визначення_вікна"
+
+#: sql_help.c:4291 sql_help.c:4305 sql_help.c:4343 sql_help.c:4381
+#: sql_help.c:4530 sql_help.c:4544 sql_help.c:4582 sql_help.c:4750
+#: sql_help.c:4764 sql_help.c:4802
+msgid "select"
+msgstr "виберіть"
+
+#: sql_help.c:4298 sql_help.c:4537 sql_help.c:4757
+msgid "where from_item can be one of:"
+msgstr "де джерело_даних може бути одним з:"
+
+#: sql_help.c:4301 sql_help.c:4307 sql_help.c:4310 sql_help.c:4314
+#: sql_help.c:4326 sql_help.c:4540 sql_help.c:4546 sql_help.c:4549
+#: sql_help.c:4553 sql_help.c:4565 sql_help.c:4760 sql_help.c:4766
+#: sql_help.c:4769 sql_help.c:4773 sql_help.c:4785
+msgid "column_alias"
+msgstr "псевдонім_стовпця"
+
+#: sql_help.c:4302 sql_help.c:4541 sql_help.c:4761
+msgid "sampling_method"
+msgstr "метод_вибірки"
+
+#: sql_help.c:4304 sql_help.c:4543 sql_help.c:4763
+msgid "seed"
+msgstr "початкове_число"
+
+#: sql_help.c:4308 sql_help.c:4341 sql_help.c:4547 sql_help.c:4580
+#: sql_help.c:4767 sql_help.c:4800
+msgid "with_query_name"
+msgstr "ім'я_запиту_WITH"
+
+#: sql_help.c:4318 sql_help.c:4321 sql_help.c:4324 sql_help.c:4557
+#: sql_help.c:4560 sql_help.c:4563 sql_help.c:4777 sql_help.c:4780
+#: sql_help.c:4783
+msgid "column_definition"
+msgstr "визначення_стовпця"
+
+#: sql_help.c:4328 sql_help.c:4567 sql_help.c:4787
+msgid "join_type"
+msgstr "тип_поєднання"
+
+#: sql_help.c:4330 sql_help.c:4569 sql_help.c:4789
+msgid "join_condition"
+msgstr "умова_поєднання"
+
+#: sql_help.c:4331 sql_help.c:4570 sql_help.c:4790
+msgid "join_column"
+msgstr "стовпець_поєднання"
+
+#: sql_help.c:4332 sql_help.c:4571 sql_help.c:4791
+msgid "and grouping_element can be one of:"
+msgstr "і елемент_групування може бути одним з:"
+
+#: sql_help.c:4340 sql_help.c:4579 sql_help.c:4799
+msgid "and with_query is:"
+msgstr "і запит_WITH:"
+
+#: sql_help.c:4344 sql_help.c:4583 sql_help.c:4803
+msgid "values"
+msgstr "значення"
+
+#: sql_help.c:4345 sql_help.c:4584 sql_help.c:4804
+msgid "insert"
+msgstr "вставка"
+
+#: sql_help.c:4346 sql_help.c:4585 sql_help.c:4805
+msgid "update"
+msgstr "оновлення"
+
+#: sql_help.c:4347 sql_help.c:4586 sql_help.c:4806
+msgid "delete"
+msgstr "видалення"
+
+#: sql_help.c:4374
+msgid "new_table"
+msgstr "нова_таблиця"
+
+#: sql_help.c:4399
+msgid "timezone"
+msgstr "часовий пояс"
+
+#: sql_help.c:4444
+msgid "snapshot_id"
+msgstr "код_знімку"
+
+#: sql_help.c:4686
+msgid "sort_expression"
+msgstr "вираз_сортування"
+
+#: sql_help.c:4813 sql_help.c:5791
+msgid "abort the current transaction"
+msgstr "перервати поточну транзакцію"
+
+#: sql_help.c:4819
+msgid "change the definition of an aggregate function"
+msgstr "змінити визначення агрегатної функції"
+
+#: sql_help.c:4825
+msgid "change the definition of a collation"
+msgstr "змінити визначення правила сортування"
+
+#: sql_help.c:4831
+msgid "change the definition of a conversion"
+msgstr "змінити визначення перетворення"
+
+#: sql_help.c:4837
+msgid "change a database"
+msgstr "змінити базу даних"
+
+#: sql_help.c:4843
+msgid "define default access privileges"
+msgstr "визначити права доступу за замовчуванням"
+
+#: sql_help.c:4849
+msgid "change the definition of a domain"
+msgstr "змінити визначення домену"
+
+#: sql_help.c:4855
+msgid "change the definition of an event trigger"
+msgstr "змінити визначення тригеру події"
+
+#: sql_help.c:4861
+msgid "change the definition of an extension"
+msgstr "змінити визначення розширення"
+
+#: sql_help.c:4867
+msgid "change the definition of a foreign-data wrapper"
+msgstr "змінити визначення джерела сторонніх даних"
+
+#: sql_help.c:4873
+msgid "change the definition of a foreign table"
+msgstr "змінити визначення сторонньої таблиці"
+
+#: sql_help.c:4879
+msgid "change the definition of a function"
+msgstr "змінити визначення функції"
+
+#: sql_help.c:4885
+msgid "change role name or membership"
+msgstr "змінити назву ролі або членства"
+
+#: sql_help.c:4891
+msgid "change the definition of an index"
+msgstr "змінити визначення індексу"
+
+#: sql_help.c:4897
+msgid "change the definition of a procedural language"
+msgstr "змінити визначення процедурної мови"
+
+#: sql_help.c:4903
+msgid "change the definition of a large object"
+msgstr "змінити визначення великого об'єкту"
+
+#: sql_help.c:4909
+msgid "change the definition of a materialized view"
+msgstr "змінити визначення матеріалізованого подання"
+
+#: sql_help.c:4915
+msgid "change the definition of an operator"
+msgstr "змінити визначення оператора"
+
+#: sql_help.c:4921
+msgid "change the definition of an operator class"
+msgstr "змінити визначення класа операторів"
+
+#: sql_help.c:4927
+msgid "change the definition of an operator family"
+msgstr "змінити визначення сімейства операторів"
+
+#: sql_help.c:4933
+msgid "change the definition of a row level security policy"
+msgstr "змінити визначення політики безпеки на рівні рядків"
+
+#: sql_help.c:4939
+msgid "change the definition of a procedure"
+msgstr "змінити визначення процедури"
+
+#: sql_help.c:4945
+msgid "change the definition of a publication"
+msgstr "змінити визначення публікації"
+
+#: sql_help.c:4951 sql_help.c:5053
+msgid "change a database role"
+msgstr "змінити роль бази даних"
+
+#: sql_help.c:4957
+msgid "change the definition of a routine"
+msgstr "змінити визначення підпрограми"
+
+#: sql_help.c:4963
+msgid "change the definition of a rule"
+msgstr "змінити визначення правила"
+
+#: sql_help.c:4969
+msgid "change the definition of a schema"
+msgstr "змінити визначення схеми"
+
+#: sql_help.c:4975
+msgid "change the definition of a sequence generator"
+msgstr "змінити визначення генератору послідовності"
+
+#: sql_help.c:4981
+msgid "change the definition of a foreign server"
+msgstr "змінити визначення стороннього серверу"
+
+#: sql_help.c:4987
+msgid "change the definition of an extended statistics object"
+msgstr "змінити визначення об'єкту розширеної статистики"
+
+#: sql_help.c:4993
+msgid "change the definition of a subscription"
+msgstr "змінити визначення підписки"
+
+#: sql_help.c:4999
+msgid "change a server configuration parameter"
+msgstr "змінити параметр конфігурації сервера"
+
+#: sql_help.c:5005
+msgid "change the definition of a table"
+msgstr "змінити визначення таблиці"
+
+#: sql_help.c:5011
+msgid "change the definition of a tablespace"
+msgstr "змінити визначення табличного простору"
+
+#: sql_help.c:5017
+msgid "change the definition of a text search configuration"
+msgstr "змінити визначення конфігурації текстового пошуку"
+
+#: sql_help.c:5023
+msgid "change the definition of a text search dictionary"
+msgstr "змінити визначення словника текстового пошуку"
+
+#: sql_help.c:5029
+msgid "change the definition of a text search parser"
+msgstr "змінити визначення парсера текстового пошуку"
+
+#: sql_help.c:5035
+msgid "change the definition of a text search template"
+msgstr "змінити визначення шаблона текстового пошуку"
+
+#: sql_help.c:5041
+msgid "change the definition of a trigger"
+msgstr "змінити визначення тригеру"
+
+#: sql_help.c:5047
+msgid "change the definition of a type"
+msgstr "змінити визначення типу"
+
+#: sql_help.c:5059
+msgid "change the definition of a user mapping"
+msgstr "змінити визначення зіставлень користувачів"
+
+#: sql_help.c:5065
+msgid "change the definition of a view"
+msgstr "змінити визначення подання"
+
+#: sql_help.c:5071
+msgid "collect statistics about a database"
+msgstr "зібрати статистику про базу даних"
+
+#: sql_help.c:5077 sql_help.c:5869
+msgid "start a transaction block"
+msgstr "розпочати транзакцію"
+
+#: sql_help.c:5083
+msgid "invoke a procedure"
+msgstr "викликати процедуру"
+
+#: sql_help.c:5089
+msgid "force a write-ahead log checkpoint"
+msgstr "провести контрольну точку в журналі попереднього запису"
+
+#: sql_help.c:5095
+msgid "close a cursor"
+msgstr "закрити курсор"
+
+#: sql_help.c:5101
+msgid "cluster a table according to an index"
+msgstr "перегрупувати таблицю за індексом"
+
+#: sql_help.c:5107
+msgid "define or change the comment of an object"
+msgstr "задати або змінити коментар об'єкта"
+
+#: sql_help.c:5113 sql_help.c:5671
+msgid "commit the current transaction"
+msgstr "затвердити поточну транзакцію"
+
+#: sql_help.c:5119
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "затвердити транзакцію, раніше підготовлену до двохфазного затвердження"
+
+#: sql_help.c:5125
+msgid "copy data between a file and a table"
+msgstr "копіювати дані між файлом та таблицею"
+
+#: sql_help.c:5131
+msgid "define a new access method"
+msgstr "визначити новий метод доступу"
+
+#: sql_help.c:5137
+msgid "define a new aggregate function"
+msgstr "визначити нову агрегатну функцію"
+
+#: sql_help.c:5143
+msgid "define a new cast"
+msgstr "визначити приведення типів"
+
+#: sql_help.c:5149
+msgid "define a new collation"
+msgstr "визначити нове правило сортування"
+
+#: sql_help.c:5155
+msgid "define a new encoding conversion"
+msgstr "визначити нове перетворення кодування"
+
+#: sql_help.c:5161
+msgid "create a new database"
+msgstr "створити нову базу даних"
+
+#: sql_help.c:5167
+msgid "define a new domain"
+msgstr "визначити новий домен"
+
+#: sql_help.c:5173
+msgid "define a new event trigger"
+msgstr "визначити новий тригер події"
+
+#: sql_help.c:5179
+msgid "install an extension"
+msgstr "встановити розширення"
+
+#: sql_help.c:5185
+msgid "define a new foreign-data wrapper"
+msgstr "визначити нове джерело сторонніх даних"
+
+#: sql_help.c:5191
+msgid "define a new foreign table"
+msgstr "визначити нову сторонню таблицю"
+
+#: sql_help.c:5197
+msgid "define a new function"
+msgstr "визначити нову функцію"
+
+#: sql_help.c:5203 sql_help.c:5263 sql_help.c:5365
+msgid "define a new database role"
+msgstr "визначити нову роль бази даних"
+
+#: sql_help.c:5209
+msgid "define a new index"
+msgstr "визначити новий індекс"
+
+#: sql_help.c:5215
+msgid "define a new procedural language"
+msgstr "визначити нову процедурну мову"
+
+#: sql_help.c:5221
+msgid "define a new materialized view"
+msgstr "визначити нове матеріалізоване подання"
+
+#: sql_help.c:5227
+msgid "define a new operator"
+msgstr "визначити новий оператор"
+
+#: sql_help.c:5233
+msgid "define a new operator class"
+msgstr "визначити новий клас оператора"
+
+#: sql_help.c:5239
+msgid "define a new operator family"
+msgstr "визначити нове сімейство операторів"
+
+#: sql_help.c:5245
+msgid "define a new row level security policy for a table"
+msgstr "визначити нову політику безпеки на рівні рядків для таблиці"
+
+#: sql_help.c:5251
+msgid "define a new procedure"
+msgstr "визначити нову процедуру"
+
+#: sql_help.c:5257
+msgid "define a new publication"
+msgstr "визначити нову публікацію"
+
+#: sql_help.c:5269
+msgid "define a new rewrite rule"
+msgstr "визначити нове правило перезапису"
+
+#: sql_help.c:5275
+msgid "define a new schema"
+msgstr "визначити нову схему"
+
+#: sql_help.c:5281
+msgid "define a new sequence generator"
+msgstr "визначити новий генератор послідовностей"
+
+#: sql_help.c:5287
+msgid "define a new foreign server"
+msgstr "визначити новий сторонній сервер"
+
+#: sql_help.c:5293
+msgid "define extended statistics"
+msgstr "визначити розширену статистику"
+
+#: sql_help.c:5299
+msgid "define a new subscription"
+msgstr "визначити нову підписку"
+
+#: sql_help.c:5305
+msgid "define a new table"
+msgstr "визначити нову таблицю"
+
+#: sql_help.c:5311 sql_help.c:5827
+msgid "define a new table from the results of a query"
+msgstr "визначити нову таблицю з результатів запиту"
+
+#: sql_help.c:5317
+msgid "define a new tablespace"
+msgstr "визначити новий табличний простір"
+
+#: sql_help.c:5323
+msgid "define a new text search configuration"
+msgstr "визначити нову конфігурацію текстового пошуку"
+
+#: sql_help.c:5329
+msgid "define a new text search dictionary"
+msgstr "визначити новий словник текстового пошуку"
+
+#: sql_help.c:5335
+msgid "define a new text search parser"
+msgstr "визначити новий аналізатор текстового пошуку"
+
+#: sql_help.c:5341
+msgid "define a new text search template"
+msgstr "визначити новий шаблон текстового пошуку"
+
+#: sql_help.c:5347
+msgid "define a new transform"
+msgstr "визначити нове перетворення"
+
+#: sql_help.c:5353
+msgid "define a new trigger"
+msgstr "визначити новий тригер"
+
+#: sql_help.c:5359
+msgid "define a new data type"
+msgstr "визначити новий тип даних"
+
+#: sql_help.c:5371
+msgid "define a new mapping of a user to a foreign server"
+msgstr "визначити нове зіставлення користувача для стороннього сервера"
+
+#: sql_help.c:5377
+msgid "define a new view"
+msgstr "визначити нове подання"
+
+#: sql_help.c:5383
+msgid "deallocate a prepared statement"
+msgstr "звільнити підготовлену команду"
+
+#: sql_help.c:5389
+msgid "define a cursor"
+msgstr "визначити курсор"
+
+#: sql_help.c:5395
+msgid "delete rows of a table"
+msgstr "видалити рядки таблиці"
+
+#: sql_help.c:5401
+msgid "discard session state"
+msgstr "очистити стан сесії"
+
+#: sql_help.c:5407
+msgid "execute an anonymous code block"
+msgstr "виконати анонімний блок коду"
+
+#: sql_help.c:5413
+msgid "remove an access method"
+msgstr "видалити метод доступу"
+
+#: sql_help.c:5419
+msgid "remove an aggregate function"
+msgstr "видалити агрегатну функцію"
+
+#: sql_help.c:5425
+msgid "remove a cast"
+msgstr "видалити приведення типів"
+
+#: sql_help.c:5431
+msgid "remove a collation"
+msgstr "видалити правило сортування"
+
+#: sql_help.c:5437
+msgid "remove a conversion"
+msgstr "видалити перетворення"
+
+#: sql_help.c:5443
+msgid "remove a database"
+msgstr "видалити базу даних"
+
+#: sql_help.c:5449
+msgid "remove a domain"
+msgstr "видалити домен"
+
+#: sql_help.c:5455
+msgid "remove an event trigger"
+msgstr "видалити тригер події"
+
+#: sql_help.c:5461
+msgid "remove an extension"
+msgstr "видалити розширення"
+
+#: sql_help.c:5467
+msgid "remove a foreign-data wrapper"
+msgstr "видалити джерело сторонніх даних"
+
+#: sql_help.c:5473
+msgid "remove a foreign table"
+msgstr "видалити сторонню таблицю"
+
+#: sql_help.c:5479
+msgid "remove a function"
+msgstr "видалити функцію"
+
+#: sql_help.c:5485 sql_help.c:5551 sql_help.c:5653
+msgid "remove a database role"
+msgstr "видалити роль бази даних"
+
+#: sql_help.c:5491
+msgid "remove an index"
+msgstr "видалити індекс"
+
+#: sql_help.c:5497
+msgid "remove a procedural language"
+msgstr "видалити процедурну мову"
+
+#: sql_help.c:5503
+msgid "remove a materialized view"
+msgstr "видалити матеріалізоване подання"
+
+#: sql_help.c:5509
+msgid "remove an operator"
+msgstr "видалити оператор"
+
+#: sql_help.c:5515
+msgid "remove an operator class"
+msgstr "видалити клас операторів"
+
+#: sql_help.c:5521
+msgid "remove an operator family"
+msgstr "видалити сімейство операторів"
+
+#: sql_help.c:5527
+msgid "remove database objects owned by a database role"
+msgstr "видалити об'єкти бази даних, що належать ролі"
+
+#: sql_help.c:5533
+msgid "remove a row level security policy from a table"
+msgstr "видалити політику безпеки на рівні рядків з таблиці"
+
+#: sql_help.c:5539
+msgid "remove a procedure"
+msgstr "видалити процедуру"
+
+#: sql_help.c:5545
+msgid "remove a publication"
+msgstr "видалити публікацію"
+
+#: sql_help.c:5557
+msgid "remove a routine"
+msgstr "видалити підпрограму"
+
+#: sql_help.c:5563
+msgid "remove a rewrite rule"
+msgstr "видалити правило перезапису"
+
+#: sql_help.c:5569
+msgid "remove a schema"
+msgstr "видалити схему"
+
+#: sql_help.c:5575
+msgid "remove a sequence"
+msgstr "видалити послідовність"
+
+#: sql_help.c:5581
+msgid "remove a foreign server descriptor"
+msgstr "видалити опис стороннього серверу"
+
+#: sql_help.c:5587
+msgid "remove extended statistics"
+msgstr "видалити розширену статистику"
+
+#: sql_help.c:5593
+msgid "remove a subscription"
+msgstr "видалити підписку"
+
+#: sql_help.c:5599
+msgid "remove a table"
+msgstr "видалити таблицю"
+
+#: sql_help.c:5605
+msgid "remove a tablespace"
+msgstr "видалити табличний простір"
+
+#: sql_help.c:5611
+msgid "remove a text search configuration"
+msgstr "видалити конфігурацію тектового пошуку"
+
+#: sql_help.c:5617
+msgid "remove a text search dictionary"
+msgstr "видалити словник тектового пошуку"
+
+#: sql_help.c:5623
+msgid "remove a text search parser"
+msgstr "видалити парсер тектового пошуку"
+
+#: sql_help.c:5629
+msgid "remove a text search template"
+msgstr "видалити шаблон тектового пошуку"
+
+#: sql_help.c:5635
+msgid "remove a transform"
+msgstr "видалити перетворення"
+
+#: sql_help.c:5641
+msgid "remove a trigger"
+msgstr "видалити тригер"
+
+#: sql_help.c:5647
+msgid "remove a data type"
+msgstr "видалити тип даних"
+
+#: sql_help.c:5659
+msgid "remove a user mapping for a foreign server"
+msgstr "видалити зіставлення користувача для стороннього серверу"
+
+#: sql_help.c:5665
+msgid "remove a view"
+msgstr "видалити подання"
+
+#: sql_help.c:5677
+msgid "execute a prepared statement"
+msgstr "виконати підготовлену команду"
+
+#: sql_help.c:5683
+msgid "show the execution plan of a statement"
+msgstr "показати план виконання команди"
+
+#: sql_help.c:5689
+msgid "retrieve rows from a query using a cursor"
+msgstr "отримати рядки запиту з курсору"
+
+#: sql_help.c:5695
+msgid "define access privileges"
+msgstr "визначити права доступу"
+
+#: sql_help.c:5701
+msgid "import table definitions from a foreign server"
+msgstr "імпортувати визначення таблиць зі стороннього серверу"
+
+#: sql_help.c:5707
+msgid "create new rows in a table"
+msgstr "створити нові рядки в таблиці"
+
+#: sql_help.c:5713
+msgid "listen for a notification"
+msgstr "очікувати на повідомлення"
+
+#: sql_help.c:5719
+msgid "load a shared library file"
+msgstr "завантажити файл спільної бібліотеки"
+
+#: sql_help.c:5725
+msgid "lock a table"
+msgstr "заблокувати таблицю"
+
+#: sql_help.c:5731
+msgid "position a cursor"
+msgstr "розташувати курсор"
+
+#: sql_help.c:5737
+msgid "generate a notification"
+msgstr "згенерувати повідомлення"
+
+#: sql_help.c:5743
+msgid "prepare a statement for execution"
+msgstr "підготувати команду для виконання"
+
+#: sql_help.c:5749
+msgid "prepare the current transaction for two-phase commit"
+msgstr "підготувати поточну транзакцію для двохфазного затвердження"
+
+#: sql_help.c:5755
+msgid "change the ownership of database objects owned by a database role"
+msgstr "змінити власника об'єктів БД, що належать заданій ролі"
+
+#: sql_help.c:5761
+msgid "replace the contents of a materialized view"
+msgstr "замінити вміст матеріалізованого подання"
+
+#: sql_help.c:5767
+msgid "rebuild indexes"
+msgstr "перебудувати індекси"
+
+#: sql_help.c:5773
+msgid "destroy a previously defined savepoint"
+msgstr "видалити раніше визначену точку збереження"
+
+#: sql_help.c:5779
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "відновити початкове значення параметру виконання"
+
+#: sql_help.c:5785
+msgid "remove access privileges"
+msgstr "видалити права доступу"
+
+#: sql_help.c:5797
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "скасувати транзакцію, раніше підготовлену до двохфазного затвердження"
+
+#: sql_help.c:5803
+msgid "roll back to a savepoint"
+msgstr "відкотитися до точки збереження"
+
+#: sql_help.c:5809
+msgid "define a new savepoint within the current transaction"
+msgstr "визначити нову точку збереження в рамках поточної транзакції"
+
+#: sql_help.c:5815
+msgid "define or change a security label applied to an object"
+msgstr "визначити або змінити мітку безпеки, застосовану до об'єкта"
+
+#: sql_help.c:5821 sql_help.c:5875 sql_help.c:5911
+msgid "retrieve rows from a table or view"
+msgstr "отримати рядки з таблиці або подання"
+
+#: sql_help.c:5833
+msgid "change a run-time parameter"
+msgstr "змінити параметр виконання"
+
+#: sql_help.c:5839
+msgid "set constraint check timing for the current transaction"
+msgstr "встановити час перевірки обмеження для поточної транзакції"
+
+#: sql_help.c:5845
+msgid "set the current user identifier of the current session"
+msgstr "встановити ідентифікатор поточного користувача в поточній сесії"
+
+#: sql_help.c:5851
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "встановити ідентифікатор користувача сесії й ідентифікатор поточного користувача в поточній сесії"
+
+#: sql_help.c:5857
+msgid "set the characteristics of the current transaction"
+msgstr "встановити характеристики поточної транзакції"
+
+#: sql_help.c:5863
+msgid "show the value of a run-time parameter"
+msgstr "показати значення параметра виконання"
+
+#: sql_help.c:5881
+msgid "empty a table or set of tables"
+msgstr "очистити таблицю або декілька таблиць"
+
+#: sql_help.c:5887
+msgid "stop listening for a notification"
+msgstr "припинити очікування повідомлень"
+
+#: sql_help.c:5893
+msgid "update rows of a table"
+msgstr "змінити рядки таблиці"
+
+#: sql_help.c:5899
+msgid "garbage-collect and optionally analyze a database"
+msgstr "виконати збір сміття і проаналізувати базу даних"
+
+#: sql_help.c:5905
+msgid "compute a set of rows"
+msgstr "отримати набір рядків"
+
+#: startup.c:212
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1 можна використовувати лише в неінтерактивному режимі"
+
+#: startup.c:299
+#, c-format
+msgid "could not connect to server: %s"
+msgstr "не вдалося підключитися до сервера: %s"
+
+#: startup.c:327
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "не вдалося відкрити файл протоколу \"%s\": %m"
+
+#: startup.c:439
+#, c-format
+msgid "Type \"help\" for help.\n\n"
+msgstr "Введіть \"help\", щоб отримати допомогу.\n\n"
+
+#: startup.c:589
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "не вдалося встановити параметр друку \"%s\""
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Спробуйте \"%s --help\" для отримання додаткової інформації.\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "зайвий аргумент \"%s\" проігнорований"
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "не вдалося знайти ехе файл власної програми"
+
+#: tab-complete.c:4640
+#, c-format
+msgid "tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr "помилка запиту Tab-доповнення: %s\n"
+"Запит:\n"
+"%s"
+
+#: variables.c:139
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "нерозпізнане значення \"%s\" для \"%s\": очікувалося логічне значення"
+
+#: variables.c:176
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "неправильне значення \"%s\" для \"%s\": очікувалося ціле число"
+
+#: variables.c:224
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "неправильне ім'я змінної: \"%s\""
+
+#: variables.c:393
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr "нерозпізнане значення \"%s\" для \"%s\"\n"
+"Допустимі значення: %s."
+
diff --git a/src/bin/psql/po/zh_CN.po b/src/bin/psql/po/zh_CN.po
new file mode 100644
index 0000000..79c4dda
--- /dev/null
+++ b/src/bin/psql/po/zh_CN.po
@@ -0,0 +1,6282 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: psql (PostgreSQL) 12\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
+"POT-Creation-Date: 2019-05-22 17:56+0800\n"
+"PO-Revision-Date: 2019-06-17 16:00+0800\n"
+"Last-Translator: Jie Zhang <zhangjie2@cn.fujitsu.com>\n"
+"Language-Team: Chinese (Simplified) <zhangjie2@cn.fujitsu.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-Bookmarks: 175,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 1.5.7\n"
+
+#: ../../../src/common/logging.c:188
+#, c-format
+msgid "fatal: "
+msgstr "致命的:"
+
+#: ../../../src/common/logging.c:195
+#, c-format
+msgid "error: "
+msgstr "错误: "
+
+#: ../../../src/common/logging.c:202
+#, c-format
+msgid "warning: "
+msgstr "警告: "
+
+#: ../../common/exec.c:138 ../../common/exec.c:255 ../../common/exec.c:301
+#, c-format
+msgid "could not identify current directory: %m"
+msgstr "无法确认当前目录: %m"
+
+#: ../../common/exec.c:157
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "无效的二进制码 \"%s\""
+
+#: ../../common/exec.c:207
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "无法读取二进制码 \"%s\""
+
+#: ../../common/exec.c:215
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "未能找到一个 \"%s\" 来执行"
+
+#: ../../common/exec.c:271 ../../common/exec.c:310
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "无法跳转到目录 \"%s\" 中: %m"
+
+#: ../../common/exec.c:288
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "无法读取符号链接 \"%s\": %m"
+
+#: ../../common/exec.c:541
+#, c-format
+msgid "pclose failed: %m"
+msgstr "pclose调用失败: %m"
+
+#: ../../common/exec.c:670 ../../common/exec.c:715 ../../common/exec.c:807
+#: command.c:1218 input.c:228 mainloop.c:82 mainloop.c:386
+#, c-format
+msgid "out of memory"
+msgstr "内存用尽"
+
+#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75
+#: ../../common/fe_memutils.c:98
+#, c-format
+msgid "out of memory\n"
+msgstr "内存耗尽\n"
+
+#: ../../common/fe_memutils.c:92
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "无法复制空指针 (内部错误)\n"
+
+#: ../../common/username.c:43
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "无法找到有效的用户ID %ld: %s"
+
+#: ../../common/username.c:45 command.c:555
+msgid "user does not exist"
+msgstr "用户不存在"
+
+#: ../../common/username.c:60
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "用户名查找失败:错误代码%lu"
+
+#: ../../common/wait_error.c:45
+#, c-format
+msgid "command not executable"
+msgstr "无法执行命令"
+
+#: ../../common/wait_error.c:49
+#, c-format
+msgid "command not found"
+msgstr "没有找到命令"
+
+#: ../../common/wait_error.c:54
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "子进程结束,结束代码 %d"
+
+#: ../../common/wait_error.c:62
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "子进程被异常(exception) 0x%X 终止"
+
+#: ../../common/wait_error.c:66
+#, c-format
+msgid "child process was terminated by signal %d: %s"
+msgstr "子进程被信号 %d 终止: %s"
+
+#: ../../common/wait_error.c:72
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "子进程结束,不明状态代码 %d"
+
+#: ../../fe_utils/print.c:353
+#, c-format
+msgid "(%lu row)"
+msgid_plural "(%lu rows)"
+msgstr[0] "(%lu 行记录)"
+
+#: ../../fe_utils/print.c:3058
+#, c-format
+msgid "Interrupted\n"
+msgstr "已中断\n"
+
+#: ../../fe_utils/print.c:3122
+#, c-format
+msgid "Cannot add header to table content: column count of %d exceeded.\n"
+msgstr "无法对表的内容增加标题:已经超过%d列的数量.\n"
+
+#: ../../fe_utils/print.c:3162
+#, c-format
+msgid "Cannot add cell to table content: total cell count of %d exceeded.\n"
+msgstr "无法对表的内容添加单元: 总共有%d个单元超过.\n"
+
+#: ../../fe_utils/print.c:3417
+#, c-format
+msgid "invalid output format (internal error): %d"
+msgstr "无效的输出格式 (内部错误): %d"
+
+#: command.c:221
+#, c-format
+msgid "invalid command \\%s"
+msgstr "无效的命令 \\%s"
+
+#: command.c:223
+#, c-format
+msgid "Try \\? for help."
+msgstr "使用\\?获取帮助."
+
+#: command.c:241
+#, c-format
+msgid "\\%s: extra argument \"%s\" ignored"
+msgstr "\\%s:忽略多余的参数 \"%s\""
+
+#: command.c:293
+#, c-format
+msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "忽略\\%s命令;使用\\endif或Ctrl-C退出当前\\if块"
+
+#: command.c:553
+#, c-format
+msgid "could not get home directory for user ID %ld: %s"
+msgstr "无法获取用户ID %ld: %s对应的home 目录"
+
+#: command.c:571
+#, c-format
+msgid "\\%s: could not change directory to \"%s\": %m"
+msgstr "\\%s: 无法切换目录至 \"%s\": %m"
+
+#: command.c:596
+#, c-format
+msgid "You are currently not connected to a database.\n"
+msgstr "你目前没有连接到数据库。\n"
+
+#: command.c:609
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "以用户 \"%2$s\" 的身份, 在地址\"%3$s\", 端口\"%4$s\"连接到数据库 \"%1$s\"\n"
+
+#: command.c:612
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "以用户 \"%2$s\" 的身份,通过套接字\"%3$s\"在端口\"%4$s\"连接到数据库 \"%1$s\"\n"
+
+#: command.c:618
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "以用户 \"%2$s\" 的身份, 在主机\"%3$s\" (地址 \"%4$s\"), 端口\"%5$s\"连接到数据库 \"%1$s\".\n"
+
+#: command.c:621
+#, c-format
+msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "以用户 \"%2$s\" 的身份, 在主机\"%3$s\", 端口\"%4$s\"连接到数据库 \"%1$s\"\n"
+
+#: command.c:930 command.c:1026 command.c:2411
+#, c-format
+msgid "no query buffer"
+msgstr "没有查询缓存区"
+
+#: command.c:963 command.c:4801
+#, c-format
+msgid "invalid line number: %s"
+msgstr "行号无效: %s"
+
+#: command.c:1017
+#, c-format
+msgid "The server (version %s) does not support editing function source."
+msgstr "服务器(版本%s)不支持编辑函数源码."
+
+#: command.c:1020
+#, c-format
+msgid "The server (version %s) does not support editing view definitions."
+msgstr "服务器(版本%s)不支持编辑视图定义."
+
+#: command.c:1102
+msgid "No changes"
+msgstr "没有发生更改"
+
+#: command.c:1179
+#, c-format
+msgid "%s: invalid encoding name or conversion procedure not found"
+msgstr "%s:无效的编码名称或找不到转换程序"
+
+#: command.c:1214 command.c:1853 command.c:3089 command.c:4903 common.c:175
+#: common.c:224 common.c:521 common.c:1362 common.c:1390 common.c:1498
+#: common.c:1601 common.c:1639 copy.c:490 copy.c:709 help.c:63 large_obj.c:157
+#: large_obj.c:192 large_obj.c:254
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: command.c:1221
+msgid "There is no previous error."
+msgstr "没有之前的错误。"
+
+#: command.c:1409 command.c:1714 command.c:1728 command.c:1745 command.c:1905
+#: command.c:2142 command.c:2378 command.c:2418
+#, c-format
+msgid "\\%s: missing required argument"
+msgstr "\\%s:缺少所需参数"
+
+#: command.c:1540
+#, c-format
+msgid "\\elif: cannot occur after \\else"
+msgstr "\\elif:不能出现在\\else之后"
+
+#: command.c:1545
+#, c-format
+msgid "\\elif: no matching \\if"
+msgstr "\\elif: 不匹配\\if"
+
+#: command.c:1609
+#, c-format
+msgid "\\else: cannot occur after \\else"
+msgstr "\\else: 不能出现在 \\else"
+
+#: command.c:1614
+#, c-format
+msgid "\\else: no matching \\if"
+msgstr "\\else: 不匹配\\if"
+
+#: command.c:1654
+#, c-format
+msgid "\\endif: no matching \\if"
+msgstr "\\endif:不匹配\\if"
+
+#: command.c:1809
+msgid "Query buffer is empty."
+msgstr "查询缓存区是空的."
+
+#: command.c:1831
+msgid "Enter new password: "
+msgstr "输入新的密码:"
+
+#: command.c:1832
+msgid "Enter it again: "
+msgstr "再次输入:"
+
+#: command.c:1836
+#, c-format
+msgid "Passwords didn't match."
+msgstr "两次密码不匹配."
+
+#: command.c:1935
+#, c-format
+msgid "\\%s: could not read value for variable"
+msgstr "\\%s:无法读取变量的值"
+
+#: command.c:2038
+msgid "Query buffer reset (cleared)."
+msgstr "查询缓存区重置(已清空)."
+
+#: command.c:2060
+#, c-format
+msgid "Wrote history to file \"%s\".\n"
+msgstr "写入历史记录到文件 \"%s\".\n"
+
+#: command.c:2147
+#, c-format
+msgid "\\%s: environment variable name must not contain \"=\""
+msgstr "\\%s: 环境变量不能包含 \"=\""
+
+#: command.c:2208
+#, c-format
+msgid "The server (version %s) does not support showing function source."
+msgstr "服务器(版本%s)不支持显示函数源码."
+
+#: command.c:2211
+#, c-format
+msgid "The server (version %s) does not support showing view definitions."
+msgstr "服务器(版本%s)不支持显示视图定义."
+
+#: command.c:2218
+#, c-format
+msgid "function name is required"
+msgstr "需要函数名"
+
+#: command.c:2220
+#, c-format
+msgid "view name is required"
+msgstr "需要视图名"
+
+#: command.c:2350
+msgid "Timing is on."
+msgstr "启用计时功能."
+
+#: command.c:2352
+msgid "Timing is off."
+msgstr "停止计时功能."
+
+#: command.c:2437 command.c:2465 command.c:3485 command.c:3488 command.c:3491
+#: command.c:3497 command.c:3499 command.c:3507 command.c:3517 command.c:3526
+#: command.c:3540 command.c:3557 command.c:3615 common.c:71 copy.c:333
+#: copy.c:405 psqlscanslash.l:784 psqlscanslash.l:795 psqlscanslash.l:805
+#, c-format
+msgid "%s: %m"
+msgstr "%s: %m"
+
+#: command.c:2849 startup.c:240 startup.c:291
+msgid "Password: "
+msgstr "口令:"
+
+#: command.c:2854 startup.c:288
+#, c-format
+msgid "Password for user %s: "
+msgstr "用户 %s 的口令:"
+
+#: command.c:2905
+#, c-format
+msgid "All connection parameters must be supplied because no database connection exists"
+msgstr "没有可用的数据库连接,所以必须提供所有的连接参数"
+
+#: command.c:3093
+#, c-format
+msgid "Previous connection kept"
+msgstr "保留上一次连接"
+
+#: command.c:3097
+#, c-format
+msgid "\\connect: %s"
+msgstr "\\连接:%s"
+
+#: command.c:3136
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n"
+msgstr "您现在已经连接到数据库 \"%s\", 用户 \"%s\",地址 \"%s\",端口号 \"%s\".\n"
+
+#: command.c:3139
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"
+msgstr "您现在已经连接到数据库 \"%s\", 用户名 \"%s\" , 套接字 \"%s\", 端口号 \"%s\".\n"
+
+#: command.c:3145
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n"
+msgstr "您现在已经连接到数据库 \"%s\", 用户 \"%s\",主机 \"%s\"(地址 \"%s\"),端口号 \"%s\".\n"
+
+#: command.c:3148
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"
+msgstr "您现在已经连接到数据库 \"%s\", 用户 \"%s\",主机 \"%s\",端口号 \"%s\".\n"
+
+#: command.c:3153
+#, c-format
+msgid "You are now connected to database \"%s\" as user \"%s\".\n"
+msgstr "您现在已经连接到数据库 \"%s\",用户 \"%s\".\n"
+
+#: command.c:3186
+#, c-format
+msgid "%s (%s, server %s)\n"
+msgstr "%s (%s, 服务器 %s)\n"
+
+#: command.c:3194
+#, c-format
+msgid ""
+"WARNING: %s major version %s, server major version %s.\n"
+" Some psql features might not work.\n"
+msgstr ""
+"警告:%s 主版本%s,服务器主版本为%s.\n"
+" 一些psql功能可能无法正常使用.\n"
+
+#: command.c:3232
+#, c-format
+msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n"
+msgstr "SSL 连接(协议:%s,密码:%s,密钥位:%s,压缩:%s)\n"
+
+#: command.c:3233 command.c:3234 command.c:3235
+msgid "unknown"
+msgstr "未知"
+
+#: command.c:3236 help.c:46
+msgid "off"
+msgstr "关闭"
+
+#: command.c:3236 help.c:46
+msgid "on"
+msgstr "开启"
+
+#: command.c:3250
+#, c-format
+msgid "GSSAPI Encrypted connection\n"
+msgstr "GSSAPI加密连接\n"
+
+#: command.c:3270
+#, c-format
+msgid ""
+"WARNING: Console code page (%u) differs from Windows code page (%u)\n"
+" 8-bit characters might not work correctly. See psql reference\n"
+" page \"Notes for Windows users\" for details.\n"
+msgstr ""
+"警告:来自 Windows 代码页 (%u) 的控制台代码页 (%u) 的差异\n"
+" 8-bit 字符可能无法正常工作。请查阅 psql 参考\n"
+" 页 \"Windows 用户注意事项\" 的详细说明.\n"
+
+#: command.c:3374
+#, c-format
+msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number"
+msgstr "必须设置环境变量 PSQL_EDITOR_LINENUMBER_ARG,用于指定行号"
+
+#: command.c:3403
+#, c-format
+msgid "could not start editor \"%s\""
+msgstr "无法启动编辑器 \"%s\""
+
+#: command.c:3405
+#, c-format
+msgid "could not start /bin/sh"
+msgstr "无法启动 /bin/sh"
+
+#: command.c:3443
+#, c-format
+msgid "could not locate temporary directory: %s"
+msgstr "找不到临时目录:%s"
+
+#: command.c:3470
+#, c-format
+msgid "could not open temporary file \"%s\": %m"
+msgstr "无法打开临时文件 \"%s\": %m"
+
+#: command.c:3763
+#, c-format
+msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\""
+msgstr "\\pset:模糊的缩写\"%s\"同时匹配\"%s\"和\"%s\""
+
+#: command.c:3783
+#, c-format
+msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+msgstr "\\pset: 允许的格式是 aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped"
+
+#: command.c:3802
+#, c-format
+msgid "\\pset: allowed line styles are ascii, old-ascii, unicode"
+msgstr "\\pset: 所允许使用的文本风格是ascii, old-ascii, unicode"
+
+#: command.c:3817
+#, c-format
+msgid "\\pset: allowed Unicode border line styles are single, double"
+msgstr "\\pset:允许的 Unicode 边界线型是 single 和 double"
+
+#: command.c:3832
+#, c-format
+msgid "\\pset: allowed Unicode column line styles are single, double"
+msgstr "\\pset:允许的 Unicode 列线型是 single 和 double"
+
+#: command.c:3847
+#, c-format
+msgid "\\pset: allowed Unicode header line styles are single, double"
+msgstr "\\pset:允许的 Unicode 页眉线型是 single 和 double"
+
+#: command.c:3890
+#, c-format
+msgid "\\pset: csv_fieldsep must be a single one-byte character"
+msgstr "\\pset: csv_fieldsep必须是单字节字符"
+
+#: command.c:3895
+#, c-format
+msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return"
+msgstr "\\pset: csv_fieldsep不能是双引号、换行符或回车符"
+
+#: command.c:4032 command.c:4218
+#, c-format
+msgid "\\pset: unknown option: %s"
+msgstr "\\pset: 不明选项: %s"
+
+#: command.c:4050
+#, c-format
+msgid "Border style is %d.\n"
+msgstr "边缘风格是 %d.\n"
+
+#: command.c:4056
+#, c-format
+msgid "Target width is unset.\n"
+msgstr "目标宽度未设置.\n"
+
+#: command.c:4058
+#, c-format
+msgid "Target width is %d.\n"
+msgstr "目标宽度为 %d.\n"
+
+#: command.c:4065
+#, c-format
+msgid "Expanded display is on.\n"
+msgstr "扩展显示已打开.\n"
+
+#: command.c:4067
+#, c-format
+msgid "Expanded display is used automatically.\n"
+msgstr "扩展显示已自动打开.\n"
+
+#: command.c:4069
+#, c-format
+msgid "Expanded display is off.\n"
+msgstr "扩展显示已关闭.\n"
+
+#: command.c:4075
+#, c-format
+msgid "Field separator for CSV is \"%s\".\n"
+msgstr "CSV的字段分隔符是\"%s\".\n"
+
+#: command.c:4083 command.c:4091
+#, c-format
+msgid "Field separator is zero byte.\n"
+msgstr "栏位分隔符号是0字节\n"
+
+#: command.c:4085
+#, c-format
+msgid "Field separator is \"%s\".\n"
+msgstr "栏位分隔符号是 \"%s\".\n"
+
+#: command.c:4098
+#, c-format
+msgid "Default footer is on.\n"
+msgstr "打开默认步进器.\n"
+
+#: command.c:4100
+#, c-format
+msgid "Default footer is off.\n"
+msgstr "关闭默认步进器.\n"
+
+#: command.c:4106
+#, c-format
+msgid "Output format is %s.\n"
+msgstr "输出格式是 %s.\n"
+
+#: command.c:4112
+#, c-format
+msgid "Line style is %s.\n"
+msgstr "文本的风格是%s. \n"
+
+#: command.c:4119
+#, c-format
+msgid "Null display is \"%s\".\n"
+msgstr " \"%s\" 是空值显示.\n"
+
+#: command.c:4127
+#, c-format
+msgid "Locale-adjusted numeric output is on.\n"
+msgstr "启动语言环境调整后的数值输出.\n"
+
+#: command.c:4129
+#, c-format
+msgid "Locale-adjusted numeric output is off.\n"
+msgstr "关闭语言环境调整后的数值输出.\n"
+
+#: command.c:4136
+#, c-format
+msgid "Pager is used for long output.\n"
+msgstr "显示大量数据时使用分页器.\n"
+
+#: command.c:4138
+#, c-format
+msgid "Pager is always used.\n"
+msgstr "总是使用分页器.\n"
+
+#: command.c:4140
+#, c-format
+msgid "Pager usage is off.\n"
+msgstr "不使用分页器.\n"
+
+#: command.c:4146
+#, c-format
+msgid "Pager won't be used for less than %d line.\n"
+msgid_plural "Pager won't be used for less than %d lines.\n"
+msgstr[0] "分页器不能被用于少于%d行.\n"
+
+#: command.c:4156 command.c:4166
+#, c-format
+msgid "Record separator is zero byte.\n"
+msgstr "记录分隔符号是 0字节.\n"
+
+#: command.c:4158
+#, c-format
+msgid "Record separator is <newline>.\n"
+msgstr "记录分隔符号是 <newline>.\n"
+
+#: command.c:4160
+#, c-format
+msgid "Record separator is \"%s\".\n"
+msgstr "记录分隔符号是 \"%s\".\n"
+
+#: command.c:4173
+#, c-format
+msgid "Table attributes are \"%s\".\n"
+msgstr "表属性是 \"%s\".\n"
+
+#: command.c:4176
+#, c-format
+msgid "Table attributes unset.\n"
+msgstr "未设置数据表属性.\n"
+
+#: command.c:4183
+#, c-format
+msgid "Title is \"%s\".\n"
+msgstr "标题是 \"%s\".\n"
+
+#: command.c:4185
+#, c-format
+msgid "Title is unset.\n"
+msgstr "无标题.\n"
+
+#: command.c:4192
+#, c-format
+msgid "Tuples only is on.\n"
+msgstr "开启只显示元组.\n"
+
+#: command.c:4194
+#, c-format
+msgid "Tuples only is off.\n"
+msgstr "关闭只显示元组.\n"
+
+#: command.c:4200
+#, c-format
+msgid "Unicode border line style is \"%s\".\n"
+msgstr "Unicode 边界线型是 \"%s\".\n"
+
+#: command.c:4206
+#, c-format
+msgid "Unicode column line style is \"%s\".\n"
+msgstr "Unicode 列线型是 \"%s\".\n"
+
+#: command.c:4212
+#, c-format
+msgid "Unicode header line style is \"%s\".\n"
+msgstr "Unicode 页眉线型是 \"%s\".\n"
+
+#: command.c:4374
+#, c-format
+msgid "\\!: failed"
+msgstr "\\!:失败"
+
+#: command.c:4399 common.c:781
+#, c-format
+msgid "\\watch cannot be used with an empty query"
+msgstr "\\watch命令不能用于空查询"
+
+#: command.c:4440
+#, c-format
+msgid "%s\t%s (every %gs)\n"
+msgstr "%s\t%s (每 %gs)\n"
+
+#: command.c:4443
+#, c-format
+msgid "%s (every %gs)\n"
+msgstr "%s (每 %gs)\n"
+
+#: command.c:4497 command.c:4504 common.c:681 common.c:688 common.c:1345
+#, c-format
+msgid ""
+"********* QUERY **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+msgstr ""
+"********* 查询 **********\n"
+"%s\n"
+"**************************\n"
+"\n"
+
+#: command.c:4696
+#, c-format
+msgid "\"%s.%s\" is not a view"
+msgstr "\"%s.%s\"不是一个视图"
+
+#: command.c:4712
+#, c-format
+msgid "could not parse reloptions array"
+msgstr "无法解析 reloptions 数组"
+
+#: common.c:160
+#, c-format
+msgid "cannot escape without active connection"
+msgstr "没有数据库连接时无法转义"
+
+#: common.c:201
+#, c-format
+msgid "shell command argument contains a newline or carriage return: \"%s\""
+msgstr "shell命令参数包含换行符或回车符: \"%s\""
+
+#: common.c:395
+#, c-format
+msgid "connection to server was lost"
+msgstr "与数据库的连接已经断开"
+
+#: common.c:399
+#, c-format
+msgid "The connection to the server was lost. Attempting reset: "
+msgstr "与服务器的连接已断开,正在试图重置: "
+
+#: common.c:404
+#, c-format
+msgid "Failed.\n"
+msgstr "失败。\n"
+
+#: common.c:411
+#, c-format
+msgid "Succeeded.\n"
+msgstr "完成。\n"
+
+#: common.c:511 common.c:1063 common.c:1280
+#, c-format
+msgid "unexpected PQresultStatus: %d"
+msgstr "意外的 PQresultStatus: %d"
+
+#: common.c:620
+#, c-format
+msgid "Time: %.3f ms\n"
+msgstr "时间:%.3f ms\n"
+
+#: common.c:635
+#, c-format
+msgid "Time: %.3f ms (%02d:%06.3f)\n"
+msgstr "时间:%.3f ms (%02d:%06.3f)\n"
+
+#: common.c:644
+#, c-format
+msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n"
+msgstr "时间: %.3f ms (%02d:%02d:%06.3f)\n"
+
+#: common.c:651
+#, c-format
+msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+msgstr "时间:%.3f ms (%.0f d %02d:%02d:%06.3f)\n"
+
+#: common.c:675 common.c:733 common.c:1316
+#, c-format
+msgid "You are currently not connected to a database."
+msgstr "你目前没有连接到数据库."
+
+#: common.c:788
+#, c-format
+msgid "\\watch cannot be used with COPY"
+msgstr "\\watch不能用于COPY命令中"
+
+#: common.c:793
+#, c-format
+msgid "unexpected result status for \\watch"
+msgstr "\\Watch出现意外的结果状态"
+
+#: common.c:823
+#, c-format
+msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n"
+msgstr "从PID为%3$d的服务器进程接收到带有字节流量\"%2$s\"的异步通知消息\"%1$s\".\n"
+
+#: common.c:826
+#, c-format
+msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n"
+msgstr "收到来自服务器 \"%s\" 进程 PID %d 非同步通知。\n"
+
+#: common.c:889
+#, c-format
+msgid "no rows returned for \\gset"
+msgstr "\\gset没有记录行返回"
+
+#: common.c:894
+#, c-format
+msgid "more than one row returned for \\gset"
+msgstr "\\gset返回超过1个记录行"
+
+#: common.c:1325
+#, c-format
+msgid ""
+"***(Single step mode: verify command)*******************************************\n"
+"%s\n"
+"***(press return to proceed or enter x and return to cancel)********************\n"
+msgstr ""
+"***(单步模式:验证命令)*******************************************\n"
+"%s\n"
+"***(按 Enter 键继续或键入 x 来取消)********************\n"
+
+#: common.c:1380
+#, c-format
+msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK."
+msgstr "服务器(版本 %s)不支持保存点(Savepoint)ON_ERROR_ROLLBACK."
+
+#: common.c:1443
+#, c-format
+msgid "STATEMENT: %s"
+msgstr "语句: %s"
+
+#: common.c:1486
+#, c-format
+msgid "unexpected transaction status (%d)"
+msgstr "意外的事务状态值 (%d)"
+
+#: common.c:1623 describe.c:2002
+msgid "Column"
+msgstr "栏位"
+
+#: common.c:1624 describe.c:179 describe.c:394 describe.c:412 describe.c:457
+#: describe.c:474 describe.c:963 describe.c:1127 describe.c:1712
+#: describe.c:1736 describe.c:2003 describe.c:3673 describe.c:3858
+#: describe.c:4091 describe.c:5297
+msgid "Type"
+msgstr "类型"
+
+#: common.c:1673
+#, c-format
+msgid "The command has no result, or the result has no columns.\n"
+msgstr "命令没有结果,或者结果没有列.\n"
+
+#: copy.c:100
+#, c-format
+msgid "\\copy: arguments required"
+msgstr "\\copy:需要参数"
+
+#: copy.c:255
+#, c-format
+msgid "\\copy: parse error at \"%s\""
+msgstr "\\copy:在 \"%s\" 发生解读错误"
+
+#: copy.c:257
+#, c-format
+msgid "\\copy: parse error at end of line"
+msgstr "\\copy:在行尾发生解读错误"
+
+#: copy.c:330
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "无法执行命令 \"%s\": %m"
+
+#: copy.c:346
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "无法取文件 \"%s\" 的状态: %m"
+
+#: copy.c:350
+#, c-format
+msgid "%s: cannot copy from/to a directory"
+msgstr "%s:无法从目录复制或复制到目录"
+
+#: copy.c:387
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "无法为外部命令: %m关闭管道"
+
+#: copy.c:392
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: copy.c:455 copy.c:465
+#, c-format
+msgid "could not write COPY data: %m"
+msgstr "无法写入 COPY 数据:%m"
+
+#: copy.c:471
+#, c-format
+msgid "COPY data transfer failed: %s"
+msgstr "COPY 数据转换失败:%s"
+
+#: copy.c:532
+msgid "canceled by user"
+msgstr "依用户取消"
+
+#: copy.c:543
+msgid ""
+"Enter data to be copied followed by a newline.\n"
+"End with a backslash and a period on a line by itself, or an EOF signal."
+msgstr ""
+"输入要复制的数据并且换行。\n"
+"在独立的一行上输入一个反斜线和一个句点结束,或者以一个EOF信号结束."
+
+#: copy.c:671
+msgid "aborted because of read failure"
+msgstr "因读取失败已被中止"
+
+#: copy.c:705
+msgid "trying to exit copy mode"
+msgstr "正在尝试退出"
+
+#: crosstabview.c:124
+#, c-format
+msgid "\\crosstabview: statement did not return a result set"
+msgstr "\\crosstabview:语句未返回结果集"
+
+#: crosstabview.c:130
+#, c-format
+msgid "\\crosstabview: query must return at least three columns"
+msgstr "\\crosstabview:查询必须返回至少三列"
+
+#: crosstabview.c:157
+#, c-format
+msgid "\\crosstabview: vertical and horizontal headers must be different columns"
+msgstr "\\crosstabview: 垂直和水平表头必须是不同的列"
+
+#: crosstabview.c:173
+#, c-format
+msgid "\\crosstabview: data column must be specified when query returns more than three columns"
+msgstr "\\crosstabview: 当查询返回三列以上时,必须指定数据列"
+
+#: crosstabview.c:229
+#, c-format
+msgid "\\crosstabview: maximum number of columns (%d) exceeded"
+msgstr "\\crosstabview: 超过最大列数(%d)"
+
+#: crosstabview.c:398
+#, c-format
+msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\""
+msgstr "\\crosstabview: 查询结果包含行\"%s\"、列\"%s\"的多个数据值"
+
+#: crosstabview.c:646
+#, c-format
+msgid "\\crosstabview: column number %d is out of range 1..%d"
+msgstr "\\crosstabview: 列号码 %d 超出了范围 1..%d"
+
+#: crosstabview.c:671
+#, c-format
+msgid "\\crosstabview: ambiguous column name: \"%s\""
+msgstr "\\crosstabview: 不明确的列名: \"%s\""
+
+#: crosstabview.c:679
+#, c-format
+msgid "\\crosstabview: column name not found: \"%s\""
+msgstr "\\crosstabview: 找不到列名: \"%s\""
+
+#: describe.c:77 describe.c:374 describe.c:679 describe.c:811 describe.c:955
+#: describe.c:1116 describe.c:1188 describe.c:3662 describe.c:3845
+#: describe.c:4089 describe.c:4180 describe.c:4447 describe.c:4607
+#: describe.c:4848 describe.c:4923 describe.c:4934 describe.c:4996
+#: describe.c:5421 describe.c:5504
+msgid "Schema"
+msgstr "架构模式"
+
+#: describe.c:78 describe.c:176 describe.c:244 describe.c:252 describe.c:375
+#: describe.c:680 describe.c:812 describe.c:873 describe.c:956 describe.c:1189
+#: describe.c:3663 describe.c:3846 describe.c:4012 describe.c:4090
+#: describe.c:4181 describe.c:4260 describe.c:4448 describe.c:4532
+#: describe.c:4608 describe.c:4849 describe.c:4924 describe.c:4935
+#: describe.c:4997 describe.c:5194 describe.c:5278 describe.c:5502
+#: describe.c:5674 describe.c:5899
+msgid "Name"
+msgstr "名称"
+
+#: describe.c:79 describe.c:387 describe.c:405 describe.c:451 describe.c:468
+msgid "Result data type"
+msgstr "结果数据类型"
+
+#: describe.c:87 describe.c:100 describe.c:104 describe.c:388 describe.c:406
+#: describe.c:452 describe.c:469
+msgid "Argument data types"
+msgstr "参数数据类型"
+
+#: describe.c:112 describe.c:119 describe.c:187 describe.c:275 describe.c:514
+#: describe.c:728 describe.c:827 describe.c:898 describe.c:1191
+#: describe.c:2021 describe.c:3451 describe.c:3698 describe.c:3892
+#: describe.c:4043 describe.c:4117 describe.c:4190 describe.c:4273
+#: describe.c:4356 describe.c:4475 describe.c:4541 describe.c:4609
+#: describe.c:4750 describe.c:4792 describe.c:4865 describe.c:4927
+#: describe.c:4936 describe.c:4998 describe.c:5220 describe.c:5300
+#: describe.c:5435 describe.c:5505 large_obj.c:290 large_obj.c:300
+msgid "Description"
+msgstr "描述"
+
+#: describe.c:137
+msgid "List of aggregate functions"
+msgstr "聚集函数列表"
+
+#: describe.c:162
+#, c-format
+msgid "The server (version %s) does not support access methods."
+msgstr "服务器(版本%s) 不支持访问方法."
+
+#: describe.c:177
+msgid "Index"
+msgstr "索引"
+
+#: describe.c:178 describe.c:3679 describe.c:3871 describe.c:5422
+msgid "Table"
+msgstr "数据表"
+
+#: describe.c:186 describe.c:5199
+msgid "Handler"
+msgstr "处理函数"
+
+#: describe.c:205
+msgid "List of access methods"
+msgstr "访问方法列表"
+
+#: describe.c:231
+#, c-format
+msgid "The server (version %s) does not support tablespaces."
+msgstr "服务器(版本%s) 不支持使用表空间."
+
+#: describe.c:245 describe.c:253 describe.c:502 describe.c:718 describe.c:874
+#: describe.c:1115 describe.c:3674 describe.c:3847 describe.c:4016
+#: describe.c:4262 describe.c:4533 describe.c:5195 describe.c:5279
+#: describe.c:5675 describe.c:5801 describe.c:5900 large_obj.c:289
+msgid "Owner"
+msgstr "拥有者"
+
+#: describe.c:246 describe.c:254
+msgid "Location"
+msgstr "所在地"
+
+#: describe.c:265 describe.c:3269
+msgid "Options"
+msgstr "选项"
+
+#: describe.c:270 describe.c:691 describe.c:890 describe.c:3690
+#: describe.c:3694
+msgid "Size"
+msgstr "大小"
+
+#: describe.c:292
+msgid "List of tablespaces"
+msgstr "表空间列表"
+
+#: describe.c:334
+#, c-format
+msgid "\\df only takes [anptwS+] as options"
+msgstr "\\df 只能将 [anptwS+]作为选项"
+
+#: describe.c:342 describe.c:353
+#, c-format
+msgid "\\df does not take a \"%c\" option with server version %s"
+msgstr "\\df 不能有带着服务器版本%2$s 的选项\"%1$c\""
+
+#. translator: "agg" is short for "aggregate"
+#: describe.c:390 describe.c:408 describe.c:454 describe.c:471
+msgid "agg"
+msgstr "agg"
+
+#: describe.c:391 describe.c:409
+msgid "window"
+msgstr "窗口"
+
+#: describe.c:392
+msgid "proc"
+msgstr "proc"
+
+#: describe.c:393 describe.c:411 describe.c:456 describe.c:473
+msgid "func"
+msgstr "函数"
+
+#: describe.c:410 describe.c:455 describe.c:472 describe.c:1325
+msgid "trigger"
+msgstr "触发器"
+
+#: describe.c:484
+msgid "immutable"
+msgstr "不可更改"
+
+#: describe.c:485
+msgid "stable"
+msgstr "稳定"
+
+#: describe.c:486
+msgid "volatile"
+msgstr "不稳定性"
+
+#: describe.c:487
+msgid "Volatility"
+msgstr "挥发性"
+
+#: describe.c:495
+msgid "restricted"
+msgstr "受限制的"
+
+#: describe.c:496
+msgid "safe"
+msgstr "安全的"
+
+#: describe.c:497
+msgid "unsafe"
+msgstr "不安全的"
+
+#: describe.c:498
+msgid "Parallel"
+msgstr "平行"
+
+#: describe.c:503
+msgid "definer"
+msgstr "定义者"
+
+#: describe.c:504
+msgid "invoker"
+msgstr "调用者"
+
+#: describe.c:505
+msgid "Security"
+msgstr "安全"
+
+#: describe.c:512
+msgid "Language"
+msgstr "程序语言"
+
+#: describe.c:513
+msgid "Source code"
+msgstr "原始程式"
+
+#: describe.c:642
+msgid "List of functions"
+msgstr "函数列表"
+
+#: describe.c:690
+msgid "Internal name"
+msgstr "内部名称"
+
+#: describe.c:712
+msgid "Elements"
+msgstr "成员"
+
+#: describe.c:769
+msgid "List of data types"
+msgstr "数据类型列表"
+
+#: describe.c:813
+msgid "Left arg type"
+msgstr "左参数类型"
+
+#: describe.c:814
+msgid "Right arg type"
+msgstr "右参数类型"
+
+#: describe.c:815
+msgid "Result type"
+msgstr "结果类型"
+
+#: describe.c:820 describe.c:4268 describe.c:4333 describe.c:4339
+#: describe.c:4749
+msgid "Function"
+msgstr "函数"
+
+#: describe.c:845
+msgid "List of operators"
+msgstr "运算子列表"
+
+#: describe.c:875
+msgid "Encoding"
+msgstr "字元编码"
+
+#: describe.c:880 describe.c:4449
+msgid "Collate"
+msgstr "校对规则"
+
+#: describe.c:881 describe.c:4450
+msgid "Ctype"
+msgstr "Ctype"
+
+#: describe.c:894
+msgid "Tablespace"
+msgstr "表空间"
+
+#: describe.c:916
+msgid "List of databases"
+msgstr "数据库列表"
+
+#: describe.c:957 describe.c:1118 describe.c:3664
+msgid "table"
+msgstr "数据表"
+
+#: describe.c:958 describe.c:3665
+msgid "view"
+msgstr "视图"
+
+#: describe.c:959 describe.c:3666
+msgid "materialized view"
+msgstr "物化视图"
+
+#: describe.c:960 describe.c:1120 describe.c:3668
+msgid "sequence"
+msgstr "序列数"
+
+#: describe.c:961 describe.c:3670
+msgid "foreign table"
+msgstr "所引用的外表"
+
+#: describe.c:962 describe.c:3671 describe.c:3856
+msgid "partitioned table"
+msgstr "分区表"
+
+#: describe.c:974
+msgid "Column privileges"
+msgstr "列特权"
+
+#: describe.c:1005 describe.c:1039
+msgid "Policies"
+msgstr "策略"
+
+#: describe.c:1071 describe.c:5956 describe.c:5960
+msgid "Access privileges"
+msgstr "存取权限"
+
+#: describe.c:1102
+#, c-format
+msgid "The server (version %s) does not support altering default privileges."
+msgstr "服务器(版本%s)不支持修改默认权限."
+
+#: describe.c:1122
+msgid "function"
+msgstr "函数"
+
+#: describe.c:1124
+msgid "type"
+msgstr "类型Ctype"
+
+#: describe.c:1126
+msgid "schema"
+msgstr "架构模式"
+
+#: describe.c:1150
+msgid "Default access privileges"
+msgstr "默认的访问权限"
+
+#: describe.c:1190
+msgid "Object"
+msgstr "对象"
+
+#: describe.c:1204
+msgid "table constraint"
+msgstr "表约束"
+
+#: describe.c:1226
+msgid "domain constraint"
+msgstr "域约束"
+
+#: describe.c:1254
+msgid "operator class"
+msgstr "操作符类"
+
+#: describe.c:1283
+msgid "operator family"
+msgstr "操作符家族"
+
+#: describe.c:1305
+msgid "rule"
+msgstr "规则"
+
+#: describe.c:1347
+msgid "Object descriptions"
+msgstr "对象描述"
+
+#: describe.c:1403 describe.c:3762
+#, c-format
+msgid "Did not find any relation named \"%s\"."
+msgstr "没有找到任何名称为 \"%s\" 的关联."
+
+#: describe.c:1406 describe.c:3765
+#, c-format
+msgid "Did not find any relations."
+msgstr "没有找到任何关系."
+
+#: describe.c:1661
+#, c-format
+msgid "Did not find any relation with OID %s."
+msgstr "没有找到任何OID为 %s 的关联."
+
+#: describe.c:1713 describe.c:1737
+msgid "Start"
+msgstr "起始值"
+
+#: describe.c:1714 describe.c:1738
+msgid "Minimum"
+msgstr "最小值"
+
+#: describe.c:1715 describe.c:1739
+msgid "Maximum"
+msgstr "最大值"
+
+#: describe.c:1716 describe.c:1740
+msgid "Increment"
+msgstr "增量"
+
+#: describe.c:1717 describe.c:1741 describe.c:1872 describe.c:4184
+#: describe.c:4350 describe.c:4464 describe.c:4469
+msgid "yes"
+msgstr "是"
+
+#: describe.c:1718 describe.c:1742 describe.c:1873 describe.c:4184
+#: describe.c:4347 describe.c:4464
+msgid "no"
+msgstr "否"
+
+#: describe.c:1719 describe.c:1743
+msgid "Cycles?"
+msgstr "循环?"
+
+#: describe.c:1720 describe.c:1744
+msgid "Cache"
+msgstr "缓存"
+
+#: describe.c:1787
+#, c-format
+msgid "Owned by: %s"
+msgstr "属于: %s"
+
+#: describe.c:1791
+#, c-format
+msgid "Sequence for identity column: %s"
+msgstr "标识列的序列: %s"
+
+#: describe.c:1798
+#, c-format
+msgid "Sequence \"%s.%s\""
+msgstr "序列数 \"%s.%s\""
+
+#: describe.c:1934
+#, c-format
+msgid "Unlogged table \"%s.%s\""
+msgstr "不记录日志的表 \"%s.%s\""
+
+#: describe.c:1937
+#, c-format
+msgid "Table \"%s.%s\""
+msgstr "数据表 \"%s.%s\""
+
+#: describe.c:1941
+#, c-format
+msgid "View \"%s.%s\""
+msgstr "视图 \"%s.%s\""
+
+#: describe.c:1946
+#, c-format
+msgid "Unlogged materialized view \"%s.%s\""
+msgstr "不记录日志的物化视图 \"%s.%s\""
+
+#: describe.c:1949
+#, c-format
+msgid "Materialized view \"%s.%s\""
+msgstr "物化视图 \"%s.%s\""
+
+#: describe.c:1954
+#, c-format
+msgid "Unlogged index \"%s.%s\""
+msgstr "不记录日志的索引 \"%s.%s\""
+
+#: describe.c:1957
+#, c-format
+msgid "Index \"%s.%s\""
+msgstr "索引 \"%s.%s\""
+
+#: describe.c:1962
+#, c-format
+msgid "Unlogged partitioned index \"%s.%s\""
+msgstr "不记录日志的分区索引 \"%s.%s\""
+
+#: describe.c:1965
+#, c-format
+msgid "Partitioned index \"%s.%s\""
+msgstr "分区索引 \"%s.%s\""
+
+#: describe.c:1970
+#, c-format
+msgid "Special relation \"%s.%s\""
+msgstr "特殊关联 \"%s.%s\""
+
+#: describe.c:1974
+#, c-format
+msgid "TOAST table \"%s.%s\""
+msgstr "TOAST 数据表 \"%s.%s\""
+
+#: describe.c:1978
+#, c-format
+msgid "Composite type \"%s.%s\""
+msgstr "合成类型 \"%s.%s\""
+
+#: describe.c:1982
+#, c-format
+msgid "Foreign table \"%s.%s\""
+msgstr "引用的外部表 \"%s.%s\""
+
+#: describe.c:1987
+#, c-format
+msgid "Unlogged partitioned table \"%s.%s\""
+msgstr "不记录日志的分区表 \"%s.%s\""
+
+#: describe.c:1990
+#, c-format
+msgid "Partitioned table \"%s.%s\""
+msgstr "分区表 \"%s.%s\""
+
+#: describe.c:2006 describe.c:4097
+msgid "Collation"
+msgstr "校对规则"
+
+#: describe.c:2007 describe.c:4104
+msgid "Nullable"
+msgstr "可空的"
+
+#: describe.c:2008 describe.c:4105
+msgid "Default"
+msgstr "预设"
+
+#: describe.c:2011
+msgid "Key?"
+msgstr "键值?"
+
+#: describe.c:2013
+msgid "Definition"
+msgstr "定义"
+
+#: describe.c:2015 describe.c:5215 describe.c:5299 describe.c:5370
+#: describe.c:5434
+msgid "FDW options"
+msgstr "FDW选项"
+
+#: describe.c:2017
+msgid "Storage"
+msgstr "存储"
+
+#: describe.c:2019
+msgid "Stats target"
+msgstr "统计目标"
+
+#: describe.c:2137
+#, c-format
+msgid "Partition of: %s %s"
+msgstr "分区: %s %s"
+
+#: describe.c:2145
+msgid "No partition constraint"
+msgstr "无分区约束"
+
+#: describe.c:2147
+#, c-format
+msgid "Partition constraint: %s"
+msgstr "分区约束: %s"
+
+#: describe.c:2170
+#, c-format
+msgid "Partition key: %s"
+msgstr "分区键值: %s"
+
+#: describe.c:2239
+msgid "primary key, "
+msgstr "主键(PK),"
+
+#: describe.c:2241
+msgid "unique, "
+msgstr "唯一的,"
+
+#: describe.c:2247
+#, c-format
+msgid "for table \"%s.%s\""
+msgstr "给数据表 \"%s.%s\""
+
+#: describe.c:2251
+#, c-format
+msgid ", predicate (%s)"
+msgstr ", 叙述 (%s)"
+
+#: describe.c:2254
+msgid ", clustered"
+msgstr ", 已丛集"
+
+#: describe.c:2257
+msgid ", invalid"
+msgstr ", 无效的"
+
+#: describe.c:2260
+msgid ", deferrable"
+msgstr ",可延迟"
+
+#: describe.c:2263
+msgid ", initially deferred"
+msgstr ",开始被延迟"
+
+#: describe.c:2266
+msgid ", replica identity"
+msgstr ",复制标识"
+
+#: describe.c:2325
+msgid "Indexes:"
+msgstr "索引:"
+
+#: describe.c:2409
+msgid "Check constraints:"
+msgstr "检查约束限制"
+
+#: describe.c:2477
+msgid "Foreign-key constraints:"
+msgstr "外部键(FK)限制:"
+
+#: describe.c:2540
+msgid "Referenced by:"
+msgstr "由引用:"
+
+#: describe.c:2590
+msgid "Policies:"
+msgstr "策略:"
+
+#: describe.c:2593
+msgid "Policies (forced row security enabled):"
+msgstr "策略(强制行安全性启用):"
+
+#: describe.c:2596
+msgid "Policies (row security enabled): (none)"
+msgstr "策略(行安全性启用):(无)"
+
+#: describe.c:2599
+msgid "Policies (forced row security enabled): (none)"
+msgstr "策略(强制行安全性启用):(无)"
+
+#: describe.c:2602
+msgid "Policies (row security disabled):"
+msgstr "策略(行安全性禁用):"
+
+#: describe.c:2665
+msgid "Statistics objects:"
+msgstr "统计信息对象:"
+
+#: describe.c:2774 describe.c:2878
+msgid "Rules:"
+msgstr "规则:"
+
+#: describe.c:2777
+msgid "Disabled rules:"
+msgstr "已停用规则:"
+
+#: describe.c:2780
+msgid "Rules firing always:"
+msgstr "永远触发规则"
+
+#: describe.c:2783
+msgid "Rules firing on replica only:"
+msgstr "只有在复制时触发规则:"
+
+#: describe.c:2823
+msgid "Publications:"
+msgstr "发布:"
+
+#: describe.c:2861
+msgid "View definition:"
+msgstr "视图定义:"
+
+#: describe.c:3000
+msgid "Triggers:"
+msgstr "触发器:"
+
+#: describe.c:3004
+msgid "Disabled user triggers:"
+msgstr "禁用用户触发器:"
+
+#: describe.c:3006
+msgid "Disabled triggers:"
+msgstr "停用触发器:"
+
+#: describe.c:3009
+msgid "Disabled internal triggers:"
+msgstr "禁用内部触发器:"
+
+#: describe.c:3012
+msgid "Triggers firing always:"
+msgstr "永远激活触发器"
+
+#: describe.c:3015
+msgid "Triggers firing on replica only:"
+msgstr "只有在复制时激活触发器"
+
+#: describe.c:3074
+#, c-format
+msgid "Server: %s"
+msgstr "服务器 %s"
+
+#: describe.c:3082
+#, c-format
+msgid "FDW options: (%s)"
+msgstr "FDW选项: (%s)"
+
+#: describe.c:3101
+msgid "Inherits"
+msgstr "继承"
+
+#: describe.c:3160
+#, c-format
+msgid "Number of partitions: %d"
+msgstr "分区数: %d"
+
+#: describe.c:3169
+#, c-format
+msgid "Number of child tables: %d (Use \\d+ to list them.)"
+msgstr "子表的数量:%d(可以使用 \\d+ 来列出它们)"
+
+#: describe.c:3171
+#, c-format
+msgid "Number of partitions: %d (Use \\d+ to list them.)"
+msgstr "分区的数量:%d(可以使用 \\d+ 来列出它们)"
+
+#: describe.c:3179
+msgid "Child tables"
+msgstr "子表"
+
+#: describe.c:3179
+msgid "Partitions"
+msgstr "分区"
+
+#: describe.c:3222
+#, c-format
+msgid "Typed table of type: %s"
+msgstr "类型的已确定类型表(typed table):%s"
+
+#: describe.c:3238
+msgid "Replica Identity"
+msgstr "复制标识"
+
+#: describe.c:3251
+msgid "Has OIDs: yes"
+msgstr "有 OIDs:yes"
+
+#: describe.c:3260
+#, c-format
+msgid "Access method: %s"
+msgstr "访问方法 %s"
+
+#: describe.c:3339
+#, c-format
+msgid "Tablespace: \"%s\""
+msgstr "表空间:\"%s\""
+
+#. translator: before this string there's an index description like
+#. '"foo_pkey" PRIMARY KEY, btree (a)'
+#: describe.c:3351
+#, c-format
+msgid ", tablespace \"%s\""
+msgstr ", 表空间 \"%s\""
+
+#: describe.c:3444
+msgid "List of roles"
+msgstr "角色列表"
+
+#: describe.c:3446
+msgid "Role name"
+msgstr "角色名称"
+
+#: describe.c:3447
+msgid "Attributes"
+msgstr "属性"
+
+#: describe.c:3448
+msgid "Member of"
+msgstr "成员属于"
+
+#: describe.c:3459
+msgid "Superuser"
+msgstr "超级用户"
+
+#: describe.c:3462
+msgid "No inheritance"
+msgstr "没有继承"
+
+#: describe.c:3465
+msgid "Create role"
+msgstr "建立角色"
+
+#: describe.c:3468
+msgid "Create DB"
+msgstr "建立 DB"
+
+#: describe.c:3471
+msgid "Cannot login"
+msgstr "无法登录"
+
+#: describe.c:3475
+msgid "Replication"
+msgstr "复制"
+
+#: describe.c:3479
+msgid "Bypass RLS"
+msgstr "绕过RLS"
+
+#: describe.c:3488
+msgid "No connections"
+msgstr "没有连接"
+
+#: describe.c:3490
+#, c-format
+msgid "%d connection"
+msgid_plural "%d connections"
+msgstr[0] "%d个连接"
+
+#: describe.c:3500
+msgid "Password valid until "
+msgstr "密码有效直至"
+
+#: describe.c:3550
+#, c-format
+msgid "The server (version %s) does not support per-database role settings."
+msgstr "服务器(版本%s) 每个数据库角色设置."
+
+#: describe.c:3563
+msgid "Role"
+msgstr "角色"
+
+#: describe.c:3564
+msgid "Database"
+msgstr "数据库"
+
+#: describe.c:3565
+msgid "Settings"
+msgstr "设置"
+
+#: describe.c:3586
+#, c-format
+msgid "Did not find any settings for role \"%s\" and database \"%s\"."
+msgstr "找不到角色\"%s\"和数据库\"%s\"的任何设置."
+
+#: describe.c:3589
+#, c-format
+msgid "Did not find any settings for role \"%s\"."
+msgstr "找不到角色\"%s\"的任何设置."
+
+#: describe.c:3592
+#, c-format
+msgid "Did not find any settings."
+msgstr "找不到任何设置."
+
+#: describe.c:3597
+msgid "List of settings"
+msgstr "设置的列表"
+
+#: describe.c:3667
+msgid "index"
+msgstr "索引"
+
+#: describe.c:3669
+msgid "special"
+msgstr "特殊"
+
+#: describe.c:3672 describe.c:3857
+msgid "partitioned index"
+msgstr "分区索引"
+
+#: describe.c:3770
+msgid "List of relations"
+msgstr "关联列表"
+
+#: describe.c:3818
+#, c-format
+msgid "The server (version %s) does not support declarative table partitioning."
+msgstr "服务器(版本%s)不支持声明性表分区."
+
+#: describe.c:3829
+msgid "List of partitioned indexes"
+msgstr "分区索引列表"
+
+#: describe.c:3831
+msgid "List of partitioned tables"
+msgstr "分区表列表"
+
+#: describe.c:3835
+msgid "List of partitioned relations"
+msgstr "分区关系列表"
+
+#: describe.c:3866
+msgid "Parent name"
+msgstr "父名"
+
+#: describe.c:3879
+msgid "Leaf partition size"
+msgstr "叶子分区大小"
+
+#: describe.c:3882 describe.c:3888
+msgid "Total size"
+msgstr "总大小"
+
+#: describe.c:4020
+msgid "Trusted"
+msgstr "信任"
+
+#: describe.c:4028
+msgid "Internal language"
+msgstr "内部语言"
+
+#: describe.c:4029
+msgid "Call handler"
+msgstr "调用函数"
+
+#: describe.c:4030 describe.c:5202
+msgid "Validator"
+msgstr "验证"
+
+#: describe.c:4033
+msgid "Inline handler"
+msgstr "内联函数"
+
+#: describe.c:4061
+msgid "List of languages"
+msgstr "语言列表"
+
+#: describe.c:4106
+msgid "Check"
+msgstr "检查"
+
+#: describe.c:4148
+msgid "List of domains"
+msgstr "共同值域列表"
+
+#: describe.c:4182
+msgid "Source"
+msgstr "来源"
+
+#: describe.c:4183
+msgid "Destination"
+msgstr "目的地"
+
+#: describe.c:4185
+msgid "Default?"
+msgstr "预设?"
+
+#: describe.c:4222
+msgid "List of conversions"
+msgstr "字元编码转换列表"
+
+#: describe.c:4261
+msgid "Event"
+msgstr "Event"
+
+#: describe.c:4263
+msgid "enabled"
+msgstr "启用"
+
+#: describe.c:4264
+msgid "replica"
+msgstr "replica"
+
+#: describe.c:4265
+msgid "always"
+msgstr "经常"
+
+#: describe.c:4266
+msgid "disabled"
+msgstr "禁用"
+
+#: describe.c:4267 describe.c:5901
+msgid "Enabled"
+msgstr "使能"
+
+#: describe.c:4269
+msgid "Tags"
+msgstr "标签"
+
+#: describe.c:4288
+msgid "List of event triggers"
+msgstr "事件触发器列表"
+
+#: describe.c:4317
+msgid "Source type"
+msgstr "来源类型"
+
+#: describe.c:4318
+msgid "Target type"
+msgstr "目标类型"
+
+#: describe.c:4349
+msgid "in assignment"
+msgstr "在指派中"
+
+#: describe.c:4351
+msgid "Implicit?"
+msgstr "隐含的?"
+
+#: describe.c:4406
+msgid "List of casts"
+msgstr "类型转换列表"
+
+#: describe.c:4434
+#, c-format
+msgid "The server (version %s) does not support collations."
+msgstr "服务器(版本%s)不支持排序校对."
+
+#: describe.c:4455 describe.c:4459
+msgid "Provider"
+msgstr "提供者"
+
+#: describe.c:4465 describe.c:4470
+msgid "Deterministic?"
+msgstr "确定性?"
+
+#: describe.c:4505
+msgid "List of collations"
+msgstr "校对列表"
+
+#: describe.c:4564
+msgid "List of schemas"
+msgstr "架构模式列表"
+
+#: describe.c:4589 describe.c:4836 describe.c:4907 describe.c:4978
+#, c-format
+msgid "The server (version %s) does not support full text search."
+msgstr "服务器(版本%s)不支持使用全文搜索."
+
+#: describe.c:4624
+msgid "List of text search parsers"
+msgstr "文本剖析器列表"
+
+#: describe.c:4669
+#, c-format
+msgid "Did not find any text search parser named \"%s\"."
+msgstr "没有找到任何命名为 \"%s\" 的文本剖析器."
+
+#: describe.c:4672
+#, c-format
+msgid "Did not find any text search parsers."
+msgstr "找不到任何文本搜索解析器."
+
+#: describe.c:4747
+msgid "Start parse"
+msgstr "开始剖析"
+
+#: describe.c:4748
+msgid "Method"
+msgstr "方法"
+
+#: describe.c:4752
+msgid "Get next token"
+msgstr "取得下一个标志符"
+
+#: describe.c:4754
+msgid "End parse"
+msgstr "结束剖析"
+
+#: describe.c:4756
+msgid "Get headline"
+msgstr "取得首行"
+
+#: describe.c:4758
+msgid "Get token types"
+msgstr "取得标志符类型"
+
+#: describe.c:4769
+#, c-format
+msgid "Text search parser \"%s.%s\""
+msgstr "文本搜索剖析器 \"%s.%s\""
+
+#: describe.c:4772
+#, c-format
+msgid "Text search parser \"%s\""
+msgstr "文本搜索剖析器 \"%s\""
+
+#: describe.c:4791
+msgid "Token name"
+msgstr "标志名称"
+
+#: describe.c:4802
+#, c-format
+msgid "Token types for parser \"%s.%s\""
+msgstr "标志符别型给剖析器 \"%s.%s\""
+
+#: describe.c:4805
+#, c-format
+msgid "Token types for parser \"%s\""
+msgstr "标志符类型给剖析器 \"%s\""
+
+#: describe.c:4859
+msgid "Template"
+msgstr "模版"
+
+#: describe.c:4860
+msgid "Init options"
+msgstr "初始选项"
+
+#: describe.c:4882
+msgid "List of text search dictionaries"
+msgstr "文本搜索字典列表"
+
+#: describe.c:4925
+msgid "Init"
+msgstr "初始化"
+
+#: describe.c:4926
+msgid "Lexize"
+msgstr "词汇"
+
+#: describe.c:4953
+msgid "List of text search templates"
+msgstr "文本搜索样式列表"
+
+#: describe.c:5013
+msgid "List of text search configurations"
+msgstr "文本搜索组态列表"
+
+#: describe.c:5059
+#, c-format
+msgid "Did not find any text search configuration named \"%s\"."
+msgstr "没有找到任何命名为 \"%s\" 的文本搜索组态."
+
+#: describe.c:5062
+#, c-format
+msgid "Did not find any text search configurations."
+msgstr "未找到任何文本搜索配置."
+
+#: describe.c:5128
+msgid "Token"
+msgstr "标志符"
+
+#: describe.c:5129
+msgid "Dictionaries"
+msgstr "字典"
+
+#: describe.c:5140
+#, c-format
+msgid "Text search configuration \"%s.%s\""
+msgstr "文本搜索组态 \"%s.%s\""
+
+#: describe.c:5143
+#, c-format
+msgid "Text search configuration \"%s\""
+msgstr "文本搜索组态 \"%s\""
+
+#: describe.c:5147
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s.%s\""
+msgstr ""
+"\n"
+"剖析器:\"%s.%s\""
+
+#: describe.c:5150
+#, c-format
+msgid ""
+"\n"
+"Parser: \"%s\""
+msgstr ""
+"\n"
+"剖析器:\"%s\""
+
+#: describe.c:5184
+#, c-format
+msgid "The server (version %s) does not support foreign-data wrappers."
+msgstr "服务器(版本%s)不支持使用外部数据封装器."
+
+#: describe.c:5242
+msgid "List of foreign-data wrappers"
+msgstr "外部数据封装器列表"
+
+#: describe.c:5267
+#, c-format
+msgid "The server (version %s) does not support foreign servers."
+msgstr "服务器(版本%s)不支持使用外部服务器."
+
+#: describe.c:5280
+msgid "Foreign-data wrapper"
+msgstr "外部数据封装器"
+
+#: describe.c:5298 describe.c:5503
+msgid "Version"
+msgstr "版本"
+
+#: describe.c:5324
+msgid "List of foreign servers"
+msgstr "外部服务器列表"
+
+#: describe.c:5349
+#, c-format
+msgid "The server (version %s) does not support user mappings."
+msgstr "服务器(版本%s)不支持使用用户映射."
+
+#: describe.c:5359 describe.c:5423
+msgid "Server"
+msgstr "服务器"
+
+#: describe.c:5360
+msgid "User name"
+msgstr "用户名: "
+
+#: describe.c:5385
+msgid "List of user mappings"
+msgstr "列出用户映射"
+
+#: describe.c:5410
+#, c-format
+msgid "The server (version %s) does not support foreign tables."
+msgstr "服务器(版本%s)不支持使用引用表."
+
+#: describe.c:5463
+msgid "List of foreign tables"
+msgstr "引用表列表"
+
+#: describe.c:5488 describe.c:5545
+#, c-format
+msgid "The server (version %s) does not support extensions."
+msgstr "服务器(版本%s) 不支持使用扩展."
+
+#: describe.c:5520
+msgid "List of installed extensions"
+msgstr "已安装扩展列表"
+
+#: describe.c:5573
+#, c-format
+msgid "Did not find any extension named \"%s\"."
+msgstr "没有找到任何名称为 \"%s\" 的扩展."
+
+#: describe.c:5576
+#, c-format
+msgid "Did not find any extensions."
+msgstr "没有找到任何扩展."
+
+#: describe.c:5620
+msgid "Object description"
+msgstr "对象描述"
+
+#: describe.c:5630
+#, c-format
+msgid "Objects in extension \"%s\""
+msgstr "对象用于扩展 \"%s\""
+
+#: describe.c:5659 describe.c:5730
+#, c-format
+msgid "The server (version %s) does not support publications."
+msgstr "服务器(版本%s)不支持发布."
+
+#: describe.c:5676 describe.c:5802
+msgid "All tables"
+msgstr "所有表"
+
+#: describe.c:5677 describe.c:5803
+msgid "Inserts"
+msgstr "插入"
+
+#: describe.c:5678 describe.c:5804
+msgid "Updates"
+msgstr "更新"
+
+#: describe.c:5679 describe.c:5805
+msgid "Deletes"
+msgstr "删除"
+
+#: describe.c:5683 describe.c:5807
+msgid "Truncates"
+msgstr "截断"
+
+#: describe.c:5700
+msgid "List of publications"
+msgstr "发布列表"
+
+#: describe.c:5768
+#, c-format
+msgid "Did not find any publication named \"%s\"."
+msgstr "没有找到任何名称为 \"%s\" 的发布."
+
+#: describe.c:5771
+#, c-format
+msgid "Did not find any publications."
+msgstr "没有找到任何发布."
+
+#: describe.c:5798
+#, c-format
+msgid "Publication %s"
+msgstr "发布 %s"
+
+#: describe.c:5842
+msgid "Tables:"
+msgstr "数据表"
+
+#: describe.c:5886
+#, c-format
+msgid "The server (version %s) does not support subscriptions."
+msgstr "服务器(版本%s)不支持订阅."
+
+#: describe.c:5902
+msgid "Publication"
+msgstr "发布"
+
+#: describe.c:5909
+msgid "Synchronous commit"
+msgstr "同步提交"
+
+#: describe.c:5910
+msgid "Conninfo"
+msgstr "连接信息"
+
+#: describe.c:5932
+msgid "List of subscriptions"
+msgstr "订阅列表"
+
+#: help.c:74
+#, c-format
+msgid ""
+"psql is the PostgreSQL interactive terminal.\n"
+"\n"
+msgstr "psql是PostgreSQL 的交互式客户端工具。\n"
+
+#: help.c:75 help.c:349 help.c:425 help.c:468
+#, c-format
+msgid "Usage:\n"
+msgstr "使用方法:\n"
+
+#: help.c:76
+#, c-format
+msgid ""
+" psql [OPTION]... [DBNAME [USERNAME]]\n"
+"\n"
+msgstr " psql [选项]... [数据库名称 [用户名称]]\n"
+
+#: help.c:78
+#, c-format
+msgid "General options:\n"
+msgstr "通用选项:\n"
+
+#: help.c:83
+#, c-format
+msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n"
+msgstr " -c, --command=命令 执行单一命令(SQL或内部指令)然后结束\n"
+
+#: help.c:84
+#, c-format
+msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"
+msgstr " -d, --dbname=DBNAME 指定要连接的数据库 (默认:\"%s\")\n"
+
+#: help.c:85
+#, c-format
+msgid " -f, --file=FILENAME execute commands from file, then exit\n"
+msgstr " -f, --file=文件名 从文件中执行命令然后退出\n"
+
+#: help.c:86
+#, c-format
+msgid " -l, --list list available databases, then exit\n"
+msgstr " -l, --list 列出所有可用的数据库,然后退出\n"
+
+#: help.c:87
+#, c-format
+msgid ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" set psql variable NAME to VALUE\n"
+" (e.g., -v ON_ERROR_STOP=1)\n"
+msgstr ""
+" -v, --set=, --variable=NAME=VALUE\n"
+" 设置psql变量NAME为VALUE\n"
+" (例如,-v ON_ERROR_STOP=1)\n"
+
+#: help.c:90
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version 输出版本信息, 然后退出\n"
+
+#: help.c:91
+#, c-format
+msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"
+msgstr " -X, --no-psqlrc 不读取启动文档(~/.psqlrc)\n"
+
+#: help.c:92
+#, c-format
+msgid ""
+" -1 (\"one\"), --single-transaction\n"
+" execute as a single transaction (if non-interactive)\n"
+msgstr ""
+" -1 (\"one\"), --single-transaction\n"
+" 作为一个单一事务来执行命令文件(如果是非交互型的)\n"
+
+#: help.c:94
+#, c-format
+msgid " -?, --help[=options] show this help, then exit\n"
+msgstr " -?, --help[=options] 显示此帮助,然后退出\n"
+
+#: help.c:95
+#, c-format
+msgid " --help=commands list backslash commands, then exit\n"
+msgstr " --help=commands 列出反斜线命令,然后退出\n"
+
+#: help.c:96
+#, c-format
+msgid " --help=variables list special variables, then exit\n"
+msgstr " --help=variables 列出特殊变量,然后退出\n"
+
+#: help.c:98
+#, c-format
+msgid ""
+"\n"
+"Input and output options:\n"
+msgstr ""
+"\n"
+"输入和输出选项:\n"
+
+#: help.c:99
+#, c-format
+msgid " -a, --echo-all echo all input from script\n"
+msgstr " -a, --echo-all 显示所有来自于脚本的输入\n"
+
+#: help.c:100
+#, c-format
+msgid " -b, --echo-errors echo failed commands\n"
+msgstr " -b, --echo-errors 回显失败的命令\n"
+
+#: help.c:101
+#, c-format
+msgid " -e, --echo-queries echo commands sent to server\n"
+msgstr " -e, --echo-queries 显示发送给服务器的命令\n"
+
+#: help.c:102
+#, c-format
+msgid " -E, --echo-hidden display queries that internal commands generate\n"
+msgstr " -E, --echo-hidden 显示内部命令产生的查询\n"
+
+#: help.c:103
+#, c-format
+msgid " -L, --log-file=FILENAME send session log to file\n"
+msgstr " -L, --log-file=文件名 将会话日志写入文件\n"
+
+#: help.c:104
+#, c-format
+msgid " -n, --no-readline disable enhanced command line editing (readline)\n"
+msgstr " -n, --no-readline 禁用增强命令行编辑功能(readline)\n"
+
+#: help.c:105
+#, c-format
+msgid " -o, --output=FILENAME send query results to file (or |pipe)\n"
+msgstr " -o, --output=FILENAME 将查询结果写入文件(或 |管道)\n"
+
+#: help.c:106
+#, c-format
+msgid " -q, --quiet run quietly (no messages, only query output)\n"
+msgstr " -q, --quiet 以沉默模式运行(不显示消息,只有查询结果)\n"
+
+#: help.c:107
+#, c-format
+msgid " -s, --single-step single-step mode (confirm each query)\n"
+msgstr " -s, --single-step 单步模式 (确认每个查询)\n"
+
+#: help.c:108
+#, c-format
+msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n"
+msgstr " -S, --single-line 单行模式 (一行就是一条 SQL 命令)\n"
+
+#: help.c:110
+#, c-format
+msgid ""
+"\n"
+"Output format options:\n"
+msgstr ""
+"\n"
+"输出格式选项 :\n"
+
+#: help.c:111
+#, c-format
+msgid " -A, --no-align unaligned table output mode\n"
+msgstr " -A, --no-align 使用非对齐表格输出模式\n"
+
+#: help.c:112
+#, c-format
+msgid " --csv CSV (Comma-Separated Values) table output mode\n"
+msgstr " --csv CSV(逗号分隔值)表输出模式\n"
+
+#: help.c:113
+#, c-format
+msgid ""
+" -F, --field-separator=STRING\n"
+" field separator for unaligned output (default: \"%s\")\n"
+msgstr ""
+" -F, --field-separator=STRING\n"
+" 为字段设置分隔符,用于不整齐的输出(默认:\"%s\")\n"
+
+#: help.c:116
+#, c-format
+msgid " -H, --html HTML table output mode\n"
+msgstr " -H, --html HTML 表格输出模式\n"
+
+#: help.c:117
+#, c-format
+msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"
+msgstr " -P, --pset=变量[=参数] 设置将变量打印到参数的选项(查阅 \\pset 命令)\n"
+
+#: help.c:118
+#, c-format
+msgid ""
+" -R, --record-separator=STRING\n"
+" record separator for unaligned output (default: newline)\n"
+msgstr ""
+" -R, --record-separator=STRING\n"
+" 为不整齐的输出设置字录的分隔符(默认:换行符号)\n"
+
+#: help.c:120
+#, c-format
+msgid " -t, --tuples-only print rows only\n"
+msgstr " -t, --tuples-only 只打印记录i\n"
+
+#: help.c:121
+#, c-format
+msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"
+msgstr " -T, --table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界)\n"
+
+#: help.c:122
+#, c-format
+msgid " -x, --expanded turn on expanded table output\n"
+msgstr " -x, --expanded 打开扩展表格输出\n"
+
+#: help.c:123
+#, c-format
+msgid ""
+" -z, --field-separator-zero\n"
+" set field separator for unaligned output to zero byte\n"
+msgstr ""
+" -z, --field-separator-zero\n"
+" 为不整齐的输出设置字段分隔符为字节0\n"
+
+#: help.c:125
+#, c-format
+msgid ""
+" -0, --record-separator-zero\n"
+" set record separator for unaligned output to zero byte\n"
+msgstr ""
+" -0, --record-separator-zero\n"
+" 为不整齐的输出设置记录分隔符为字节0\n"
+
+#: help.c:128
+#, c-format
+msgid ""
+"\n"
+"Connection options:\n"
+msgstr ""
+"\n"
+"联接选项:\n"
+
+#: help.c:131
+#, c-format
+msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"
+msgstr " -h, --host=主机名 数据库服务器主机或socket目录(默认:\"%s\")\n"
+
+#: help.c:132
+msgid "local socket"
+msgstr "本地接口"
+
+#: help.c:135
+#, c-format
+msgid " -p, --port=PORT database server port (default: \"%s\")\n"
+msgstr " -p, --port=端口 数据库服务器的端口(默认:\"%s\")\n"
+
+#: help.c:141
+#, c-format
+msgid " -U, --username=USERNAME database user name (default: \"%s\")\n"
+msgstr " -U, --username=用户名 指定数据库用户名(默认:\"%s\")\n"
+
+#: help.c:142
+#, c-format
+msgid " -w, --no-password never prompt for password\n"
+msgstr " -w, --no-password 永远不提示输入口令\n"
+
+#: help.c:143
+#, c-format
+msgid " -W, --password force password prompt (should happen automatically)\n"
+msgstr " -W, --password 强制口令提示 (自动)\n"
+
+#: help.c:145
+#, c-format
+msgid ""
+"\n"
+"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
+"commands) from within psql, or consult the psql section in the PostgreSQL\n"
+"documentation.\n"
+"\n"
+msgstr ""
+"\n"
+"更多信息,请在psql中输入\"\\?\"(用于内部指令)或者 \"\\help\"(用于SQL命令),\n"
+"或者参考PostgreSQL文档中的psql章节.\n"
+"\n"
+
+#: help.c:148
+#, c-format
+msgid "Report bugs to <pgsql-bugs@lists.postgresql.org>.\n"
+msgstr "报告错误至 <pgsql-bugs@lists.postgresql.org>.\n"
+
+#: help.c:174
+#, c-format
+msgid "General\n"
+msgstr "一般性\n"
+
+#: help.c:175
+#, c-format
+msgid " \\copyright show PostgreSQL usage and distribution terms\n"
+msgstr " \\copyright 显示PostgreSQL的使用和发行许可条款\n"
+
+#: help.c:176
+#, c-format
+msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n"
+msgstr " \\crosstabview [COLUMNS] 执行查询并且以交叉表显示结果\n"
+
+#: help.c:177
+#, c-format
+msgid " \\errverbose show most recent error message at maximum verbosity\n"
+msgstr " \\errverbose 以最冗长的形式显示最近的错误消息\n"
+
+#: help.c:178
+#, c-format
+msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n"
+msgstr " \\g [文件] or; 执行查询 (并把结果写入文件或 |管道)\n"
+
+#: help.c:179
+#, c-format
+msgid " \\gdesc describe result of query, without executing it\n"
+msgstr " \\gdesc 描述查询结果,而不执行它\n"
+
+#: help.c:180
+#, c-format
+msgid " \\gexec execute query, then execute each value in its result\n"
+msgstr " \\gexec 执行策略,然后执行其结果中的每个值\n"
+
+#: help.c:181
+#, c-format
+msgid " \\gset [PREFIX] execute query and store results in psql variables\n"
+msgstr " \\gset [PREFIX] 执行查询并把结果存到psql变量中\n"
+
+#: help.c:182
+#, c-format
+msgid " \\gx [FILE] as \\g, but forces expanded output mode\n"
+msgstr " \\gx [FILE] 就像\\g,但强制扩展输出模式\n"
+
+#: help.c:183
+#, c-format
+msgid " \\q quit psql\n"
+msgstr " \\q 退出 psql\n"
+
+#: help.c:184
+#, c-format
+msgid " \\watch [SEC] execute query every SEC seconds\n"
+msgstr " \\watch [SEC] 每隔SEC秒执行一次查询\n"
+
+#: help.c:187
+#, c-format
+msgid "Help\n"
+msgstr "帮助\n"
+
+#: help.c:189
+#, c-format
+msgid " \\? [commands] show help on backslash commands\n"
+msgstr " \\? [commands] 显示反斜线命令的帮助\n"
+
+#: help.c:190
+#, c-format
+msgid " \\? options show help on psql command-line options\n"
+msgstr " \\? options 显示 psql 命令行选项的帮助\n"
+
+#: help.c:191
+#, c-format
+msgid " \\? variables show help on special variables\n"
+msgstr " \\? variables 显示特殊变量的帮助\n"
+
+#: help.c:192
+#, c-format
+msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n"
+msgstr " \\h [NAME] SQL命令语法上的说明,用*显示全部命令的语法说明\n"
+
+#: help.c:195
+#, c-format
+msgid "Query Buffer\n"
+msgstr "查询缓存区\n"
+
+#: help.c:196
+#, c-format
+msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"
+msgstr " \\e [FILE] [LINE] 使用外部编辑器编辑查询缓存区(或文件)\n"
+
+#: help.c:197
+#, c-format
+msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"
+msgstr " \\ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义\n"
+
+#: help.c:198
+#, c-format
+msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"
+msgstr " \\ev [VIEWNAME [LINE]] 用外部编辑器编辑视图定义\n"
+
+#: help.c:199
+#, c-format
+msgid " \\p show the contents of the query buffer\n"
+msgstr " \\p 显示查询缓存区的内容\n"
+
+#: help.c:200
+#, c-format
+msgid " \\r reset (clear) the query buffer\n"
+msgstr " \\r 重置(清除)查询缓存区\n"
+
+#: help.c:202
+#, c-format
+msgid " \\s [FILE] display history or save it to file\n"
+msgstr " \\s [文件] 显示历史记录或将历史记录保存在文件中\n"
+
+#: help.c:204
+#, c-format
+msgid " \\w FILE write query buffer to file\n"
+msgstr " \\w 文件 将查询缓存区的内容写入文件\n"
+
+#: help.c:207
+#, c-format
+msgid "Input/Output\n"
+msgstr "输入/输出\n"
+
+#: help.c:208
+#, c-format
+msgid " \\copy ... perform SQL COPY with data stream to the client host\n"
+msgstr " \\copy ... 执行 SQL COPY,将数据流发送到客户端主机\n"
+
+#: help.c:209
+#, c-format
+msgid " \\echo [STRING] write string to standard output\n"
+msgstr " \\echo [字符串] 将字符串写到标准输出\n"
+
+#: help.c:210
+#, c-format
+msgid " \\i FILE execute commands from file\n"
+msgstr " \\i 文件 从文件中执行命令\n"
+
+#: help.c:211
+#, c-format
+msgid " \\ir FILE as \\i, but relative to location of current script\n"
+msgstr " \\ir FILE 与 \\i类似, 但是相对于当前脚本的位置\n"
+
+#: help.c:212
+#, c-format
+msgid " \\o [FILE] send all query results to file or |pipe\n"
+msgstr " \\o [文件] 将全部查询结果写入文件或 |管道\n"
+
+#: help.c:213
+#, c-format
+msgid " \\qecho [STRING] write string to query output stream (see \\o)\n"
+msgstr " \\qecho [字符串] 将字符串写到查询输出串流(参考 \\o)\n"
+
+#: help.c:216
+#, c-format
+msgid "Conditional\n"
+msgstr "条件\n"
+
+#: help.c:217
+#, c-format
+msgid " \\if EXPR begin conditional block\n"
+msgstr " \\if EXPR 开始条件块\n"
+
+#: help.c:218
+#, c-format
+msgid " \\elif EXPR alternative within current conditional block\n"
+msgstr " \\elif EXPR 当前条件块内的备选方案\n"
+
+#: help.c:219
+#, c-format
+msgid " \\else final alternative within current conditional block\n"
+msgstr " \\else 当前条件块内的最终备选方案\n"
+
+#: help.c:220
+#, c-format
+msgid " \\endif end conditional block\n"
+msgstr " \\endif 条件块的结尾\n"
+
+#: help.c:223
+#, c-format
+msgid "Informational\n"
+msgstr "资讯性\n"
+
+#: help.c:224
+#, c-format
+msgid " (options: S = show system objects, + = additional detail)\n"
+msgstr " (选项: S = 显示系统对象, + = 其余的详细信息)\n"
+
+#: help.c:225
+#, c-format
+msgid " \\d[S+] list tables, views, and sequences\n"
+msgstr " \\d[S+] 列出表,视图和序列\n"
+
+#: help.c:226
+#, c-format
+msgid " \\d[S+] NAME describe table, view, sequence, or index\n"
+msgstr " \\d[S+] 名称 描述表,视图,序列,或索引\n"
+
+#: help.c:227
+#, c-format
+msgid " \\da[S] [PATTERN] list aggregates\n"
+msgstr " \\da[S] [模式] 列出聚合函数\n"
+
+#: help.c:228
+#, c-format
+msgid " \\dA[+] [PATTERN] list access methods\n"
+msgstr " \\dA[+] [模式] 列出访问方法\n"
+
+#: help.c:229
+#, c-format
+msgid " \\db[+] [PATTERN] list tablespaces\n"
+msgstr " \\db[+] [模式] 列出表空间\n"
+
+#: help.c:230
+#, c-format
+msgid " \\dc[S+] [PATTERN] list conversions\n"
+msgstr " \\dc[S+] [模式] 列表转换\n"
+
+#: help.c:231
+#, c-format
+msgid " \\dC[+] [PATTERN] list casts\n"
+msgstr " \\dC[+] [模式] 列出类型强制转换\n"
+
+#: help.c:232
+#, c-format
+msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"
+msgstr " \\dd[S] [模式] 显示没有在别处显示的对象描述\n"
+
+#: help.c:233
+#, c-format
+msgid " \\dD[S+] [PATTERN] list domains\n"
+msgstr " \\dD[S+] [模式] 列出共同值域\n"
+
+#: help.c:234
+#, c-format
+msgid " \\ddp [PATTERN] list default privileges\n"
+msgstr " \\ddp [模式] 列出默认权限\n"
+
+#: help.c:235
+#, c-format
+msgid " \\dE[S+] [PATTERN] list foreign tables\n"
+msgstr " \\dE[S+] [模式] 列出引用表\n"
+
+#: help.c:236
+#, c-format
+msgid " \\det[+] [PATTERN] list foreign tables\n"
+msgstr " \\det[+] [模式] 列出引用表\n"
+
+#: help.c:237
+#, c-format
+msgid " \\des[+] [PATTERN] list foreign servers\n"
+msgstr " \\des[+] [模式] 列出外部服务器\n"
+
+#: help.c:238
+#, c-format
+msgid " \\deu[+] [PATTERN] list user mappings\n"
+msgstr " \\deu[+] [模式] 列出用户映射\n"
+
+#: help.c:239
+#, c-format
+msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n"
+msgstr " \\dew[+] [模式] 列出外部数据封装器\n"
+
+#: help.c:240
+#, c-format
+msgid " \\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions\n"
+msgstr " \\df[anptw][S+] [PATRN] 列出[只包括 聚合/常规/程序/触发器/窗口]函数 \n"
+
+#: help.c:241
+#, c-format
+msgid " \\dF[+] [PATTERN] list text search configurations\n"
+msgstr " \\dF[+] [模式] 列出文本搜索配置\n"
+
+#: help.c:242
+#, c-format
+msgid " \\dFd[+] [PATTERN] list text search dictionaries\n"
+msgstr " \\dFd[+] [模式] 列出文本搜索字典\n"
+
+#: help.c:243
+#, c-format
+msgid " \\dFp[+] [PATTERN] list text search parsers\n"
+msgstr " \\dFp[+] [模式] 列出文本搜索解析器\n"
+
+#: help.c:244
+#, c-format
+msgid " \\dFt[+] [PATTERN] list text search templates\n"
+msgstr " \\dFt[+] [模式] 列出文本搜索模版\n"
+
+#: help.c:245
+#, c-format
+msgid " \\dg[S+] [PATTERN] list roles\n"
+msgstr " \\dg[S+] [模式] 列出角色\n"
+
+#: help.c:246
+#, c-format
+msgid " \\di[S+] [PATTERN] list indexes\n"
+msgstr " \\di[S+] [模式] 列出索引\n"
+
+#: help.c:247
+#, c-format
+msgid " \\dl list large objects, same as \\lo_list\n"
+msgstr " \\dl 列出大对象, 功能与\\lo_list相同\n"
+
+#: help.c:248
+#, c-format
+msgid " \\dL[S+] [PATTERN] list procedural languages\n"
+msgstr " \\dL[S+] [模式] 列出所有过程语言\n"
+
+#: help.c:249
+#, c-format
+msgid " \\dm[S+] [PATTERN] list materialized views\n"
+msgstr " \\dm[S+] [模式] 列出所有物化视图\n"
+
+#: help.c:250
+#, c-format
+msgid " \\dn[S+] [PATTERN] list schemas\n"
+msgstr " \\dn[S+] [模式] 列出所有模式\n"
+
+#: help.c:251
+#, c-format
+msgid " \\do[S] [PATTERN] list operators\n"
+msgstr " \\do[S] [模式] 列出运算符\n"
+
+#: help.c:252
+#, c-format
+msgid " \\dO[S+] [PATTERN] list collations\n"
+msgstr " \\dO[S+] [模式] 列出所有校对规则\n"
+
+#: help.c:253
+#, c-format
+msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n"
+msgstr " \\dp [模式] 列出表,视图和序列的访问权限\n"
+
+#: help.c:254
+#, c-format
+msgid " \\dP[tin+] [PATTERN] list [only table/index] partitioned relations\n"
+msgstr " \\dP[tin+] [模式] 列出[仅 表/索引]分区关系\n"
+
+#: help.c:255
+#, c-format
+msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n"
+msgstr " \\drds [模式1 [模式2]] 列出每个数据库的角色设置\n"
+
+#: help.c:256
+#, c-format
+msgid " \\dRp[+] [PATTERN] list replication publications\n"
+msgstr " \\dRp[+] [模式] 列出复制发布\n"
+
+#: help.c:257
+#, c-format
+msgid " \\dRs[+] [PATTERN] list replication subscriptions\n"
+msgstr " \\dRs[+] [模式] 列出复制订阅\n"
+
+#: help.c:258
+#, c-format
+msgid " \\ds[S+] [PATTERN] list sequences\n"
+msgstr " \\ds[S+] [模式] 列出序列\n"
+
+#: help.c:259
+#, c-format
+msgid " \\dt[S+] [PATTERN] list tables\n"
+msgstr " \\dt[S+] [模式] 列出表\n"
+
+#: help.c:260
+#, c-format
+msgid " \\dT[S+] [PATTERN] list data types\n"
+msgstr " \\dT[S+] [模式] 列出数据类型\n"
+
+#: help.c:261
+#, c-format
+msgid " \\du[S+] [PATTERN] list roles\n"
+msgstr " \\du[S+] [模式] 列出角色\n"
+
+#: help.c:262
+#, c-format
+msgid " \\dv[S+] [PATTERN] list views\n"
+msgstr " \\dv[S+] [模式] 列出视图\n"
+
+#: help.c:263
+#, c-format
+msgid " \\dx[+] [PATTERN] list extensions\n"
+msgstr " \\dx[+] [模式] 列出扩展\n"
+
+#: help.c:264
+#, c-format
+msgid " \\dy [PATTERN] list event triggers\n"
+msgstr " \\dy [模式] 列出所有事件触发器\n"
+
+#: help.c:265
+#, c-format
+msgid " \\l[+] [PATTERN] list databases\n"
+msgstr " \\l[+] [模式] 列出所有数据库\n"
+
+#: help.c:266
+#, c-format
+msgid " \\sf[+] FUNCNAME show a function's definition\n"
+msgstr " \\sf[+] FUNCNAME 显示一个函数的定义\n"
+
+#: help.c:267
+#, c-format
+msgid " \\sv[+] VIEWNAME show a view's definition\n"
+msgstr " \\sv[+] VIEWNAME 显示一个视图的定义\n"
+
+#: help.c:268
+#, c-format
+msgid " \\z [PATTERN] same as \\dp\n"
+msgstr " \\z [模式] 和\\dp的功能相同\n"
+
+#: help.c:271
+#, c-format
+msgid "Formatting\n"
+msgstr "格式化\n"
+
+#: help.c:272
+#, c-format
+msgid " \\a toggle between unaligned and aligned output mode\n"
+msgstr " \\a 在非对齐模式和对齐模式之间切换\n"
+
+#: help.c:273
+#, c-format
+msgid " \\C [STRING] set table title, or unset if none\n"
+msgstr " \\C [字符串] 设置表的标题,或如果没有的标题就取消\n"
+
+#: help.c:274
+#, c-format
+msgid " \\f [STRING] show or set field separator for unaligned query output\n"
+msgstr " \\f [字符串] 显示或设定非对齐模式查询输出的字段分隔符\n"
+
+#: help.c:275
+#, c-format
+msgid " \\H toggle HTML output mode (currently %s)\n"
+msgstr " \\H 切换HTML输出模式 (目前是 %s)\n"
+
+#: help.c:277
+#, c-format
+msgid ""
+" \\pset [NAME [VALUE]] set table output option\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle)\n"
+msgstr ""
+" \\pset [NAME [VALUE]] 设置表输出选项\n"
+" (border|columns|csv_fieldsep|expanded|fieldsep|\n"
+" fieldsep_zero|footer|format|linestyle|null|\n"
+" numericlocale|pager|pager_min_lines|recordsep|\n"
+" recordsep_zero|tableattr|title|tuples_only|\n"
+" unicode_border_linestyle|unicode_column_linestyle|\n"
+" unicode_header_linestyle\n"
+
+#: help.c:284
+#, c-format
+msgid " \\t [on|off] show only rows (currently %s)\n"
+msgstr " \\t [开|关] 只显示记录 (目前是%s)\n"
+
+#: help.c:286
+#, c-format
+msgid " \\T [STRING] set HTML <table> tag attributes, or unset if none\n"
+msgstr " \\T [字符串] 设置HTML <表格>标签属性, 或者如果没有的话取消设置\n"
+
+#: help.c:287
+#, c-format
+msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n"
+msgstr " \\x [on|off|auto] 切换扩展输出模式(目前是 %s)\n"
+
+#: help.c:291
+#, c-format
+msgid "Connection\n"
+msgstr "连接\n"
+
+#: help.c:293
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently \"%s\")\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" 连接到新数据库(当前是\"%s\")\n"
+
+#: help.c:297
+#, c-format
+msgid ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" connect to new database (currently no connection)\n"
+msgstr ""
+" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
+" 连接到新数据库(当前无连接)\n"
+
+#: help.c:299
+#, c-format
+msgid " \\conninfo display information about current connection\n"
+msgstr " \\conninfo 显示当前连接的相关信息\n"
+
+#: help.c:300
+#, c-format
+msgid " \\encoding [ENCODING] show or set client encoding\n"
+msgstr " \\encoding [编码名称] 显示或设定客户端编码\n"
+
+#: help.c:301
+#, c-format
+msgid " \\password [USERNAME] securely change the password for a user\n"
+msgstr " \\password [USERNAME] 安全地为用户更改口令\n"
+
+#: help.c:304
+#, c-format
+msgid "Operating System\n"
+msgstr "操作系统\n"
+
+#: help.c:305
+#, c-format
+msgid " \\cd [DIR] change the current working directory\n"
+msgstr " \\cd [目录] 更改目前的工作目录\n"
+
+#: help.c:306
+#, c-format
+msgid " \\setenv NAME [VALUE] set or unset environment variable\n"
+msgstr " \\setenv NAME [VALUE] 设置或清空环境变量\n"
+
+#: help.c:307
+#, c-format
+msgid " \\timing [on|off] toggle timing of commands (currently %s)\n"
+msgstr " \\timing [开|关] 切换命令计时开关 (目前是%s)\n"
+
+#: help.c:309
+#, c-format
+msgid " \\! [COMMAND] execute command in shell or start interactive shell\n"
+msgstr " \\! [命令] 在 shell中执行命令或启动一个交互式shell\n"
+
+#: help.c:312
+#, c-format
+msgid "Variables\n"
+msgstr "变量\n"
+
+#: help.c:313
+#, c-format
+msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n"
+msgstr " \\prompt [文本] 名称 提示用户设定内部变量\n"
+
+#: help.c:314
+#, c-format
+msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"
+msgstr " \\set [名称 [值数]] 设定内部变量,若无参数则列出全部变量\n"
+
+#: help.c:315
+#, c-format
+msgid " \\unset NAME unset (delete) internal variable\n"
+msgstr " \\unset 名称 清空(删除)内部变量\n"
+
+#: help.c:318
+#, c-format
+msgid "Large Objects\n"
+msgstr "大对象\n"
+
+#: help.c:319
+#, c-format
+msgid ""
+" \\lo_export LOBOID FILE\n"
+" \\lo_import FILE [COMMENT]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID large object operations\n"
+msgstr ""
+" \\lo_export LOBOID 文件\n"
+" \\lo_import 文件 [注释]\n"
+" \\lo_list\n"
+" \\lo_unlink LOBOID 大对象运算\n"
+
+#: help.c:346
+#, c-format
+msgid ""
+"List of specially treated variables\n"
+"\n"
+msgstr ""
+"特殊对待的变量的列表\n"
+"\n"
+
+#: help.c:348
+#, c-format
+msgid "psql variables:\n"
+msgstr "psql变量:\n"
+
+#: help.c:350
+#, c-format
+msgid ""
+" psql --set=NAME=VALUE\n"
+" or \\set NAME VALUE inside psql\n"
+"\n"
+msgstr ""
+" psql --set=NAME=VALUE\n"
+" 或者在 psql 中的 \\set NAME VALUE\n"
+"\n"
+
+#: help.c:352
+#, c-format
+msgid ""
+" AUTOCOMMIT\n"
+" if set, successful SQL commands are automatically committed\n"
+msgstr ""
+" AUTOCOMMIT\n"
+" 如果被设置,成功的SQL命令将会被自动提交\n"
+
+#: help.c:354
+#, c-format
+msgid ""
+" COMP_KEYWORD_CASE\n"
+" determines the case used to complete SQL key words\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+msgstr ""
+" COMP_KEYWORD_CASE\n"
+" 决定用于完成 SQL 关键词的大小写\n"
+" [lower, upper, preserve-lower, preserve-upper]\n"
+
+#: help.c:357
+#, c-format
+msgid ""
+" DBNAME\n"
+" the currently connected database name\n"
+msgstr ""
+" DBNAME\n"
+" 当前已连接的数据库名\n"
+
+#: help.c:359
+#, c-format
+msgid ""
+" ECHO\n"
+" controls what input is written to standard output\n"
+" [all, errors, none, queries]\n"
+msgstr ""
+" ECHO\n"
+" 控制哪些输入被写入到标准输出\n"
+" [all, errors, none, queries]\n"
+
+#: help.c:362
+#, c-format
+msgid ""
+" ECHO_HIDDEN\n"
+" if set, display internal queries executed by backslash commands;\n"
+" if set to \"noexec\", just show them without execution\n"
+msgstr ""
+" ECHO_HIDDEN\n"
+" 如果被设置,显示反斜线命令执行的内部命令;\n"
+" 如果被设置为 \"noexec\",只显示但不执行\n"
+
+#: help.c:365
+#, c-format
+msgid ""
+" ENCODING\n"
+" current client character set encoding\n"
+msgstr ""
+" ENCODING\n"
+" 当前的客户端字符集编码\n"
+
+#: help.c:367
+#, c-format
+msgid ""
+" ERROR\n"
+" true if last query failed, else false\n"
+msgstr ""
+" 错误\n"
+" 如果上次查询失败,则为true,否则为false\n"
+
+#: help.c:369
+#, c-format
+msgid ""
+" FETCH_COUNT\n"
+" the number of result rows to fetch and display at a time (0 = unlimited)\n"
+msgstr ""
+" FETCH_COUNT\n"
+" 一次取得并显示的结果行的数量 (0=无限)\n"
+
+#: help.c:371
+#, c-format
+msgid ""
+" HIDE_TABLEAM\n"
+" if set, table access methods are not displayed\n"
+msgstr ""
+" HIDE_TABLEAM\n"
+" 如果设置,则不显示表访问方法\n"
+
+#: help.c:373
+#, c-format
+msgid ""
+" HISTCONTROL\n"
+" controls command history [ignorespace, ignoredups, ignoreboth]\n"
+msgstr ""
+" HISTCONTROL\n"
+" 控制命令历史 [ignorespace, ignoredups, ignoreboth]\n"
+
+#: help.c:375
+#, c-format
+msgid ""
+" HISTFILE\n"
+" file name used to store the command history\n"
+msgstr ""
+" HISTFILE\n"
+" 用来存储命令历史的文件名\n"
+
+#: help.c:377
+#, c-format
+msgid ""
+" HISTSIZE\n"
+" maximum number of commands to store in the command history\n"
+msgstr ""
+" HISTSIZE\n"
+" 保存在命令历史中的最大命令数\n"
+
+#: help.c:379
+#, c-format
+msgid ""
+" HOST\n"
+" the currently connected database server host\n"
+msgstr ""
+" HOST\n"
+" 当前连接的数据库服务器主机\n"
+
+#: help.c:381
+#, c-format
+msgid ""
+" IGNOREEOF\n"
+" number of EOFs needed to terminate an interactive session\n"
+msgstr ""
+" IGNOREEOF\n"
+" 终止交互式会话所需的EOF数\n"
+
+#: help.c:383
+#, c-format
+msgid ""
+" LASTOID\n"
+" value of the last affected OID\n"
+msgstr ""
+" LASTOID\n"
+" 最后一个受影响的 OID 的值\n"
+
+#: help.c:385
+#, c-format
+msgid ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" message and SQLSTATE of last error, or empty string and \"00000\" if none\n"
+msgstr ""
+" LAST_ERROR_MESSAGE\n"
+" LAST_ERROR_SQLSTATE\n"
+" 最后一个错误的消息和SQL状态,如果没有,则为空字符串和\"00000\"\n"
+
+#: help.c:388
+#, c-format
+msgid ""
+" ON_ERROR_ROLLBACK\n"
+" if set, an error doesn't stop a transaction (uses implicit savepoints)\n"
+msgstr ""
+" ON_ERROR_ROLLBACK\n"
+" 如果被设置,则错误不会停止一个事务(使用隐式保存点)\n"
+
+#: help.c:390
+#, c-format
+msgid ""
+" ON_ERROR_STOP\n"
+" stop batch execution after error\n"
+msgstr ""
+" ON_ERROR_STOP\n"
+" 发生错误后停止批量执行\n"
+
+#: help.c:392
+#, c-format
+msgid ""
+" PORT\n"
+" server port of the current connection\n"
+msgstr ""
+" PORT\n"
+" 当前连接的服务器端口\n"
+
+#: help.c:394
+#, c-format
+msgid ""
+" PROMPT1\n"
+" specifies the standard psql prompt\n"
+msgstr ""
+" PROMPT1\n"
+" 指定标准的 psql 提示符\n"
+
+#: help.c:396
+#, c-format
+msgid ""
+" PROMPT2\n"
+" specifies the prompt used when a statement continues from a previous line\n"
+msgstr ""
+" PROMPT2\n"
+" 指定在语句跨行时使用的提示符\n"
+
+#: help.c:398
+#, c-format
+msgid ""
+" PROMPT3\n"
+" specifies the prompt used during COPY ... FROM STDIN\n"
+msgstr ""
+" PROMPT3\n"
+" 指定 COPY ... FROM STDIN 期间使用的提示符\n"
+
+#: help.c:400
+#, c-format
+msgid ""
+" QUIET\n"
+" run quietly (same as -q option)\n"
+msgstr ""
+" QUIET\n"
+" 静默地运行(和-q选项相同)\n"
+
+#: help.c:402
+#, c-format
+msgid ""
+" ROW_COUNT\n"
+" number of rows returned or affected by last query, or 0\n"
+msgstr ""
+" ROW_COUNT\n"
+" 上一个查询返回或影响的行数,或0\n"
+
+#: help.c:404
+#, c-format
+msgid ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" server's version (in short string or numeric format)\n"
+msgstr ""
+" SERVER_VERSION_NAME\n"
+" SERVER_VERSION_NUM\n"
+" 服务器版本(短字符串或数字格式)\n"
+
+#: help.c:407
+#, c-format
+msgid ""
+" SHOW_CONTEXT\n"
+" controls display of message context fields [never, errors, always]\n"
+msgstr ""
+" SHOW_CONTEXT\n"
+" 控制消息上下文域的显示 [never, errors, always]\n"
+
+#: help.c:409
+#, c-format
+msgid ""
+" SINGLELINE\n"
+" if set, end of line terminates SQL commands (same as -S option)\n"
+msgstr ""
+" SINGLELINE\n"
+" 设置的话,行尾会终止SQL命令模式(与-S选项相同)\n"
+
+#: help.c:411
+#, c-format
+msgid ""
+" SINGLESTEP\n"
+" single-step mode (same as -s option)\n"
+msgstr ""
+" SINGLESTEP\n"
+" 单步模式(与-s选项相同)\n"
+
+#: help.c:413
+#, c-format
+msgid ""
+" SQLSTATE\n"
+" SQLSTATE of last query, or \"00000\" if no error\n"
+msgstr ""
+" SQLSTATE\n"
+" 上次查询的SQL状态,如果没有错误,则为\"00000\"\n"
+
+#: help.c:415
+#, c-format
+msgid ""
+" USER\n"
+" the currently connected database user\n"
+msgstr ""
+" USER\n"
+" 当前连接上的数据库用户\n"
+
+#: help.c:417
+#, c-format
+msgid ""
+" VERBOSITY\n"
+" controls verbosity of error reports [default, verbose, terse, sqlstate]\n"
+msgstr ""
+" VERBOSITY\n"
+" 控制错误报告的冗长程度 [default, verbose, terse, sqlstate]\n"
+
+#: help.c:419
+#, c-format
+msgid ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql's version (in verbose string, short string, or numeric format)\n"
+msgstr ""
+" VERSION\n"
+" VERSION_NAME\n"
+" VERSION_NUM\n"
+" psql版本(详细字符串、短字符串或数字格式)\n"
+
+#: help.c:424
+#, c-format
+msgid ""
+"\n"
+"Display settings:\n"
+msgstr ""
+"\n"
+"显示设置:\n"
+
+#: help.c:426
+#, c-format
+msgid ""
+" psql --pset=NAME[=VALUE]\n"
+" or \\pset NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" psql --pset=NAME[=VALUE]\n"
+" 或者 psql 中的 \\pset NAME [VALUE]\n"
+"\n"
+
+#: help.c:428
+#, c-format
+msgid ""
+" border\n"
+" border style (number)\n"
+msgstr ""
+" border\n"
+" 边界样式(数字)\n"
+
+#: help.c:430
+#, c-format
+msgid ""
+" columns\n"
+" target width for the wrapped format\n"
+msgstr ""
+" columns\n"
+" 用于回卷格式的目标宽度\n"
+
+#: help.c:432
+#, c-format
+msgid ""
+" expanded (or x)\n"
+" expanded output [on, off, auto]\n"
+msgstr ""
+" expanded (or x)\n"
+" 扩展输出 [on, off, auto]\n"
+
+#: help.c:434
+#, c-format
+msgid ""
+" fieldsep\n"
+" field separator for unaligned output (default \"%s\")\n"
+msgstr ""
+" fieldsep\n"
+" 用于非对齐输出的域分隔符(默认是 \"%s\")\n"
+
+#: help.c:437
+#, c-format
+msgid ""
+" fieldsep_zero\n"
+" set field separator for unaligned output to a zero byte\n"
+msgstr ""
+" fieldsep_zero\n"
+" 将用于非对齐模式中的域分隔符设置为零字节\n"
+
+#: help.c:439
+#, c-format
+msgid ""
+" footer\n"
+" enable or disable display of the table footer [on, off]\n"
+msgstr ""
+" footer\n"
+" 启用或禁用表格页脚的显示 [on, off]\n"
+
+#: help.c:441
+#, c-format
+msgid ""
+" format\n"
+" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+msgstr ""
+" format\n"
+" 设置输出格式 [unaligned, aligned, wrapped, html, asciidoc, ...]\n"
+
+#: help.c:443
+#, c-format
+msgid ""
+" linestyle\n"
+" set the border line drawing style [ascii, old-ascii, unicode]\n"
+msgstr ""
+" linestyle\n"
+" 设置边界线绘制风格 [ascii, old-ascii, unicode]\n"
+
+#: help.c:445
+#, c-format
+msgid ""
+" null\n"
+" set the string to be printed in place of a null value\n"
+msgstr ""
+" null\n"
+" 设置代替空值被打印的字符串\n"
+
+#: help.c:447
+#, c-format
+msgid ""
+" numericlocale\n"
+" enable display of a locale-specific character to separate groups of digits\n"
+msgstr ""
+" numericlocale\n"
+" 允许显示特定于区域设置的字符以分隔数字组\n"
+
+#: help.c:449
+#, c-format
+msgid ""
+" pager\n"
+" control when an external pager is used [yes, no, always]\n"
+msgstr ""
+" pager\n"
+" 控制何时使用一个外部分页器 [yes, no, always]\n"
+
+#: help.c:451
+#, c-format
+msgid ""
+" recordsep\n"
+" record (line) separator for unaligned output\n"
+msgstr ""
+" recordsep\n"
+" 用于非对齐输出中的记录(行)分隔符\n"
+
+#: help.c:453
+#, c-format
+msgid ""
+" recordsep_zero\n"
+" set record separator for unaligned output to a zero byte\n"
+msgstr ""
+" recordsep_zero\n"
+" 将用于非对齐输出中的记录分隔符设置为零字节\n"
+
+#: help.c:455
+#, c-format
+msgid ""
+" tableattr (or T)\n"
+" specify attributes for table tag in html format, or proportional\n"
+" column widths for left-aligned data types in latex-longtable format\n"
+msgstr ""
+" tableattr (或者 T)\n"
+" 指定 html 格式中表标签的属性\n"
+" 或者 latex-longtable 格式中左对齐数据类型的比例列宽\n"
+
+#: help.c:458
+#, c-format
+msgid ""
+" title\n"
+" set the table title for subsequently printed tables\n"
+msgstr ""
+" title\n"
+" 为任何后续被打印的表设置表标题\n"
+
+#: help.c:460
+#, c-format
+msgid ""
+" tuples_only\n"
+" if set, only actual table data is shown\n"
+msgstr ""
+" tuples_only\n"
+" 如果被设置,只有真实的表数据会被显示\n"
+
+#: help.c:462
+#, c-format
+msgid ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" set the style of Unicode line drawing [single, double]\n"
+msgstr ""
+" unicode_border_linestyle\n"
+" unicode_column_linestyle\n"
+" unicode_header_linestyle\n"
+" 设置 Unicode 线绘制的风格 [single, double]\n"
+
+#: help.c:467
+#, c-format
+msgid ""
+"\n"
+"Environment variables:\n"
+msgstr ""
+"\n"
+"环境变量:\n"
+
+#: help.c:471
+#, c-format
+msgid ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" NAME=VALUE [NAME=VALUE] psql ...\n"
+" 或者 psql 中的 \\setenv NAME [VALUE]\n"
+"\n"
+
+#: help.c:473
+#, c-format
+msgid ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" or \\setenv NAME [VALUE] inside psql\n"
+"\n"
+msgstr ""
+" set NAME=VALUE\n"
+" psql ...\n"
+" 或者 psql 中的 \\setenv NAME [VALUE]\n"
+"\n"
+
+#: help.c:476
+#, c-format
+msgid ""
+" COLUMNS\n"
+" number of columns for wrapped format\n"
+msgstr ""
+" COLUMNS\n"
+" 回卷格式的列数\n"
+
+#: help.c:478
+#, c-format
+msgid ""
+" PGAPPNAME\n"
+" same as the application_name connection parameter\n"
+msgstr ""
+" PGAPPNAME\n"
+" 和application_name连接参数相同\n"
+
+#: help.c:480
+#, c-format
+msgid ""
+" PGDATABASE\n"
+" same as the dbname connection parameter\n"
+msgstr ""
+" PGDATABASE\n"
+" 和dbname连接参数相同\n"
+
+#: help.c:482
+#, c-format
+msgid ""
+" PGHOST\n"
+" same as the host connection parameter\n"
+msgstr ""
+" PGHOST\n"
+" 与主机连接参数相同\n"
+
+#: help.c:484
+#, c-format
+msgid ""
+" PGPASSWORD\n"
+" connection password (not recommended)\n"
+msgstr ""
+" PGPASSWORD\n"
+" 连接口令(不推荐)\n"
+
+#: help.c:486
+#, c-format
+msgid ""
+" PGPASSFILE\n"
+" password file name\n"
+msgstr ""
+" PGPASSFILE\n"
+" 口令文件名\n"
+
+#: help.c:488
+#, c-format
+msgid ""
+" PGPORT\n"
+" same as the port connection parameter\n"
+msgstr ""
+" PGPORT\n"
+" 与端口连接参数相同\n"
+
+#: help.c:490
+#, c-format
+msgid ""
+" PGUSER\n"
+" same as the user connection parameter\n"
+msgstr ""
+" PGUSER\n"
+" 与用户连接参数相同\n"
+
+#: help.c:492
+#, c-format
+msgid ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" editor used by the \\e, \\ef, and \\ev commands\n"
+msgstr ""
+" PSQL_EDITOR, EDITOR, VISUAL\n"
+" \\e, \\ef, 和 \\ev 命令使用的编辑器\n"
+
+#: help.c:494
+#, c-format
+msgid ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" how to specify a line number when invoking the editor\n"
+msgstr ""
+" PSQL_EDITOR_LINENUMBER_ARG\n"
+" 调用编辑器时如何指定一个行号\n"
+
+#: help.c:496
+#, c-format
+msgid ""
+" PSQL_HISTORY\n"
+" alternative location for the command history file\n"
+msgstr ""
+" PSQL_HISTORY\n"
+" 命令历史文件的可选位置\n"
+
+#: help.c:498
+#, c-format
+msgid ""
+" PSQL_PAGER, PAGER\n"
+" name of external pager program\n"
+msgstr ""
+" PSQL_PAGER, PAGER\n"
+" 外部分页程序的名称\n"
+
+#: help.c:500
+#, c-format
+msgid ""
+" PSQLRC\n"
+" alternative location for the user's .psqlrc file\n"
+msgstr ""
+" PSQLRC\n"
+" 用户的.psqlrc文件的可选位置\n"
+
+#: help.c:502
+#, c-format
+msgid ""
+" SHELL\n"
+" shell used by the \\! command\n"
+msgstr ""
+" SHELL\n"
+" \\! 命令使用的shell\n"
+
+#: help.c:504
+#, c-format
+msgid ""
+" TMPDIR\n"
+" directory for temporary files\n"
+msgstr ""
+" TMPDIR\n"
+" 临时文件的目录\n"
+
+#: help.c:548
+msgid "Available help:\n"
+msgstr "可用的说明:\n"
+
+#: help.c:636
+#, c-format
+msgid ""
+"Command: %s\n"
+"Description: %s\n"
+"Syntax:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+msgstr ""
+"命令: %s\n"
+"描述: %s\n"
+"语法:\n"
+"%s\n"
+"\n"
+"URL: %s\n"
+"\n"
+
+#: help.c:655
+#, c-format
+msgid ""
+"No help available for \"%s\".\n"
+"Try \\h with no arguments to see available help.\n"
+msgstr ""
+"没有 \"%s\" 的帮助说明.\n"
+"请尝试用不带参数的 \\h 来看一下是否有可使用的帮助信息.\n"
+
+#: input.c:218
+#, c-format
+msgid "could not read from input file: %m"
+msgstr "无法从输入档案读取:%m"
+
+#: input.c:472 input.c:510
+#, c-format
+msgid "could not save history to file \"%s\": %m"
+msgstr "无法将历史记录储存到 \"%s\":%m"
+
+#: input.c:529
+#, c-format
+msgid "history is not supported by this installation"
+msgstr "这个安装不支援命令记录"
+
+#: large_obj.c:65
+#, c-format
+msgid "%s: not connected to a database"
+msgstr "%s:尚未与数据库连接"
+
+#: large_obj.c:84
+#, c-format
+msgid "%s: current transaction is aborted"
+msgstr "%s:目前的事务被中止"
+
+#: large_obj.c:87
+#, c-format
+msgid "%s: unknown transaction status"
+msgstr "%s:不明事务状态"
+
+#: large_obj.c:288 large_obj.c:299
+msgid "ID"
+msgstr "ID"
+
+#: large_obj.c:309
+msgid "Large objects"
+msgstr "大型对象"
+
+#: mainloop.c:136
+#, c-format
+msgid "\\if: escaped"
+msgstr "\\if: 逃脱"
+
+#: mainloop.c:183
+#, c-format
+msgid "Use \"\\q\" to leave %s.\n"
+msgstr "使用 \"\\q\" 离开 %s.\n"
+
+#: mainloop.c:205
+msgid ""
+"The input is a PostgreSQL custom-format dump.\n"
+"Use the pg_restore command-line client to restore this dump to a database.\n"
+msgstr ""
+"该输入是一个PostgreSQL自定义格式的转储.\n"
+"请使用pg_restore命令行客户端来将这个转储恢复到数据库.\n"
+
+#: mainloop.c:282
+msgid "Use \\? for help or press control-C to clear the input buffer."
+msgstr "使用\\?获得帮助或按control-C清除输入缓冲区."
+
+#: mainloop.c:284
+msgid "Use \\? for help."
+msgstr "使用\\?获取帮助."
+
+#: mainloop.c:288
+msgid "You are using psql, the command-line interface to PostgreSQL."
+msgstr "您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面."
+
+#: mainloop.c:289
+#, c-format
+msgid ""
+"Type: \\copyright for distribution terms\n"
+" \\h for help with SQL commands\n"
+" \\? for help with psql commands\n"
+" \\g or terminate with semicolon to execute query\n"
+" \\q to quit\n"
+msgstr ""
+"键入: \\copyright 显示发行条款\n"
+" \\h 显示 SQL 命令的说明\n"
+" \\? 显示 pgsql 命令的说明\n"
+" \\g 或者以分号(;)结尾以执行查询\n"
+" \\q 退出\n"
+
+#: mainloop.c:313
+msgid "Use \\q to quit."
+msgstr "使用\\q 退出."
+
+#: mainloop.c:316 mainloop.c:340
+msgid "Use control-D to quit."
+msgstr "使用control-D退出."
+
+#: mainloop.c:318 mainloop.c:342
+msgid "Use control-C to quit."
+msgstr "使用control-C退出."
+
+#: mainloop.c:449 mainloop.c:591
+#, c-format
+msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block"
+msgstr "查询被忽略;使用\\endif或Ctrl-C退出当前\\if块"
+
+#: mainloop.c:609
+#, c-format
+msgid "reached EOF without finding closing \\endif(s)"
+msgstr "已到达EOF,但未找到结束符\\endif"
+
+#: psqlscan.l:729
+#, c-format
+msgid "skipping recursive expansion of variable \"%s\""
+msgstr "跳过变量 \"%s\"的递归扩展"
+
+#: psqlscanslash.l:638
+#, c-format
+msgid "unterminated quoted string"
+msgstr "未结束的引用字符串"
+
+#: psqlscanslash.l:811
+#, c-format
+msgid "%s: out of memory"
+msgstr "%s: 内存溢出"
+
+#: sql_help.c:35 sql_help.c:38 sql_help.c:41 sql_help.c:65 sql_help.c:66
+#: sql_help.c:68 sql_help.c:70 sql_help.c:81 sql_help.c:83 sql_help.c:85
+#: sql_help.c:111 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:123
+#: sql_help.c:126 sql_help.c:128 sql_help.c:130 sql_help.c:235 sql_help.c:237
+#: sql_help.c:238 sql_help.c:240 sql_help.c:242 sql_help.c:245 sql_help.c:247
+#: sql_help.c:249 sql_help.c:251 sql_help.c:263 sql_help.c:264 sql_help.c:265
+#: sql_help.c:267 sql_help.c:316 sql_help.c:318 sql_help.c:320 sql_help.c:322
+#: sql_help.c:391 sql_help.c:396 sql_help.c:398 sql_help.c:440 sql_help.c:442
+#: sql_help.c:445 sql_help.c:447 sql_help.c:515 sql_help.c:520 sql_help.c:525
+#: sql_help.c:530 sql_help.c:535 sql_help.c:588 sql_help.c:590 sql_help.c:592
+#: sql_help.c:594 sql_help.c:596 sql_help.c:599 sql_help.c:601 sql_help.c:604
+#: sql_help.c:615 sql_help.c:617 sql_help.c:658 sql_help.c:660 sql_help.c:662
+#: sql_help.c:665 sql_help.c:667 sql_help.c:669 sql_help.c:702 sql_help.c:706
+#: sql_help.c:710 sql_help.c:729 sql_help.c:732 sql_help.c:735 sql_help.c:764
+#: sql_help.c:776 sql_help.c:784 sql_help.c:787 sql_help.c:790 sql_help.c:805
+#: sql_help.c:808 sql_help.c:837 sql_help.c:842 sql_help.c:847 sql_help.c:852
+#: sql_help.c:857 sql_help.c:879 sql_help.c:881 sql_help.c:883 sql_help.c:885
+#: sql_help.c:888 sql_help.c:890 sql_help.c:931 sql_help.c:975 sql_help.c:980
+#: sql_help.c:985 sql_help.c:990 sql_help.c:995 sql_help.c:1014
+#: sql_help.c:1025 sql_help.c:1027 sql_help.c:1046 sql_help.c:1056
+#: sql_help.c:1058 sql_help.c:1060 sql_help.c:1072 sql_help.c:1076
+#: sql_help.c:1078 sql_help.c:1089 sql_help.c:1091 sql_help.c:1093
+#: sql_help.c:1109 sql_help.c:1111 sql_help.c:1115 sql_help.c:1118
+#: sql_help.c:1119 sql_help.c:1120 sql_help.c:1123 sql_help.c:1125
+#: sql_help.c:1257 sql_help.c:1259 sql_help.c:1262 sql_help.c:1265
+#: sql_help.c:1267 sql_help.c:1269 sql_help.c:1272 sql_help.c:1275
+#: sql_help.c:1384 sql_help.c:1386 sql_help.c:1388 sql_help.c:1391
+#: sql_help.c:1412 sql_help.c:1415 sql_help.c:1418 sql_help.c:1421
+#: sql_help.c:1425 sql_help.c:1427 sql_help.c:1429 sql_help.c:1431
+#: sql_help.c:1445 sql_help.c:1448 sql_help.c:1450 sql_help.c:1452
+#: sql_help.c:1462 sql_help.c:1464 sql_help.c:1474 sql_help.c:1476
+#: sql_help.c:1486 sql_help.c:1489 sql_help.c:1511 sql_help.c:1513
+#: sql_help.c:1515 sql_help.c:1518 sql_help.c:1520 sql_help.c:1522
+#: sql_help.c:1525 sql_help.c:1575 sql_help.c:1617 sql_help.c:1620
+#: sql_help.c:1622 sql_help.c:1624 sql_help.c:1626 sql_help.c:1628
+#: sql_help.c:1631 sql_help.c:1679 sql_help.c:1695 sql_help.c:1916
+#: sql_help.c:1985 sql_help.c:2004 sql_help.c:2017 sql_help.c:2074
+#: sql_help.c:2081 sql_help.c:2091 sql_help.c:2111 sql_help.c:2136
+#: sql_help.c:2154 sql_help.c:2183 sql_help.c:2278 sql_help.c:2320
+#: sql_help.c:2343 sql_help.c:2364 sql_help.c:2365 sql_help.c:2402
+#: sql_help.c:2422 sql_help.c:2444 sql_help.c:2458 sql_help.c:2478
+#: sql_help.c:2501 sql_help.c:2531 sql_help.c:2556 sql_help.c:2602
+#: sql_help.c:2880 sql_help.c:2893 sql_help.c:2910 sql_help.c:2926
+#: sql_help.c:2966 sql_help.c:3018 sql_help.c:3022 sql_help.c:3024
+#: sql_help.c:3030 sql_help.c:3048 sql_help.c:3075 sql_help.c:3110
+#: sql_help.c:3122 sql_help.c:3131 sql_help.c:3175 sql_help.c:3189
+#: sql_help.c:3217 sql_help.c:3225 sql_help.c:3233 sql_help.c:3241
+#: sql_help.c:3249 sql_help.c:3257 sql_help.c:3265 sql_help.c:3273
+#: sql_help.c:3282 sql_help.c:3293 sql_help.c:3301 sql_help.c:3309
+#: sql_help.c:3317 sql_help.c:3325 sql_help.c:3335 sql_help.c:3344
+#: sql_help.c:3353 sql_help.c:3361 sql_help.c:3371 sql_help.c:3382
+#: sql_help.c:3390 sql_help.c:3399 sql_help.c:3410 sql_help.c:3419
+#: sql_help.c:3427 sql_help.c:3435 sql_help.c:3443 sql_help.c:3451
+#: sql_help.c:3459 sql_help.c:3467 sql_help.c:3475 sql_help.c:3483
+#: sql_help.c:3491 sql_help.c:3499 sql_help.c:3516 sql_help.c:3525
+#: sql_help.c:3533 sql_help.c:3550 sql_help.c:3565 sql_help.c:3835
+#: sql_help.c:3886 sql_help.c:3915 sql_help.c:3923 sql_help.c:4356
+#: sql_help.c:4404 sql_help.c:4545
+msgid "name"
+msgstr "名称"
+
+#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1766
+#: sql_help.c:3190 sql_help.c:4142
+msgid "aggregate_signature"
+msgstr "aggregate_signature"
+
+#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:250
+#: sql_help.c:268 sql_help.c:399 sql_help.c:446 sql_help.c:524 sql_help.c:571
+#: sql_help.c:589 sql_help.c:616 sql_help.c:666 sql_help.c:731 sql_help.c:786
+#: sql_help.c:807 sql_help.c:846 sql_help.c:891 sql_help.c:932 sql_help.c:984
+#: sql_help.c:1016 sql_help.c:1026 sql_help.c:1059 sql_help.c:1079
+#: sql_help.c:1092 sql_help.c:1126 sql_help.c:1266 sql_help.c:1385
+#: sql_help.c:1428 sql_help.c:1449 sql_help.c:1463 sql_help.c:1475
+#: sql_help.c:1488 sql_help.c:1519 sql_help.c:1576 sql_help.c:1625
+msgid "new_name"
+msgstr "新的名称"
+
+#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:120 sql_help.c:248
+#: sql_help.c:266 sql_help.c:397 sql_help.c:482 sql_help.c:529 sql_help.c:618
+#: sql_help.c:627 sql_help.c:685 sql_help.c:705 sql_help.c:734 sql_help.c:789
+#: sql_help.c:851 sql_help.c:889 sql_help.c:989 sql_help.c:1028
+#: sql_help.c:1057 sql_help.c:1077 sql_help.c:1090 sql_help.c:1124
+#: sql_help.c:1326 sql_help.c:1387 sql_help.c:1430 sql_help.c:1451
+#: sql_help.c:1514 sql_help.c:1623 sql_help.c:2866
+msgid "new_owner"
+msgstr "新的属主"
+
+#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:252 sql_help.c:319
+#: sql_help.c:448 sql_help.c:534 sql_help.c:668 sql_help.c:709 sql_help.c:737
+#: sql_help.c:792 sql_help.c:856 sql_help.c:994 sql_help.c:1061
+#: sql_help.c:1094 sql_help.c:1268 sql_help.c:1432 sql_help.c:1453
+#: sql_help.c:1465 sql_help.c:1477 sql_help.c:1521 sql_help.c:1627
+msgid "new_schema"
+msgstr "新的模式"
+
+#: sql_help.c:44 sql_help.c:1830 sql_help.c:3191 sql_help.c:4171
+msgid "where aggregate_signature is:"
+msgstr "其中 aggregate_signature 是:"
+
+#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:337 sql_help.c:350
+#: sql_help.c:354 sql_help.c:370 sql_help.c:373 sql_help.c:376 sql_help.c:516
+#: sql_help.c:521 sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:838
+#: sql_help.c:843 sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:976
+#: sql_help.c:981 sql_help.c:986 sql_help.c:991 sql_help.c:996 sql_help.c:1784
+#: sql_help.c:1801 sql_help.c:1807 sql_help.c:1831 sql_help.c:1834
+#: sql_help.c:1837 sql_help.c:1986 sql_help.c:2005 sql_help.c:2008
+#: sql_help.c:2279 sql_help.c:2479 sql_help.c:3192 sql_help.c:3195
+#: sql_help.c:3198 sql_help.c:3283 sql_help.c:3372 sql_help.c:3400
+#: sql_help.c:3720 sql_help.c:4053 sql_help.c:4148 sql_help.c:4155
+#: sql_help.c:4161 sql_help.c:4172 sql_help.c:4175 sql_help.c:4178
+msgid "argmode"
+msgstr "参数模式"
+
+#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:338 sql_help.c:351
+#: sql_help.c:355 sql_help.c:371 sql_help.c:374 sql_help.c:377 sql_help.c:517
+#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:839
+#: sql_help.c:844 sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:977
+#: sql_help.c:982 sql_help.c:987 sql_help.c:992 sql_help.c:997 sql_help.c:1785
+#: sql_help.c:1802 sql_help.c:1808 sql_help.c:1832 sql_help.c:1835
+#: sql_help.c:1838 sql_help.c:1987 sql_help.c:2006 sql_help.c:2009
+#: sql_help.c:2280 sql_help.c:2480 sql_help.c:3193 sql_help.c:3196
+#: sql_help.c:3199 sql_help.c:3284 sql_help.c:3373 sql_help.c:3401
+#: sql_help.c:4149 sql_help.c:4156 sql_help.c:4162 sql_help.c:4173
+#: sql_help.c:4176 sql_help.c:4179
+msgid "argname"
+msgstr "参数名称"
+
+#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:339 sql_help.c:352
+#: sql_help.c:356 sql_help.c:372 sql_help.c:375 sql_help.c:378 sql_help.c:518
+#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:840
+#: sql_help.c:845 sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:978
+#: sql_help.c:983 sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1786
+#: sql_help.c:1803 sql_help.c:1809 sql_help.c:1833 sql_help.c:1836
+#: sql_help.c:1839 sql_help.c:2281 sql_help.c:2481 sql_help.c:3194
+#: sql_help.c:3197 sql_help.c:3200 sql_help.c:3285 sql_help.c:3374
+#: sql_help.c:3402 sql_help.c:4150 sql_help.c:4157 sql_help.c:4163
+#: sql_help.c:4174 sql_help.c:4177 sql_help.c:4180
+msgid "argtype"
+msgstr "参数类型"
+
+#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:926
+#: sql_help.c:1074 sql_help.c:1446 sql_help.c:1570 sql_help.c:1602
+#: sql_help.c:1650 sql_help.c:1887 sql_help.c:1894 sql_help.c:2186
+#: sql_help.c:2228 sql_help.c:2235 sql_help.c:2244 sql_help.c:2321
+#: sql_help.c:2532 sql_help.c:2624 sql_help.c:2895 sql_help.c:3076
+#: sql_help.c:3098 sql_help.c:3586 sql_help.c:3754 sql_help.c:4606
+msgid "option"
+msgstr "选项"
+
+#: sql_help.c:113 sql_help.c:927 sql_help.c:1571 sql_help.c:2322
+#: sql_help.c:2533 sql_help.c:3077
+msgid "where option can be:"
+msgstr "选项可以是"
+
+#: sql_help.c:114 sql_help.c:2118
+msgid "allowconn"
+msgstr "allowconn"
+
+#: sql_help.c:115 sql_help.c:928 sql_help.c:1572 sql_help.c:2119
+#: sql_help.c:2534 sql_help.c:3078
+msgid "connlimit"
+msgstr "连接限制"
+
+#: sql_help.c:116 sql_help.c:2120
+msgid "istemplate"
+msgstr "istemplate"
+
+#: sql_help.c:122 sql_help.c:606 sql_help.c:671 sql_help.c:1271
+#: sql_help.c:1319
+msgid "new_tablespace"
+msgstr "新的表空间"
+
+#: sql_help.c:124 sql_help.c:127 sql_help.c:129 sql_help.c:544 sql_help.c:546
+#: sql_help.c:547 sql_help.c:863 sql_help.c:865 sql_help.c:866 sql_help.c:935
+#: sql_help.c:939 sql_help.c:942 sql_help.c:1003 sql_help.c:1005
+#: sql_help.c:1006 sql_help.c:1137 sql_help.c:1140 sql_help.c:1579
+#: sql_help.c:1583 sql_help.c:1586 sql_help.c:2291 sql_help.c:2485
+#: sql_help.c:3940 sql_help.c:4345
+msgid "configuration_parameter"
+msgstr "配置参数"
+
+#: sql_help.c:125 sql_help.c:395 sql_help.c:466 sql_help.c:472 sql_help.c:484
+#: sql_help.c:545 sql_help.c:598 sql_help.c:677 sql_help.c:683 sql_help.c:864
+#: sql_help.c:887 sql_help.c:936 sql_help.c:1004 sql_help.c:1075
+#: sql_help.c:1114 sql_help.c:1117 sql_help.c:1122 sql_help.c:1138
+#: sql_help.c:1139 sql_help.c:1301 sql_help.c:1321 sql_help.c:1368
+#: sql_help.c:1390 sql_help.c:1447 sql_help.c:1580 sql_help.c:1603
+#: sql_help.c:2187 sql_help.c:2229 sql_help.c:2236 sql_help.c:2245
+#: sql_help.c:2292 sql_help.c:2293 sql_help.c:2352 sql_help.c:2386
+#: sql_help.c:2486 sql_help.c:2487 sql_help.c:2504 sql_help.c:2625
+#: sql_help.c:2655 sql_help.c:2760 sql_help.c:2773 sql_help.c:2787
+#: sql_help.c:2828 sql_help.c:2852 sql_help.c:2869 sql_help.c:2896
+#: sql_help.c:3099 sql_help.c:3755 sql_help.c:4346 sql_help.c:4347
+msgid "value"
+msgstr "值"
+
+#: sql_help.c:197
+msgid "target_role"
+msgstr "目标角色"
+
+#: sql_help.c:198 sql_help.c:2170 sql_help.c:2580 sql_help.c:2585
+#: sql_help.c:3702 sql_help.c:3709 sql_help.c:3723 sql_help.c:3729
+#: sql_help.c:4035 sql_help.c:4042 sql_help.c:4056 sql_help.c:4062
+msgid "schema_name"
+msgstr "模式名称"
+
+#: sql_help.c:199
+msgid "abbreviated_grant_or_revoke"
+msgstr "简写形式的可授予或回收的权限"
+
+#: sql_help.c:200
+msgid "where abbreviated_grant_or_revoke is one of:"
+msgstr "简写形式的可授予或回收权限是下列内容之一:"
+
+#: sql_help.c:201 sql_help.c:202 sql_help.c:203 sql_help.c:204 sql_help.c:205
+#: sql_help.c:206 sql_help.c:207 sql_help.c:208 sql_help.c:209 sql_help.c:210
+#: sql_help.c:569 sql_help.c:605 sql_help.c:670 sql_help.c:810 sql_help.c:946
+#: sql_help.c:1270 sql_help.c:1590 sql_help.c:2325 sql_help.c:2326
+#: sql_help.c:2327 sql_help.c:2328 sql_help.c:2329 sql_help.c:2460
+#: sql_help.c:2537 sql_help.c:2538 sql_help.c:2539 sql_help.c:2540
+#: sql_help.c:2541 sql_help.c:3081 sql_help.c:3082 sql_help.c:3083
+#: sql_help.c:3084 sql_help.c:3085 sql_help.c:3736 sql_help.c:3737
+#: sql_help.c:3738 sql_help.c:4036 sql_help.c:4040 sql_help.c:4043
+#: sql_help.c:4045 sql_help.c:4047 sql_help.c:4049 sql_help.c:4051
+#: sql_help.c:4057 sql_help.c:4059 sql_help.c:4061 sql_help.c:4063
+#: sql_help.c:4065 sql_help.c:4067 sql_help.c:4068 sql_help.c:4069
+#: sql_help.c:4366
+msgid "role_name"
+msgstr "角色名称"
+
+#: sql_help.c:236 sql_help.c:459 sql_help.c:1286 sql_help.c:1288
+#: sql_help.c:1336 sql_help.c:1347 sql_help.c:1372 sql_help.c:1619
+#: sql_help.c:2139 sql_help.c:2143 sql_help.c:2248 sql_help.c:2253
+#: sql_help.c:2347 sql_help.c:2755 sql_help.c:2768 sql_help.c:2782
+#: sql_help.c:2791 sql_help.c:2803 sql_help.c:2832 sql_help.c:3786
+#: sql_help.c:3801 sql_help.c:3803 sql_help.c:4231 sql_help.c:4232
+#: sql_help.c:4241 sql_help.c:4282 sql_help.c:4283 sql_help.c:4284
+#: sql_help.c:4285 sql_help.c:4286 sql_help.c:4287 sql_help.c:4320
+#: sql_help.c:4321 sql_help.c:4326 sql_help.c:4331 sql_help.c:4470
+#: sql_help.c:4471 sql_help.c:4480 sql_help.c:4521 sql_help.c:4522
+#: sql_help.c:4523 sql_help.c:4524 sql_help.c:4525 sql_help.c:4526
+#: sql_help.c:4573 sql_help.c:4575 sql_help.c:4632 sql_help.c:4688
+#: sql_help.c:4689 sql_help.c:4698 sql_help.c:4739 sql_help.c:4740
+#: sql_help.c:4741 sql_help.c:4742 sql_help.c:4743 sql_help.c:4744
+msgid "expression"
+msgstr "表达式"
+
+#: sql_help.c:239
+msgid "domain_constraint"
+msgstr "域_约束"
+
+#: sql_help.c:241 sql_help.c:243 sql_help.c:246 sql_help.c:474 sql_help.c:475
+#: sql_help.c:1263 sql_help.c:1307 sql_help.c:1308 sql_help.c:1309
+#: sql_help.c:1335 sql_help.c:1346 sql_help.c:1363 sql_help.c:1772
+#: sql_help.c:1774 sql_help.c:2142 sql_help.c:2247 sql_help.c:2252
+#: sql_help.c:2790 sql_help.c:2802 sql_help.c:3798
+msgid "constraint_name"
+msgstr "约束名称"
+
+#: sql_help.c:244 sql_help.c:1264
+msgid "new_constraint_name"
+msgstr "new_constraint_name(新约束名)"
+
+#: sql_help.c:317 sql_help.c:1073
+msgid "new_version"
+msgstr "新版本"
+
+#: sql_help.c:321 sql_help.c:323
+msgid "member_object"
+msgstr "member_object"
+
+#: sql_help.c:324
+msgid "where member_object is:"
+msgstr "member_object的位置:"
+
+#: sql_help.c:325 sql_help.c:330 sql_help.c:331 sql_help.c:332 sql_help.c:333
+#: sql_help.c:334 sql_help.c:335 sql_help.c:340 sql_help.c:344 sql_help.c:346
+#: sql_help.c:348 sql_help.c:357 sql_help.c:358 sql_help.c:359 sql_help.c:360
+#: sql_help.c:361 sql_help.c:362 sql_help.c:363 sql_help.c:364 sql_help.c:367
+#: sql_help.c:368 sql_help.c:1764 sql_help.c:1769 sql_help.c:1776
+#: sql_help.c:1777 sql_help.c:1778 sql_help.c:1779 sql_help.c:1780
+#: sql_help.c:1781 sql_help.c:1782 sql_help.c:1787 sql_help.c:1789
+#: sql_help.c:1793 sql_help.c:1795 sql_help.c:1799 sql_help.c:1804
+#: sql_help.c:1805 sql_help.c:1812 sql_help.c:1813 sql_help.c:1814
+#: sql_help.c:1815 sql_help.c:1816 sql_help.c:1817 sql_help.c:1818
+#: sql_help.c:1819 sql_help.c:1820 sql_help.c:1821 sql_help.c:1822
+#: sql_help.c:1827 sql_help.c:1828 sql_help.c:4138 sql_help.c:4143
+#: sql_help.c:4144 sql_help.c:4145 sql_help.c:4146 sql_help.c:4152
+#: sql_help.c:4153 sql_help.c:4158 sql_help.c:4159 sql_help.c:4164
+#: sql_help.c:4165 sql_help.c:4166 sql_help.c:4167 sql_help.c:4168
+#: sql_help.c:4169
+msgid "object_name"
+msgstr "对象_名称"
+
+#: sql_help.c:326 sql_help.c:1765 sql_help.c:4141
+msgid "aggregate_name"
+msgstr "aggregate_name"
+
+#: sql_help.c:328 sql_help.c:1767 sql_help.c:2051 sql_help.c:2055
+#: sql_help.c:2057 sql_help.c:3208
+msgid "source_type"
+msgstr "类型指派中的源数据类型"
+
+#: sql_help.c:329 sql_help.c:1768 sql_help.c:2052 sql_help.c:2056
+#: sql_help.c:2058 sql_help.c:3209
+msgid "target_type"
+msgstr "类型指派中的目标数据类型"
+
+#: sql_help.c:336 sql_help.c:774 sql_help.c:1783 sql_help.c:2053
+#: sql_help.c:2094 sql_help.c:2157 sql_help.c:2403 sql_help.c:2434
+#: sql_help.c:2972 sql_help.c:4052 sql_help.c:4147 sql_help.c:4260
+#: sql_help.c:4264 sql_help.c:4268 sql_help.c:4271 sql_help.c:4499
+#: sql_help.c:4503 sql_help.c:4507 sql_help.c:4510 sql_help.c:4717
+#: sql_help.c:4721 sql_help.c:4725 sql_help.c:4728
+msgid "function_name"
+msgstr "函数名称"
+
+#: sql_help.c:341 sql_help.c:767 sql_help.c:1790 sql_help.c:2427
+msgid "operator_name"
+msgstr "操作符名称"
+
+#: sql_help.c:342 sql_help.c:703 sql_help.c:707 sql_help.c:711 sql_help.c:1791
+#: sql_help.c:2404 sql_help.c:3326
+msgid "left_type"
+msgstr "操作符左边操作数的类型"
+
+#: sql_help.c:343 sql_help.c:704 sql_help.c:708 sql_help.c:712 sql_help.c:1792
+#: sql_help.c:2405 sql_help.c:3327
+msgid "right_type"
+msgstr "操作符右边操作数的类型"
+
+#: sql_help.c:345 sql_help.c:347 sql_help.c:730 sql_help.c:733 sql_help.c:736
+#: sql_help.c:765 sql_help.c:777 sql_help.c:785 sql_help.c:788 sql_help.c:791
+#: sql_help.c:1352 sql_help.c:1794 sql_help.c:1796 sql_help.c:2424
+#: sql_help.c:2445 sql_help.c:2808 sql_help.c:3336 sql_help.c:3345
+msgid "index_method"
+msgstr "访问索引的方法"
+
+#: sql_help.c:349 sql_help.c:1800 sql_help.c:4154
+msgid "procedure_name"
+msgstr "程序名称 "
+
+#: sql_help.c:353 sql_help.c:1806 sql_help.c:3719 sql_help.c:4160
+msgid "routine_name"
+msgstr "程序名称"
+
+#: sql_help.c:365 sql_help.c:1325 sql_help.c:1823 sql_help.c:2287
+#: sql_help.c:2484 sql_help.c:2763 sql_help.c:2939 sql_help.c:3507
+#: sql_help.c:3733 sql_help.c:4066
+msgid "type_name"
+msgstr "类型名称"
+
+#: sql_help.c:366 sql_help.c:1824 sql_help.c:2286 sql_help.c:2483
+#: sql_help.c:2940 sql_help.c:3166 sql_help.c:3508 sql_help.c:3725
+#: sql_help.c:4058
+msgid "lang_name"
+msgstr "语言名称"
+
+#: sql_help.c:369
+msgid "and aggregate_signature is:"
+msgstr "aggregate_signature指的是:"
+
+#: sql_help.c:392 sql_help.c:1918 sql_help.c:2184
+msgid "handler_function"
+msgstr "handler_function(处理_函数)"
+
+#: sql_help.c:393 sql_help.c:2185
+msgid "validator_function"
+msgstr "validator_function(验证_函数)"
+
+#: sql_help.c:441 sql_help.c:519 sql_help.c:659 sql_help.c:841 sql_help.c:979
+#: sql_help.c:1258 sql_help.c:1512
+msgid "action"
+msgstr "操作"
+
+#: sql_help.c:443 sql_help.c:450 sql_help.c:454 sql_help.c:455 sql_help.c:458
+#: sql_help.c:460 sql_help.c:461 sql_help.c:462 sql_help.c:464 sql_help.c:467
+#: sql_help.c:469 sql_help.c:470 sql_help.c:663 sql_help.c:673 sql_help.c:675
+#: sql_help.c:678 sql_help.c:680 sql_help.c:1055 sql_help.c:1260
+#: sql_help.c:1278 sql_help.c:1282 sql_help.c:1283 sql_help.c:1287
+#: sql_help.c:1289 sql_help.c:1290 sql_help.c:1291 sql_help.c:1293
+#: sql_help.c:1296 sql_help.c:1297 sql_help.c:1299 sql_help.c:1302
+#: sql_help.c:1304 sql_help.c:1348 sql_help.c:1350 sql_help.c:1357
+#: sql_help.c:1366 sql_help.c:1371 sql_help.c:1618 sql_help.c:1621
+#: sql_help.c:1656 sql_help.c:1771 sql_help.c:1884 sql_help.c:1890
+#: sql_help.c:1903 sql_help.c:1904 sql_help.c:1905 sql_help.c:2226
+#: sql_help.c:2239 sql_help.c:2284 sql_help.c:2346 sql_help.c:2350
+#: sql_help.c:2383 sql_help.c:2610 sql_help.c:2638 sql_help.c:2639
+#: sql_help.c:2746 sql_help.c:2754 sql_help.c:2764 sql_help.c:2767
+#: sql_help.c:2777 sql_help.c:2781 sql_help.c:2804 sql_help.c:2806
+#: sql_help.c:2813 sql_help.c:2826 sql_help.c:2831 sql_help.c:2849
+#: sql_help.c:2975 sql_help.c:3111 sql_help.c:3704 sql_help.c:3705
+#: sql_help.c:3785 sql_help.c:3800 sql_help.c:3802 sql_help.c:3804
+#: sql_help.c:4037 sql_help.c:4038 sql_help.c:4140 sql_help.c:4291
+#: sql_help.c:4530 sql_help.c:4572 sql_help.c:4574 sql_help.c:4576
+#: sql_help.c:4620 sql_help.c:4748
+msgid "column_name"
+msgstr "列名称"
+
+#: sql_help.c:444 sql_help.c:664 sql_help.c:1261
+msgid "new_column_name"
+msgstr "new_column_name(新列名)"
+
+#: sql_help.c:449 sql_help.c:540 sql_help.c:672 sql_help.c:862 sql_help.c:1000
+#: sql_help.c:1277 sql_help.c:1528
+msgid "where action is one of:"
+msgstr "操作可以是下列选项之一"
+
+#: sql_help.c:451 sql_help.c:456 sql_help.c:1047 sql_help.c:1279
+#: sql_help.c:1284 sql_help.c:1530 sql_help.c:1534 sql_help.c:2137
+#: sql_help.c:2227 sql_help.c:2423 sql_help.c:2603 sql_help.c:2747
+#: sql_help.c:3020 sql_help.c:3887
+msgid "data_type"
+msgstr "数据_类型"
+
+#: sql_help.c:452 sql_help.c:457 sql_help.c:1280 sql_help.c:1285
+#: sql_help.c:1531 sql_help.c:1535 sql_help.c:2138 sql_help.c:2230
+#: sql_help.c:2348 sql_help.c:2748 sql_help.c:2756 sql_help.c:2769
+#: sql_help.c:2783 sql_help.c:3021 sql_help.c:3027 sql_help.c:3795
+msgid "collation"
+msgstr "校对规则"
+
+#: sql_help.c:453 sql_help.c:1281 sql_help.c:2231 sql_help.c:2240
+#: sql_help.c:2749 sql_help.c:2765 sql_help.c:2778
+msgid "column_constraint"
+msgstr "列约束"
+
+#: sql_help.c:463 sql_help.c:603 sql_help.c:674 sql_help.c:1298
+msgid "integer"
+msgstr "整数"
+
+#: sql_help.c:465 sql_help.c:468 sql_help.c:676 sql_help.c:679 sql_help.c:1300
+#: sql_help.c:1303
+msgid "attribute_option"
+msgstr "属性选项"
+
+#: sql_help.c:473 sql_help.c:1305 sql_help.c:2232 sql_help.c:2241
+#: sql_help.c:2750 sql_help.c:2766 sql_help.c:2779
+msgid "table_constraint"
+msgstr "表约束"
+
+#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1310
+#: sql_help.c:1311 sql_help.c:1312 sql_help.c:1313 sql_help.c:1825
+msgid "trigger_name"
+msgstr "触发器_名称"
+
+#: sql_help.c:480 sql_help.c:481 sql_help.c:1323 sql_help.c:1324
+#: sql_help.c:2233 sql_help.c:2238 sql_help.c:2753 sql_help.c:2776
+msgid "parent_table"
+msgstr "父表"
+
+#: sql_help.c:539 sql_help.c:595 sql_help.c:661 sql_help.c:861 sql_help.c:999
+#: sql_help.c:1491 sql_help.c:2169
+msgid "extension_name"
+msgstr "extension_name(扩展名)"
+
+#: sql_help.c:541 sql_help.c:1001 sql_help.c:2288
+msgid "execution_cost"
+msgstr "执行函数的开销"
+
+#: sql_help.c:542 sql_help.c:1002 sql_help.c:2289
+msgid "result_rows"
+msgstr "返回记录的数量"
+
+#: sql_help.c:543 sql_help.c:2290
+msgid "support_function"
+msgstr "支持_函数"
+
+#: sql_help.c:564 sql_help.c:566 sql_help.c:925 sql_help.c:933 sql_help.c:937
+#: sql_help.c:940 sql_help.c:943 sql_help.c:1569 sql_help.c:1577
+#: sql_help.c:1581 sql_help.c:1584 sql_help.c:1587 sql_help.c:2581
+#: sql_help.c:2583 sql_help.c:2586 sql_help.c:2587 sql_help.c:3703
+#: sql_help.c:3707 sql_help.c:3710 sql_help.c:3712 sql_help.c:3714
+#: sql_help.c:3716 sql_help.c:3718 sql_help.c:3724 sql_help.c:3726
+#: sql_help.c:3728 sql_help.c:3730 sql_help.c:3732 sql_help.c:3734
+msgid "role_specification"
+msgstr "role_specification"
+
+#: sql_help.c:565 sql_help.c:567 sql_help.c:1600 sql_help.c:2112
+#: sql_help.c:2589 sql_help.c:3096 sql_help.c:3541 sql_help.c:4376
+msgid "user_name"
+msgstr "用户名"
+
+#: sql_help.c:568 sql_help.c:945 sql_help.c:1589 sql_help.c:2588
+#: sql_help.c:3735
+msgid "where role_specification can be:"
+msgstr "这里role_specification可以是:"
+
+#: sql_help.c:570
+msgid "group_name"
+msgstr "组名称"
+
+#: sql_help.c:591 sql_help.c:1369 sql_help.c:2117 sql_help.c:2353
+#: sql_help.c:2387 sql_help.c:2761 sql_help.c:2774 sql_help.c:2788
+#: sql_help.c:2829 sql_help.c:2853 sql_help.c:2865 sql_help.c:3731
+#: sql_help.c:4064
+msgid "tablespace_name"
+msgstr "表空间的名称"
+
+#: sql_help.c:593 sql_help.c:681 sql_help.c:1318 sql_help.c:1327
+#: sql_help.c:1364 sql_help.c:1705
+msgid "index_name"
+msgstr "索引名称"
+
+#: sql_help.c:597 sql_help.c:600 sql_help.c:682 sql_help.c:684 sql_help.c:1320
+#: sql_help.c:1322 sql_help.c:1367 sql_help.c:2351 sql_help.c:2385
+#: sql_help.c:2759 sql_help.c:2772 sql_help.c:2786 sql_help.c:2827
+#: sql_help.c:2851
+msgid "storage_parameter"
+msgstr "存储参数"
+
+#: sql_help.c:602
+msgid "column_number"
+msgstr "列数"
+
+#: sql_help.c:626 sql_help.c:1788 sql_help.c:4151
+msgid "large_object_oid"
+msgstr "大对象的OID"
+
+#: sql_help.c:713 sql_help.c:2408
+msgid "res_proc"
+msgstr "限制选择性估算函数"
+
+#: sql_help.c:714 sql_help.c:2409
+msgid "join_proc"
+msgstr "连接选择性估算函数"
+
+#: sql_help.c:766 sql_help.c:778 sql_help.c:2426
+msgid "strategy_number"
+msgstr "访问索引所用方法的编号"
+
+#: sql_help.c:768 sql_help.c:769 sql_help.c:772 sql_help.c:773 sql_help.c:779
+#: sql_help.c:780 sql_help.c:782 sql_help.c:783 sql_help.c:2428
+#: sql_help.c:2429 sql_help.c:2432 sql_help.c:2433
+msgid "op_type"
+msgstr "操作数类型"
+
+#: sql_help.c:770 sql_help.c:2430
+msgid "sort_family_name"
+msgstr "sort_family_name(排序家族名)"
+
+#: sql_help.c:771 sql_help.c:781 sql_help.c:2431
+msgid "support_number"
+msgstr "访问索引所使用函数的编号"
+
+#: sql_help.c:775 sql_help.c:2054 sql_help.c:2435 sql_help.c:2942
+#: sql_help.c:2944
+msgid "argument_type"
+msgstr "参数类型"
+
+#: sql_help.c:806 sql_help.c:809 sql_help.c:880 sql_help.c:882 sql_help.c:884
+#: sql_help.c:1015 sql_help.c:1054 sql_help.c:1487 sql_help.c:1490
+#: sql_help.c:1655 sql_help.c:1704 sql_help.c:1773 sql_help.c:1798
+#: sql_help.c:1811 sql_help.c:1826 sql_help.c:1883 sql_help.c:1889
+#: sql_help.c:2225 sql_help.c:2237 sql_help.c:2344 sql_help.c:2382
+#: sql_help.c:2459 sql_help.c:2502 sql_help.c:2558 sql_help.c:2609
+#: sql_help.c:2640 sql_help.c:2745 sql_help.c:2762 sql_help.c:2775
+#: sql_help.c:2848 sql_help.c:2968 sql_help.c:3145 sql_help.c:3362
+#: sql_help.c:3411 sql_help.c:3517 sql_help.c:3701 sql_help.c:3706
+#: sql_help.c:3751 sql_help.c:3783 sql_help.c:4034 sql_help.c:4039
+#: sql_help.c:4139 sql_help.c:4246 sql_help.c:4248 sql_help.c:4297
+#: sql_help.c:4336 sql_help.c:4485 sql_help.c:4487 sql_help.c:4536
+#: sql_help.c:4570 sql_help.c:4619 sql_help.c:4703 sql_help.c:4705
+#: sql_help.c:4754
+msgid "table_name"
+msgstr "表名"
+
+#: sql_help.c:811 sql_help.c:2461
+msgid "using_expression"
+msgstr "使用表达式"
+
+#: sql_help.c:812 sql_help.c:2462
+msgid "check_expression"
+msgstr "检查表达式"
+
+#: sql_help.c:886 sql_help.c:2503
+msgid "publication_parameter"
+msgstr "发布参数"
+
+#: sql_help.c:929 sql_help.c:1573 sql_help.c:2323 sql_help.c:2535
+#: sql_help.c:3079
+msgid "password"
+msgstr "口令"
+
+#: sql_help.c:930 sql_help.c:1574 sql_help.c:2324 sql_help.c:2536
+#: sql_help.c:3080
+msgid "timestamp"
+msgstr "时间戳"
+
+#: sql_help.c:934 sql_help.c:938 sql_help.c:941 sql_help.c:944 sql_help.c:1578
+#: sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 sql_help.c:3711
+#: sql_help.c:4044
+msgid "database_name"
+msgstr "数据库名称"
+
+#: sql_help.c:1048 sql_help.c:2604
+msgid "increment"
+msgstr "增量"
+
+#: sql_help.c:1049 sql_help.c:2605
+msgid "minvalue"
+msgstr "最小值"
+
+#: sql_help.c:1050 sql_help.c:2606
+msgid "maxvalue"
+msgstr "最大值"
+
+#: sql_help.c:1051 sql_help.c:2607 sql_help.c:4244 sql_help.c:4334
+#: sql_help.c:4483 sql_help.c:4636 sql_help.c:4701
+msgid "start"
+msgstr "起始值"
+
+#: sql_help.c:1052 sql_help.c:1295
+msgid "restart"
+msgstr "重新启动后的序列值"
+
+#: sql_help.c:1053 sql_help.c:2608
+msgid "cache"
+msgstr "缓存"
+
+#: sql_help.c:1110 sql_help.c:2652
+msgid "conninfo"
+msgstr "连接信息"
+
+#: sql_help.c:1112 sql_help.c:2653
+msgid "publication_name"
+msgstr "发布名"
+
+#: sql_help.c:1113
+msgid "set_publication_option"
+msgstr "设置发布选项"
+
+#: sql_help.c:1116
+msgid "refresh_option"
+msgstr "refresh选项"
+
+#: sql_help.c:1121 sql_help.c:2654
+msgid "subscription_parameter"
+msgstr "订阅参数"
+
+#: sql_help.c:1273 sql_help.c:1276
+msgid "partition_name"
+msgstr "分区名"
+
+#: sql_help.c:1274 sql_help.c:2242 sql_help.c:2780
+msgid "partition_bound_spec"
+msgstr "分区绑定规范"
+
+#: sql_help.c:1292 sql_help.c:1338 sql_help.c:2794
+msgid "sequence_options"
+msgstr "序列选项"
+
+#: sql_help.c:1294
+msgid "sequence_option"
+msgstr "序列选项"
+
+#: sql_help.c:1306
+msgid "table_constraint_using_index"
+msgstr "table_constraint_using_index(表约束使用索引)"
+
+#: sql_help.c:1314 sql_help.c:1315 sql_help.c:1316 sql_help.c:1317
+msgid "rewrite_rule_name"
+msgstr "重写规则名称"
+
+#: sql_help.c:1328 sql_help.c:2819
+msgid "and partition_bound_spec is:"
+msgstr "并且分区绑定的规范是:"
+
+#: sql_help.c:1329 sql_help.c:1330 sql_help.c:1331 sql_help.c:2820
+#: sql_help.c:2821 sql_help.c:2822
+msgid "partition_bound_expr"
+msgstr "分区_绑定_表达式"
+
+#: sql_help.c:1332 sql_help.c:1333 sql_help.c:2823 sql_help.c:2824
+msgid "numeric_literal"
+msgstr "数字_文字"
+
+#: sql_help.c:1334
+msgid "and column_constraint is:"
+msgstr "并且列的约束是:"
+
+#: sql_help.c:1337 sql_help.c:2249 sql_help.c:2282 sql_help.c:2482
+#: sql_help.c:2792
+msgid "default_expr"
+msgstr "默认_表达式"
+
+#: sql_help.c:1339 sql_help.c:1340 sql_help.c:1349 sql_help.c:1351
+#: sql_help.c:1355 sql_help.c:2795 sql_help.c:2796 sql_help.c:2805
+#: sql_help.c:2807 sql_help.c:2811
+msgid "index_parameters"
+msgstr "索引参数"
+
+#: sql_help.c:1341 sql_help.c:1358 sql_help.c:2797 sql_help.c:2814
+msgid "reftable"
+msgstr "所引用的表"
+
+#: sql_help.c:1342 sql_help.c:1359 sql_help.c:2798 sql_help.c:2815
+msgid "refcolumn"
+msgstr "所引用的列"
+
+#: sql_help.c:1343 sql_help.c:1344 sql_help.c:1360 sql_help.c:1361
+#: sql_help.c:2799 sql_help.c:2800 sql_help.c:2816 sql_help.c:2817
+msgid "referential_action"
+msgstr "参考_行动"
+
+#: sql_help.c:1345 sql_help.c:2251 sql_help.c:2801
+msgid "and table_constraint is:"
+msgstr "表约束是:"
+
+#: sql_help.c:1353 sql_help.c:2809
+msgid "exclude_element"
+msgstr "排除项"
+
+#: sql_help.c:1354 sql_help.c:2810 sql_help.c:4242 sql_help.c:4332
+#: sql_help.c:4481 sql_help.c:4634 sql_help.c:4699
+msgid "operator"
+msgstr "运算子"
+
+#: sql_help.c:1356 sql_help.c:2354 sql_help.c:2812
+msgid "predicate"
+msgstr "述词"
+
+#: sql_help.c:1362
+msgid "and table_constraint_using_index is:"
+msgstr "table_constraint_using_index 是:"
+
+#: sql_help.c:1365 sql_help.c:2825
+msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"
+msgstr "在UNIQUE, PRIMARY KEY和EXCLUDE中的索引参数是:"
+
+#: sql_help.c:1370 sql_help.c:2830
+msgid "exclude_element in an EXCLUDE constraint is:"
+msgstr "在EXCLUDE约束中的排除项是:"
+
+#: sql_help.c:1373 sql_help.c:2349 sql_help.c:2757 sql_help.c:2770
+#: sql_help.c:2784 sql_help.c:2833 sql_help.c:3796
+msgid "opclass"
+msgstr "操作符类型的名称"
+
+#: sql_help.c:1389 sql_help.c:1392 sql_help.c:2868
+msgid "tablespace_option"
+msgstr "表空间_选项"
+
+#: sql_help.c:1413 sql_help.c:1416 sql_help.c:1422 sql_help.c:1426
+msgid "token_type"
+msgstr "符号类型"
+
+#: sql_help.c:1414 sql_help.c:1417
+msgid "dictionary_name"
+msgstr "字典名称"
+
+#: sql_help.c:1419 sql_help.c:1423
+msgid "old_dictionary"
+msgstr "旧的字典"
+
+#: sql_help.c:1420 sql_help.c:1424
+msgid "new_dictionary"
+msgstr "新的字典"
+
+#: sql_help.c:1516 sql_help.c:1529 sql_help.c:1532 sql_help.c:1533
+#: sql_help.c:3019
+msgid "attribute_name"
+msgstr "属性_名称"
+
+#: sql_help.c:1517
+msgid "new_attribute_name"
+msgstr "new_attribute_name(新属性名)"
+
+#: sql_help.c:1523 sql_help.c:1527
+msgid "new_enum_value"
+msgstr "new_enum_value(新枚举名)"
+
+#: sql_help.c:1524
+msgid "neighbor_enum_value"
+msgstr "相邻的枚举值"
+
+#: sql_help.c:1526
+msgid "existing_enum_value"
+msgstr "现有枚举值"
+
+#: sql_help.c:1601 sql_help.c:2234 sql_help.c:2243 sql_help.c:2620
+#: sql_help.c:3097 sql_help.c:3542 sql_help.c:3717 sql_help.c:3752
+#: sql_help.c:4050
+msgid "server_name"
+msgstr "服务器名称"
+
+#: sql_help.c:1629 sql_help.c:1632 sql_help.c:3112
+msgid "view_option_name"
+msgstr "view_option_name(视图选项名)"
+
+#: sql_help.c:1630 sql_help.c:3113
+msgid "view_option_value"
+msgstr "view_option_value(视图选项值)"
+
+#: sql_help.c:1651 sql_help.c:1652 sql_help.c:4607 sql_help.c:4608
+msgid "table_and_columns"
+msgstr "表和列"
+
+#: sql_help.c:1653 sql_help.c:1895 sql_help.c:3589 sql_help.c:4609
+msgid "where option can be one of:"
+msgstr "选项可以是下列内容之一:"
+
+#: sql_help.c:1654 sql_help.c:4618
+msgid "and table_and_columns is:"
+msgstr "并且表和列:"
+
+#: sql_help.c:1670 sql_help.c:4392 sql_help.c:4394 sql_help.c:4418
+msgid "transaction_mode"
+msgstr "事务模式"
+
+#: sql_help.c:1671 sql_help.c:4395 sql_help.c:4419
+msgid "where transaction_mode is one of:"
+msgstr "事务模式可以是下列选项之一:"
+
+#: sql_help.c:1680 sql_help.c:4252 sql_help.c:4261 sql_help.c:4265
+#: sql_help.c:4269 sql_help.c:4272 sql_help.c:4491 sql_help.c:4500
+#: sql_help.c:4504 sql_help.c:4508 sql_help.c:4511 sql_help.c:4709
+#: sql_help.c:4718 sql_help.c:4722 sql_help.c:4726 sql_help.c:4729
+msgid "argument"
+msgstr "参数"
+
+#: sql_help.c:1770
+msgid "relation_name"
+msgstr "relation_name(关系名)"
+
+#: sql_help.c:1775 sql_help.c:3713 sql_help.c:4046
+msgid "domain_name"
+msgstr "域_名称"
+
+#: sql_help.c:1797
+msgid "policy_name"
+msgstr "policy_name"
+
+#: sql_help.c:1810
+msgid "rule_name"
+msgstr "规则_名称"
+
+#: sql_help.c:1829
+msgid "text"
+msgstr "文本"
+
+#: sql_help.c:1854 sql_help.c:3896 sql_help.c:4084
+msgid "transaction_id"
+msgstr "事务_ID"
+
+#: sql_help.c:1885 sql_help.c:1892 sql_help.c:3822
+msgid "filename"
+msgstr "文件名"
+
+#: sql_help.c:1886 sql_help.c:1893 sql_help.c:2560 sql_help.c:2561
+#: sql_help.c:2562
+msgid "command"
+msgstr "命令"
+
+#: sql_help.c:1888 sql_help.c:2559 sql_help.c:2971 sql_help.c:3148
+#: sql_help.c:3806 sql_help.c:4235 sql_help.c:4237 sql_help.c:4325
+#: sql_help.c:4327 sql_help.c:4474 sql_help.c:4476 sql_help.c:4579
+#: sql_help.c:4692 sql_help.c:4694
+msgid "condition"
+msgstr "条件"
+
+#: sql_help.c:1891 sql_help.c:2388 sql_help.c:2854 sql_help.c:3114
+#: sql_help.c:3132 sql_help.c:3787
+msgid "query"
+msgstr "查询"
+
+#: sql_help.c:1896
+msgid "format_name"
+msgstr "格式_名称"
+
+#: sql_help.c:1897 sql_help.c:1900 sql_help.c:2079 sql_help.c:3590
+#: sql_help.c:3591 sql_help.c:3592 sql_help.c:3593 sql_help.c:3594
+#: sql_help.c:3595 sql_help.c:3596 sql_help.c:4610 sql_help.c:4611
+#: sql_help.c:4612 sql_help.c:4613 sql_help.c:4614 sql_help.c:4615
+#: sql_help.c:4616 sql_help.c:4617
+msgid "boolean"
+msgstr "布尔"
+
+#: sql_help.c:1898
+msgid "delimiter_character"
+msgstr "分隔字符"
+
+#: sql_help.c:1899
+msgid "null_string"
+msgstr "空字符串"
+
+#: sql_help.c:1901
+msgid "quote_character"
+msgstr "引用字符"
+
+#: sql_help.c:1902
+msgid "escape_character"
+msgstr "转义字符"
+
+#: sql_help.c:1906
+msgid "encoding_name"
+msgstr "encoding_name(编码名)"
+
+#: sql_help.c:1917
+msgid "access_method_type"
+msgstr "access_method_type"
+
+#: sql_help.c:1988 sql_help.c:2007 sql_help.c:2010
+msgid "arg_data_type"
+msgstr "arg_data_type"
+
+#: sql_help.c:1989 sql_help.c:2011 sql_help.c:2019
+msgid "sfunc"
+msgstr "状态转换函数名称"
+
+#: sql_help.c:1990 sql_help.c:2012 sql_help.c:2020
+msgid "state_data_type"
+msgstr "状态值的数据类型"
+
+#: sql_help.c:1991 sql_help.c:2013 sql_help.c:2021
+msgid "state_data_size"
+msgstr "state_data_size"
+
+#: sql_help.c:1992 sql_help.c:2014 sql_help.c:2022
+msgid "ffunc"
+msgstr "计算最终结果集的函数名称"
+
+#: sql_help.c:1993 sql_help.c:2023
+msgid "combinefunc"
+msgstr "combinefunc"
+
+#: sql_help.c:1994 sql_help.c:2024
+msgid "serialfunc"
+msgstr "serialfunc"
+
+#: sql_help.c:1995 sql_help.c:2025
+msgid "deserialfunc"
+msgstr "deserialfunc"
+
+#: sql_help.c:1996 sql_help.c:2015 sql_help.c:2026
+msgid "initial_condition"
+msgstr "初始条件"
+
+#: sql_help.c:1997 sql_help.c:2027
+msgid "msfunc"
+msgstr "msfunc"
+
+#: sql_help.c:1998 sql_help.c:2028
+msgid "minvfunc"
+msgstr "minvfunc"
+
+#: sql_help.c:1999 sql_help.c:2029
+msgid "mstate_data_type"
+msgstr "mstate_data_type"
+
+#: sql_help.c:2000 sql_help.c:2030
+msgid "mstate_data_size"
+msgstr "mstate_data_size"
+
+#: sql_help.c:2001 sql_help.c:2031
+msgid "mffunc"
+msgstr "mffunc"
+
+#: sql_help.c:2002 sql_help.c:2032
+msgid "minitial_condition"
+msgstr "minitial_condition"
+
+#: sql_help.c:2003 sql_help.c:2033
+msgid "sort_operator"
+msgstr "排序_操作符"
+
+#: sql_help.c:2016
+msgid "or the old syntax"
+msgstr "或者是旧的语法"
+
+#: sql_help.c:2018
+msgid "base_type"
+msgstr "基础_类型"
+
+#: sql_help.c:2075
+msgid "locale"
+msgstr "本地化语言"
+
+#: sql_help.c:2076 sql_help.c:2115
+msgid "lc_collate"
+msgstr "排序规则"
+
+#: sql_help.c:2077 sql_help.c:2116
+msgid "lc_ctype"
+msgstr "字符分类"
+
+#: sql_help.c:2078 sql_help.c:4137
+msgid "provider"
+msgstr "provider(提供者)"
+
+#: sql_help.c:2080 sql_help.c:2171
+msgid "version"
+msgstr "version(版本)"
+
+#: sql_help.c:2082
+msgid "existing_collation"
+msgstr "existing_collation(当前的本地化语言)"
+
+#: sql_help.c:2092
+msgid "source_encoding"
+msgstr "源_编码"
+
+#: sql_help.c:2093
+msgid "dest_encoding"
+msgstr "目的_编码"
+
+#: sql_help.c:2113 sql_help.c:2894
+msgid "template"
+msgstr "模版"
+
+#: sql_help.c:2114
+msgid "encoding"
+msgstr "字符集编码"
+
+#: sql_help.c:2140
+msgid "constraint"
+msgstr "约束"
+
+#: sql_help.c:2141
+msgid "where constraint is:"
+msgstr "约束是:"
+
+#: sql_help.c:2155 sql_help.c:2557 sql_help.c:2967
+msgid "event"
+msgstr "事件"
+
+#: sql_help.c:2156
+msgid "filter_variable"
+msgstr "过滤器变量"
+
+#: sql_help.c:2172
+msgid "old_version"
+msgstr "老版本"
+
+#: sql_help.c:2246 sql_help.c:2789
+msgid "where column_constraint is:"
+msgstr "列的约束是:"
+
+#: sql_help.c:2250 sql_help.c:2793
+msgid "generation_expr"
+msgstr "生成表_达式"
+
+#: sql_help.c:2283
+msgid "rettype"
+msgstr "返回类型"
+
+#: sql_help.c:2285
+msgid "column_type"
+msgstr "列的类型"
+
+#: sql_help.c:2294 sql_help.c:2488
+msgid "definition"
+msgstr "定义"
+
+#: sql_help.c:2295 sql_help.c:2489
+msgid "obj_file"
+msgstr "目标文件"
+
+#: sql_help.c:2296 sql_help.c:2490
+msgid "link_symbol"
+msgstr "链接_符号"
+
+#: sql_help.c:2330 sql_help.c:2542 sql_help.c:3086
+msgid "uid"
+msgstr "uid"
+
+#: sql_help.c:2345 sql_help.c:2384 sql_help.c:2758 sql_help.c:2771
+#: sql_help.c:2785 sql_help.c:2850
+msgid "method"
+msgstr "方法"
+
+#: sql_help.c:2366
+msgid "call_handler"
+msgstr "调用函数"
+
+#: sql_help.c:2367
+msgid "inline_handler"
+msgstr "匿名代码块"
+
+#: sql_help.c:2368
+msgid "valfunction"
+msgstr "验证函数"
+
+#: sql_help.c:2406
+msgid "com_op"
+msgstr "交换操作符"
+
+#: sql_help.c:2407
+msgid "neg_op"
+msgstr "取负操作符"
+
+#: sql_help.c:2425
+msgid "family_name"
+msgstr "操作符群的名称"
+
+#: sql_help.c:2436
+msgid "storage_type"
+msgstr "存储类型"
+
+#: sql_help.c:2563 sql_help.c:2974
+msgid "where event can be one of:"
+msgstr "事件可以下述之一:"
+
+#: sql_help.c:2582 sql_help.c:2584
+msgid "schema_element"
+msgstr "模式中对象"
+
+#: sql_help.c:2621
+msgid "server_type"
+msgstr "服务器类型"
+
+#: sql_help.c:2622
+msgid "server_version"
+msgstr "服务器版本"
+
+#: sql_help.c:2623 sql_help.c:3715 sql_help.c:4048
+msgid "fdw_name"
+msgstr "外部数据封装器的名称"
+
+#: sql_help.c:2636
+msgid "statistics_name"
+msgstr "统计信息_名称"
+
+#: sql_help.c:2637
+msgid "statistics_kind"
+msgstr "统计信息_方式"
+
+#: sql_help.c:2651
+msgid "subscription_name"
+msgstr "订阅_名称"
+
+#: sql_help.c:2751
+msgid "source_table"
+msgstr "源表"
+
+#: sql_help.c:2752
+msgid "like_option"
+msgstr "like选项"
+
+#: sql_help.c:2818
+msgid "and like_option is:"
+msgstr "like_选项是"
+
+#: sql_help.c:2867
+msgid "directory"
+msgstr "目录"
+
+#: sql_help.c:2881
+msgid "parser_name"
+msgstr "解析器名称 "
+
+#: sql_help.c:2882
+msgid "source_config"
+msgstr "已存在的文本搜索配置名称"
+
+#: sql_help.c:2911
+msgid "start_function"
+msgstr "启动_函数"
+
+#: sql_help.c:2912
+msgid "gettoken_function"
+msgstr "获取下一个符号函数的名称"
+
+#: sql_help.c:2913
+msgid "end_function"
+msgstr "结束_函数"
+
+#: sql_help.c:2914
+msgid "lextypes_function"
+msgstr "语义类型_函数"
+
+#: sql_help.c:2915
+msgid "headline_function"
+msgstr "标题_函数"
+
+#: sql_help.c:2927
+msgid "init_function"
+msgstr "初始化_函数"
+
+#: sql_help.c:2928
+msgid "lexize_function"
+msgstr "LEXIZE函数"
+
+#: sql_help.c:2941
+msgid "from_sql_function_name"
+msgstr "from_sql_function_name"
+
+#: sql_help.c:2943
+msgid "to_sql_function_name"
+msgstr "to_sql_function_name"
+
+#: sql_help.c:2969
+msgid "referenced_table_name"
+msgstr "被引用表的名称"
+
+#: sql_help.c:2970
+msgid "transition_relation_name"
+msgstr "transition_relation_name(转换关系名)"
+
+#: sql_help.c:2973
+msgid "arguments"
+msgstr "参数"
+
+#: sql_help.c:3023 sql_help.c:4170
+msgid "label"
+msgstr "标签"
+
+#: sql_help.c:3025
+msgid "subtype"
+msgstr "子类型"
+
+#: sql_help.c:3026
+msgid "subtype_operator_class"
+msgstr "subtype_operator_class(子类型_操作符_类)"
+
+#: sql_help.c:3028
+msgid "canonical_function"
+msgstr "标准_函数"
+
+#: sql_help.c:3029
+msgid "subtype_diff_function"
+msgstr "subtype_diff_function(子类型_区分_函数)"
+
+#: sql_help.c:3031
+msgid "input_function"
+msgstr "输入_函数"
+
+#: sql_help.c:3032
+msgid "output_function"
+msgstr "输出_函数"
+
+#: sql_help.c:3033
+msgid "receive_function"
+msgstr "接收_函数"
+
+#: sql_help.c:3034
+msgid "send_function"
+msgstr "发送_函数"
+
+#: sql_help.c:3035
+msgid "type_modifier_input_function"
+msgstr "类型修改器数组输入函数名称"
+
+#: sql_help.c:3036
+msgid "type_modifier_output_function"
+msgstr "类型修改器输出函数名称"
+
+#: sql_help.c:3037
+msgid "analyze_function"
+msgstr "分析_函数"
+
+#: sql_help.c:3038
+msgid "internallength"
+msgstr "内部长度"
+
+#: sql_help.c:3039
+msgid "alignment"
+msgstr "顺序排列(alignment)"
+
+#: sql_help.c:3040
+msgid "storage"
+msgstr "存储"
+
+#: sql_help.c:3041
+msgid "like_type"
+msgstr "LIKE类型(like_type)"
+
+#: sql_help.c:3042
+msgid "category"
+msgstr "类型"
+
+#: sql_help.c:3043
+msgid "preferred"
+msgstr "优先"
+
+#: sql_help.c:3044
+msgid "default"
+msgstr "默认"
+
+#: sql_help.c:3045
+msgid "element"
+msgstr "成员项"
+
+#: sql_help.c:3046
+msgid "delimiter"
+msgstr "分隔符"
+
+#: sql_help.c:3047
+msgid "collatable"
+msgstr "要校对的"
+
+#: sql_help.c:3144 sql_help.c:3782 sql_help.c:4230 sql_help.c:4319
+#: sql_help.c:4469 sql_help.c:4569 sql_help.c:4687
+msgid "with_query"
+msgstr "with查询语句(with_query)"
+
+#: sql_help.c:3146 sql_help.c:3784 sql_help.c:4249 sql_help.c:4255
+#: sql_help.c:4258 sql_help.c:4262 sql_help.c:4266 sql_help.c:4274
+#: sql_help.c:4488 sql_help.c:4494 sql_help.c:4497 sql_help.c:4501
+#: sql_help.c:4505 sql_help.c:4513 sql_help.c:4571 sql_help.c:4706
+#: sql_help.c:4712 sql_help.c:4715 sql_help.c:4719 sql_help.c:4723
+#: sql_help.c:4731
+msgid "alias"
+msgstr "别名"
+
+#: sql_help.c:3147
+msgid "using_list"
+msgstr "USING列表(using_list)"
+
+#: sql_help.c:3149 sql_help.c:3622 sql_help.c:3863 sql_help.c:4580
+msgid "cursor_name"
+msgstr "游标名称"
+
+#: sql_help.c:3150 sql_help.c:3790 sql_help.c:4581
+msgid "output_expression"
+msgstr "输出表达式"
+
+#: sql_help.c:3151 sql_help.c:3791 sql_help.c:4233 sql_help.c:4322
+#: sql_help.c:4472 sql_help.c:4582 sql_help.c:4690
+msgid "output_name"
+msgstr "输出名称"
+
+#: sql_help.c:3167
+msgid "code"
+msgstr "编码"
+
+#: sql_help.c:3566
+msgid "parameter"
+msgstr "参数"
+
+#: sql_help.c:3587 sql_help.c:3588 sql_help.c:3888
+msgid "statement"
+msgstr "语句"
+
+#: sql_help.c:3621 sql_help.c:3862
+msgid "direction"
+msgstr "方向"
+
+#: sql_help.c:3623 sql_help.c:3864
+msgid "where direction can be empty or one of:"
+msgstr "方向可以为空或者是下列选项之一:"
+
+#: sql_help.c:3624 sql_help.c:3625 sql_help.c:3626 sql_help.c:3627
+#: sql_help.c:3628 sql_help.c:3865 sql_help.c:3866 sql_help.c:3867
+#: sql_help.c:3868 sql_help.c:3869 sql_help.c:4243 sql_help.c:4245
+#: sql_help.c:4333 sql_help.c:4335 sql_help.c:4482 sql_help.c:4484
+#: sql_help.c:4635 sql_help.c:4637 sql_help.c:4700 sql_help.c:4702
+msgid "count"
+msgstr "查询所用返回记录的最大数量"
+
+#: sql_help.c:3708 sql_help.c:4041
+msgid "sequence_name"
+msgstr "序列名称"
+
+#: sql_help.c:3721 sql_help.c:4054
+msgid "arg_name"
+msgstr "参数名称"
+
+#: sql_help.c:3722 sql_help.c:4055
+msgid "arg_type"
+msgstr "参数类型"
+
+#: sql_help.c:3727 sql_help.c:4060
+msgid "loid"
+msgstr "loid"
+
+#: sql_help.c:3750
+msgid "remote_schema"
+msgstr "remote_schema"
+
+#: sql_help.c:3753
+msgid "local_schema"
+msgstr "local_schema"
+
+#: sql_help.c:3788
+msgid "conflict_target"
+msgstr "冲突目标"
+
+#: sql_help.c:3789
+msgid "conflict_action"
+msgstr "冲突行动"
+
+#: sql_help.c:3792
+msgid "where conflict_target can be one of:"
+msgstr "这里conflict_target可以是下列之一:"
+
+#: sql_help.c:3793
+msgid "index_column_name"
+msgstr "索引列名称"
+
+#: sql_help.c:3794
+msgid "index_expression"
+msgstr "索引表达式"
+
+#: sql_help.c:3797
+msgid "index_predicate"
+msgstr "index_predicate"
+
+#: sql_help.c:3799
+msgid "and conflict_action is one of:"
+msgstr "并且conflict_action是下列之一:"
+
+#: sql_help.c:3805 sql_help.c:4577
+msgid "sub-SELECT"
+msgstr "sub-SELECT"
+
+#: sql_help.c:3814 sql_help.c:3877 sql_help.c:4553
+msgid "channel"
+msgstr "通道"
+
+#: sql_help.c:3836
+msgid "lockmode"
+msgstr "锁模式"
+
+#: sql_help.c:3837
+msgid "where lockmode is one of:"
+msgstr "锁模式可以是下列选项之一:"
+
+#: sql_help.c:3878
+msgid "payload"
+msgstr "消息中负载流量(payload)"
+
+#: sql_help.c:3905
+msgid "old_role"
+msgstr "旧的角色"
+
+#: sql_help.c:3906
+msgid "new_role"
+msgstr "新的角色"
+
+#: sql_help.c:3931 sql_help.c:4092 sql_help.c:4100
+msgid "savepoint_name"
+msgstr "保存点名称"
+
+#: sql_help.c:4234 sql_help.c:4276 sql_help.c:4278 sql_help.c:4324
+#: sql_help.c:4473 sql_help.c:4515 sql_help.c:4517 sql_help.c:4691
+#: sql_help.c:4733 sql_help.c:4735
+msgid "from_item"
+msgstr "from列表中项"
+
+#: sql_help.c:4236 sql_help.c:4288 sql_help.c:4475 sql_help.c:4527
+#: sql_help.c:4693 sql_help.c:4745
+msgid "grouping_element"
+msgstr "grouping_element"
+
+#: sql_help.c:4238 sql_help.c:4328 sql_help.c:4477 sql_help.c:4695
+msgid "window_name"
+msgstr "窗口名称"
+
+#: sql_help.c:4239 sql_help.c:4329 sql_help.c:4478 sql_help.c:4696
+msgid "window_definition"
+msgstr "窗口定义"
+
+#: sql_help.c:4240 sql_help.c:4254 sql_help.c:4292 sql_help.c:4330
+#: sql_help.c:4479 sql_help.c:4493 sql_help.c:4531 sql_help.c:4697
+#: sql_help.c:4711 sql_help.c:4749
+msgid "select"
+msgstr "查询"
+
+#: sql_help.c:4247 sql_help.c:4486 sql_help.c:4704
+msgid "where from_item can be one of:"
+msgstr "from 列表中的项可以是下列内容之一"
+
+#: sql_help.c:4250 sql_help.c:4256 sql_help.c:4259 sql_help.c:4263
+#: sql_help.c:4275 sql_help.c:4489 sql_help.c:4495 sql_help.c:4498
+#: sql_help.c:4502 sql_help.c:4514 sql_help.c:4707 sql_help.c:4713
+#: sql_help.c:4716 sql_help.c:4720 sql_help.c:4732
+msgid "column_alias"
+msgstr "列的别名"
+
+#: sql_help.c:4251 sql_help.c:4490 sql_help.c:4708
+msgid "sampling_method"
+msgstr "sampling_method"
+
+#: sql_help.c:4253 sql_help.c:4492 sql_help.c:4710
+msgid "seed"
+msgstr "种子"
+
+#: sql_help.c:4257 sql_help.c:4290 sql_help.c:4496 sql_help.c:4529
+#: sql_help.c:4714 sql_help.c:4747
+msgid "with_query_name"
+msgstr "WITH查询语句名称(with_query_name)"
+
+#: sql_help.c:4267 sql_help.c:4270 sql_help.c:4273 sql_help.c:4506
+#: sql_help.c:4509 sql_help.c:4512 sql_help.c:4724 sql_help.c:4727
+#: sql_help.c:4730
+msgid "column_definition"
+msgstr "列定义"
+
+#: sql_help.c:4277 sql_help.c:4516 sql_help.c:4734
+msgid "join_type"
+msgstr "连接操作的类型"
+
+#: sql_help.c:4279 sql_help.c:4518 sql_help.c:4736
+msgid "join_condition"
+msgstr "用连接操作的条件"
+
+#: sql_help.c:4280 sql_help.c:4519 sql_help.c:4737
+msgid "join_column"
+msgstr "用于连接操作的列"
+
+#: sql_help.c:4281 sql_help.c:4520 sql_help.c:4738
+msgid "and grouping_element can be one of:"
+msgstr "并且grouping_element可以是下列之一:"
+
+#: sql_help.c:4289 sql_help.c:4528 sql_help.c:4746
+msgid "and with_query is:"
+msgstr "with查询语句是:"
+
+#: sql_help.c:4293 sql_help.c:4532 sql_help.c:4750
+msgid "values"
+msgstr "值"
+
+#: sql_help.c:4294 sql_help.c:4533 sql_help.c:4751
+msgid "insert"
+msgstr "insert"
+
+#: sql_help.c:4295 sql_help.c:4534 sql_help.c:4752
+msgid "update"
+msgstr "update"
+
+#: sql_help.c:4296 sql_help.c:4535 sql_help.c:4753
+msgid "delete"
+msgstr "delete"
+
+#: sql_help.c:4323
+msgid "new_table"
+msgstr "新的表"
+
+#: sql_help.c:4348
+msgid "timezone"
+msgstr "时区"
+
+#: sql_help.c:4393
+msgid "snapshot_id"
+msgstr "快照id"
+
+#: sql_help.c:4578
+msgid "from_list"
+msgstr "from列表(from_list)"
+
+#: sql_help.c:4633
+msgid "sort_expression"
+msgstr "排序表达式"
+
+#: sql_help.c:4760 sql_help.c:5738
+msgid "abort the current transaction"
+msgstr "中止目前的事务"
+
+#: sql_help.c:4766
+msgid "change the definition of an aggregate function"
+msgstr "更改聚集函数的定义"
+
+#: sql_help.c:4772
+msgid "change the definition of a collation"
+msgstr "更改校对规则的定义"
+
+#: sql_help.c:4778
+msgid "change the definition of a conversion"
+msgstr "更改一个字符编码转换的定义"
+
+#: sql_help.c:4784
+msgid "change a database"
+msgstr "更改一个数据库"
+
+#: sql_help.c:4790
+msgid "define default access privileges"
+msgstr "定义默认的访问权限"
+
+#: sql_help.c:4796
+msgid "change the definition of a domain"
+msgstr "更改共同值域的定义"
+
+#: sql_help.c:4802
+msgid "change the definition of an event trigger"
+msgstr "更改事件触发器的定义"
+
+#: sql_help.c:4808
+msgid "change the definition of an extension"
+msgstr "更改扩展的定义"
+
+#: sql_help.c:4814
+msgid "change the definition of a foreign-data wrapper"
+msgstr "更改外部数据封装器的定义"
+
+#: sql_help.c:4820
+msgid "change the definition of a foreign table"
+msgstr "更改外部表的定义"
+
+#: sql_help.c:4826
+msgid "change the definition of a function"
+msgstr "更改函数的定义"
+
+#: sql_help.c:4832
+msgid "change role name or membership"
+msgstr "更改角色名称或成员状态"
+
+#: sql_help.c:4838
+msgid "change the definition of an index"
+msgstr "更改索引的定义"
+
+#: sql_help.c:4844
+msgid "change the definition of a procedural language"
+msgstr "更改程序语言的定义"
+
+#: sql_help.c:4850
+msgid "change the definition of a large object"
+msgstr "更改大对象的定义"
+
+#: sql_help.c:4856
+msgid "change the definition of a materialized view"
+msgstr "更改物化视图的定义"
+
+#: sql_help.c:4862
+msgid "change the definition of an operator"
+msgstr "更改运算子的定义"
+
+#: sql_help.c:4868
+msgid "change the definition of an operator class"
+msgstr "更改运算子类别的定义"
+
+#: sql_help.c:4874
+msgid "change the definition of an operator family"
+msgstr "更改一个运算子家族的识别"
+
+#: sql_help.c:4880
+msgid "change the definition of a row level security policy"
+msgstr "更改一条行级安全性策略的定义"
+
+#: sql_help.c:4886
+msgid "change the definition of a procedure"
+msgstr "更改程序的定义"
+
+#: sql_help.c:4892
+msgid "change the definition of a publication"
+msgstr "更改发布的定义"
+
+#: sql_help.c:4898 sql_help.c:5000
+msgid "change a database role"
+msgstr "更改数据库角色"
+
+#: sql_help.c:4904
+msgid "change the definition of a routine"
+msgstr "更改程序的定义"
+
+#: sql_help.c:4910
+msgid "change the definition of a rule"
+msgstr "更改规则的定义"
+
+#: sql_help.c:4916
+msgid "change the definition of a schema"
+msgstr "更改架构模式的定义"
+
+#: sql_help.c:4922
+msgid "change the definition of a sequence generator"
+msgstr "更改序列数产生器的定义"
+
+#: sql_help.c:4928
+msgid "change the definition of a foreign server"
+msgstr "更改外部服务器的定义"
+
+#: sql_help.c:4934
+msgid "change the definition of an extended statistics object"
+msgstr "更改扩展统计信息对象的定义"
+
+#: sql_help.c:4940
+msgid "change the definition of a subscription"
+msgstr "更改订阅的定义"
+
+#: sql_help.c:4946
+msgid "change a server configuration parameter"
+msgstr "更改服务器的配置参数"
+
+#: sql_help.c:4952
+msgid "change the definition of a table"
+msgstr "更改数据表的定义"
+
+#: sql_help.c:4958
+msgid "change the definition of a tablespace"
+msgstr "更改表空间的定义"
+
+#: sql_help.c:4964
+msgid "change the definition of a text search configuration"
+msgstr "更改一个文本搜索组态的定义"
+
+#: sql_help.c:4970
+msgid "change the definition of a text search dictionary"
+msgstr "更改一个文本搜索字典的定义"
+
+#: sql_help.c:4976
+msgid "change the definition of a text search parser"
+msgstr "更改一个文本搜索剖析器的定义"
+
+#: sql_help.c:4982
+msgid "change the definition of a text search template"
+msgstr "更改一个文本搜索模版的定义"
+
+#: sql_help.c:4988
+msgid "change the definition of a trigger"
+msgstr "更改触发器的定义"
+
+#: sql_help.c:4994
+msgid "change the definition of a type"
+msgstr "更改数据类型的定义"
+
+#: sql_help.c:5006
+msgid "change the definition of a user mapping"
+msgstr "更改用户映射的定义"
+
+#: sql_help.c:5012
+msgid "change the definition of a view"
+msgstr "更改视图的定义"
+
+#: sql_help.c:5018
+msgid "collect statistics about a database"
+msgstr "收集数据库的统计信息"
+
+#: sql_help.c:5024 sql_help.c:5816
+msgid "start a transaction block"
+msgstr "开始一个事务区块"
+
+#: sql_help.c:5030
+msgid "invoke a procedure"
+msgstr "调用过程"
+
+#: sql_help.c:5036
+msgid "force a write-ahead log checkpoint"
+msgstr "强制一个预写日志检查点"
+
+#: sql_help.c:5042
+msgid "close a cursor"
+msgstr "关闭游标"
+
+#: sql_help.c:5048
+msgid "cluster a table according to an index"
+msgstr "按照索引进行表的聚集"
+
+#: sql_help.c:5054
+msgid "define or change the comment of an object"
+msgstr "定义或更改一个对象的注解"
+
+#: sql_help.c:5060 sql_help.c:5618
+msgid "commit the current transaction"
+msgstr "确认目前的事务"
+
+#: sql_help.c:5066
+msgid "commit a transaction that was earlier prepared for two-phase commit"
+msgstr "提交一项事务这是两阶段提交的先前准备"
+
+#: sql_help.c:5072
+msgid "copy data between a file and a table"
+msgstr "在档案和数据表间复制数据"
+
+#: sql_help.c:5078
+msgid "define a new access method"
+msgstr "定义新的访问方法"
+
+#: sql_help.c:5084
+msgid "define a new aggregate function"
+msgstr "定义一个新的聚集函数"
+
+#: sql_help.c:5090
+msgid "define a new cast"
+msgstr "建立新的类型转换"
+
+#: sql_help.c:5096
+msgid "define a new collation"
+msgstr "建立新的校对规则"
+
+#: sql_help.c:5102
+msgid "define a new encoding conversion"
+msgstr "定义一个新的字元编码转换"
+
+#: sql_help.c:5108
+msgid "create a new database"
+msgstr "建立新的数据库"
+
+#: sql_help.c:5114
+msgid "define a new domain"
+msgstr "建立新的共同值域"
+
+#: sql_help.c:5120
+msgid "define a new event trigger"
+msgstr "定义新的事件触发器"
+
+#: sql_help.c:5126
+msgid "install an extension"
+msgstr "安装一个扩展"
+
+#: sql_help.c:5132
+msgid "define a new foreign-data wrapper"
+msgstr "定义一个新的外部数据封装器"
+
+#: sql_help.c:5138
+msgid "define a new foreign table"
+msgstr "建立新的外部表"
+
+#: sql_help.c:5144
+msgid "define a new function"
+msgstr "建立新的函数"
+
+#: sql_help.c:5150 sql_help.c:5210 sql_help.c:5312
+msgid "define a new database role"
+msgstr "定义一个新数据库角色"
+
+#: sql_help.c:5156
+msgid "define a new index"
+msgstr "建立新的索引"
+
+#: sql_help.c:5162
+msgid "define a new procedural language"
+msgstr "建立新的程序语言"
+
+#: sql_help.c:5168
+msgid "define a new materialized view"
+msgstr "建立新的物化视图"
+
+#: sql_help.c:5174
+msgid "define a new operator"
+msgstr "建立新的运算子"
+
+#: sql_help.c:5180
+msgid "define a new operator class"
+msgstr "建立新的运算子类别"
+
+#: sql_help.c:5186
+msgid "define a new operator family"
+msgstr "定义一个新的运算子家族"
+
+#: sql_help.c:5192
+msgid "define a new row level security policy for a table"
+msgstr "为一个表定义一条新的行级安全性策略"
+
+#: sql_help.c:5198
+msgid "define a new procedure"
+msgstr "建立新的程序"
+
+#: sql_help.c:5204
+msgid "define a new publication"
+msgstr "建立新的发布"
+
+#: sql_help.c:5216
+msgid "define a new rewrite rule"
+msgstr "建立新的重写规则"
+
+#: sql_help.c:5222
+msgid "define a new schema"
+msgstr "建立新的架构模式"
+
+#: sql_help.c:5228
+msgid "define a new sequence generator"
+msgstr "建立新的序列数产生器"
+
+#: sql_help.c:5234
+msgid "define a new foreign server"
+msgstr "建立新的触发器"
+
+#: sql_help.c:5240
+msgid "define extended statistics"
+msgstr "建立新的扩展统计"
+
+#: sql_help.c:5246
+msgid "define a new subscription"
+msgstr "建立新的订阅"
+
+#: sql_help.c:5252
+msgid "define a new table"
+msgstr "建立新的数据表"
+
+#: sql_help.c:5258 sql_help.c:5774
+msgid "define a new table from the results of a query"
+msgstr "以查询结果建立新的数据表"
+
+#: sql_help.c:5264
+msgid "define a new tablespace"
+msgstr "建立新的表空间"
+
+#: sql_help.c:5270
+msgid "define a new text search configuration"
+msgstr "定义一个新文本搜索组态"
+
+#: sql_help.c:5276
+msgid "define a new text search dictionary"
+msgstr "定义一个新文本搜索字典"
+
+#: sql_help.c:5282
+msgid "define a new text search parser"
+msgstr "定义一个新文本搜索剖析器"
+
+#: sql_help.c:5288
+msgid "define a new text search template"
+msgstr "定义一个新文本搜索模版"
+
+#: sql_help.c:5294
+msgid "define a new transform"
+msgstr "定义一个新的转换"
+
+#: sql_help.c:5300
+msgid "define a new trigger"
+msgstr "建立新的触发器"
+
+#: sql_help.c:5306
+msgid "define a new data type"
+msgstr "建立新的数据类型"
+
+#: sql_help.c:5318
+msgid "define a new mapping of a user to a foreign server"
+msgstr "将用户的新映射定义到一个外部服务器"
+
+#: sql_help.c:5324
+msgid "define a new view"
+msgstr "建立新的视图"
+
+#: sql_help.c:5330
+msgid "deallocate a prepared statement"
+msgstr "释放一个已预备好的叙述区块"
+
+#: sql_help.c:5336
+msgid "define a cursor"
+msgstr "建立一个 cursor"
+
+#: sql_help.c:5342
+msgid "delete rows of a table"
+msgstr "删除数据表中的数据列"
+
+#: sql_help.c:5348
+msgid "discard session state"
+msgstr "抛弃 session 状态"
+
+#: sql_help.c:5354
+msgid "execute an anonymous code block"
+msgstr "执行一个匿名代码块"
+
+#: sql_help.c:5360
+msgid "remove an access method"
+msgstr "移除一种访问方法"
+
+#: sql_help.c:5366
+msgid "remove an aggregate function"
+msgstr "移除一个聚集函数"
+
+#: sql_help.c:5372
+msgid "remove a cast"
+msgstr "移除一个类型转换"
+
+#: sql_help.c:5378
+msgid "remove a collation"
+msgstr "移除一个校对规则"
+
+#: sql_help.c:5384
+msgid "remove a conversion"
+msgstr "移除一个字元编码转换"
+
+#: sql_help.c:5390
+msgid "remove a database"
+msgstr "移除数据库"
+
+#: sql_help.c:5396
+msgid "remove a domain"
+msgstr "移除一个共同值域"
+
+#: sql_help.c:5402
+msgid "remove an event trigger"
+msgstr "移除事件触发器"
+
+#: sql_help.c:5408
+msgid "remove an extension"
+msgstr "移除一个扩展"
+
+#: sql_help.c:5414
+msgid "remove a foreign-data wrapper"
+msgstr "删除一个外部数据封装器"
+
+#: sql_help.c:5420
+msgid "remove a foreign table"
+msgstr "移除外部引用表"
+
+#: sql_help.c:5426
+msgid "remove a function"
+msgstr "移除函数"
+
+#: sql_help.c:5432 sql_help.c:5498 sql_help.c:5600
+msgid "remove a database role"
+msgstr "移除一个数据库成员"
+
+#: sql_help.c:5438
+msgid "remove an index"
+msgstr "移除一个索引"
+
+#: sql_help.c:5444
+msgid "remove a procedural language"
+msgstr "移除一个程序语言"
+
+#: sql_help.c:5450
+msgid "remove a materialized view"
+msgstr "移除一个物化视图"
+
+#: sql_help.c:5456
+msgid "remove an operator"
+msgstr "移除运算子"
+
+#: sql_help.c:5462
+msgid "remove an operator class"
+msgstr "移除一个运算子类别"
+
+#: sql_help.c:5468
+msgid "remove an operator family"
+msgstr "移除一个运算子家族"
+
+#: sql_help.c:5474
+msgid "remove database objects owned by a database role"
+msgstr "依照一个数据库角色拥有的数据库对象来移除"
+
+#: sql_help.c:5480
+msgid "remove a row level security policy from a table"
+msgstr "从一个表移除一条行级安全性策略"
+
+#: sql_help.c:5486
+msgid "remove a procedure"
+msgstr "移除一个程序"
+
+#: sql_help.c:5492
+msgid "remove a publication"
+msgstr "移除一个发布"
+
+#: sql_help.c:5504
+msgid "remove a routine"
+msgstr "移除程序"
+
+#: sql_help.c:5510
+msgid "remove a rewrite rule"
+msgstr "移除一个重写规则"
+
+#: sql_help.c:5516
+msgid "remove a schema"
+msgstr "移除一个模式"
+
+#: sql_help.c:5522
+msgid "remove a sequence"
+msgstr "移除序列"
+
+#: sql_help.c:5528
+msgid "remove a foreign server descriptor"
+msgstr "删除一个外部服务器描述符"
+
+#: sql_help.c:5534
+msgid "remove extended statistics"
+msgstr "移除一个扩展统计"
+
+#: sql_help.c:5540
+msgid "remove a subscription"
+msgstr "移除一个订阅"
+
+#: sql_help.c:5546
+msgid "remove a table"
+msgstr "移除数据表"
+
+#: sql_help.c:5552
+msgid "remove a tablespace"
+msgstr "移除一个表空间"
+
+#: sql_help.c:5558
+msgid "remove a text search configuration"
+msgstr "移除一个文本搜索配置"
+
+#: sql_help.c:5564
+msgid "remove a text search dictionary"
+msgstr "移除一个文本搜索字典"
+
+#: sql_help.c:5570
+msgid "remove a text search parser"
+msgstr "移除一个文本搜索剖析器"
+
+#: sql_help.c:5576
+msgid "remove a text search template"
+msgstr "移除一个文本搜索模版"
+
+#: sql_help.c:5582
+msgid "remove a transform"
+msgstr "移除一个转换"
+
+#: sql_help.c:5588
+msgid "remove a trigger"
+msgstr "移除触发器"
+
+#: sql_help.c:5594
+msgid "remove a data type"
+msgstr "移除数据类型"
+
+#: sql_help.c:5606
+msgid "remove a user mapping for a foreign server"
+msgstr "为外部服务器删除用户映射"
+
+#: sql_help.c:5612
+msgid "remove a view"
+msgstr "移除一个视图"
+
+#: sql_help.c:5624
+msgid "execute a prepared statement"
+msgstr "执行一个已准备好的语句块"
+
+#: sql_help.c:5630
+msgid "show the execution plan of a statement"
+msgstr "显示一个语句块的执行计划"
+
+#: sql_help.c:5636
+msgid "retrieve rows from a query using a cursor"
+msgstr "从使用游标的查询读取数据"
+
+#: sql_help.c:5642
+msgid "define access privileges"
+msgstr "定义存取权限"
+
+#: sql_help.c:5648
+msgid "import table definitions from a foreign server"
+msgstr "从一个外部服务器导入表定义"
+
+#: sql_help.c:5654
+msgid "create new rows in a table"
+msgstr "在表中创建新数据行"
+
+#: sql_help.c:5660
+msgid "listen for a notification"
+msgstr "等待通知"
+
+#: sql_help.c:5666
+msgid "load a shared library file"
+msgstr "加载一个共享库文件"
+
+#: sql_help.c:5672
+msgid "lock a table"
+msgstr "锁定数据表"
+
+#: sql_help.c:5678
+msgid "position a cursor"
+msgstr "移动游标位置"
+
+#: sql_help.c:5684
+msgid "generate a notification"
+msgstr "产生通知"
+
+#: sql_help.c:5690
+msgid "prepare a statement for execution"
+msgstr "预先编译语句以执行"
+
+#: sql_help.c:5696
+msgid "prepare the current transaction for two-phase commit"
+msgstr "准备将当前事务进行二段式提交"
+
+#: sql_help.c:5702
+msgid "change the ownership of database objects owned by a database role"
+msgstr "依照一个数据库角色拥有的的数据库对象来更变所有权"
+
+#: sql_help.c:5708
+msgid "replace the contents of a materialized view"
+msgstr "替换物化视图的内容"
+
+#: sql_help.c:5714
+msgid "rebuild indexes"
+msgstr "重新建构索引"
+
+#: sql_help.c:5720
+msgid "destroy a previously defined savepoint"
+msgstr "删除先前建立的储存点(Savepoint)"
+
+#: sql_help.c:5726
+msgid "restore the value of a run-time parameter to the default value"
+msgstr "将执行时期参数还原成预设值"
+
+#: sql_help.c:5732
+msgid "remove access privileges"
+msgstr "移除存取权限"
+
+#: sql_help.c:5744
+msgid "cancel a transaction that was earlier prepared for two-phase commit"
+msgstr "取消一个可以为两阶段提交容易配置的事务"
+
+#: sql_help.c:5750
+msgid "roll back to a savepoint"
+msgstr "还原至一个储存点(Savepoint)"
+
+#: sql_help.c:5756
+msgid "define a new savepoint within the current transaction"
+msgstr "在当前事务中建立新的储存点(Savepoint)"
+
+#: sql_help.c:5762
+msgid "define or change a security label applied to an object"
+msgstr "定义或更改一个对象的安全标签"
+
+#: sql_help.c:5768 sql_help.c:5822 sql_help.c:5858
+msgid "retrieve rows from a table or view"
+msgstr "从数据表或视图中读取数据"
+
+#: sql_help.c:5780
+msgid "change a run-time parameter"
+msgstr "更改一个运行期参数"
+
+#: sql_help.c:5786
+msgid "set constraint check timing for the current transaction"
+msgstr "为当前事务设定约束限制检查的时间模式"
+
+#: sql_help.c:5792
+msgid "set the current user identifier of the current session"
+msgstr "为当前会话的当前用户的设置身份标识"
+
+#: sql_help.c:5798
+msgid "set the session user identifier and the current user identifier of the current session"
+msgstr "为当前会话设置会话用户标识符和当前用户标识符"
+
+#: sql_help.c:5804
+msgid "set the characteristics of the current transaction"
+msgstr "设定当前事务属性"
+
+#: sql_help.c:5810
+msgid "show the value of a run-time parameter"
+msgstr "显示运行期的参数值"
+
+#: sql_help.c:5828
+msgid "empty a table or set of tables"
+msgstr "空的数据表或数据表集合"
+
+#: sql_help.c:5834
+msgid "stop listening for a notification"
+msgstr "停止监听通知"
+
+#: sql_help.c:5840
+msgid "update rows of a table"
+msgstr "更新数据表中的数据列"
+
+#: sql_help.c:5846
+msgid "garbage-collect and optionally analyze a database"
+msgstr "垃圾收集(GC)并选择地分析数据库"
+
+#: sql_help.c:5852
+msgid "compute a set of rows"
+msgstr "计算一个数据列的集合"
+
+#: startup.c:216
+#, c-format
+msgid "-1 can only be used in non-interactive mode"
+msgstr "-1只能在非交互模式下使用"
+
+#: startup.c:303
+#, c-format
+msgid "could not connect to server: %s"
+msgstr "无法连接到服务器:%s"
+
+#: startup.c:331
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "无法打开事务日志文件 \"%s\": %m"
+
+#: startup.c:442
+#, c-format
+msgid ""
+"Type \"help\" for help.\n"
+"\n"
+msgstr ""
+"输入 \"help\" 来获取帮助信息.\n"
+"\n"
+
+#: startup.c:592
+#, c-format
+msgid "could not set printing parameter \"%s\""
+msgstr "无法设定列打印参数 \"%s\""
+
+#: startup.c:697
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "尝试 \"%s --help\" 以得到更多信息.\n"
+
+#: startup.c:714
+#, c-format
+msgid "extra command-line argument \"%s\" ignored"
+msgstr "忽略多余的命令行参数 \"%s\""
+
+#: startup.c:763
+#, c-format
+msgid "could not find own program executable"
+msgstr "找不到可执行文件"
+
+#: tab-complete.c:4361
+#, c-format
+msgid ""
+"tab completion query failed: %s\n"
+"Query was:\n"
+"%s"
+msgstr ""
+"自动补全查询失败: %s\n"
+"查询是:\n"
+"%s"
+
+#: variables.c:141
+#, c-format
+msgid "unrecognized value \"%s\" for \"%s\": Boolean expected"
+msgstr "\"%2$s\"的不能识别的值\"%1$s\":应为布尔值"
+
+#: variables.c:178
+#, c-format
+msgid "invalid value \"%s\" for \"%s\": integer expected"
+msgstr "\"%s\"的值\"%s\"无效: 应为整数"
+
+#: variables.c:226
+#, c-format
+msgid "invalid variable name: \"%s\""
+msgstr "无效的语言环境名称: \"%s\""
+
+#: variables.c:395
+#, c-format
+msgid ""
+"unrecognized value \"%s\" for \"%s\"\n"
+"Available values are: %s."
+msgstr ""
+"\"%2$s\"的不能识别的值\"%1$s\"\n"
+"可用值为\"%3$s\"."
+
+# command.c:1148
+#~ msgid "%s: could not open log file \"%s\": %s\n"
+#~ msgstr "%s:无法开启日志文件 \"%s\":%s\n"
+
+#~ msgid "string_literal"
+#~ msgstr "字符串_文字"
+
+#~ msgid "unterminated quoted string\n"
+#~ msgstr "未结束的引用字符串\n"
+
+# input.c:210
+#~ msgid "could not read from input file: %s\n"
+#~ msgstr "无法从输入档案读取:%s\n"
+
+#~ msgid "Report bugs to <pgsql-bugs@postgresql.org>.\n"
+#~ msgstr "臭虫报告至 <pgsql-bugs@postgresql.org>.\n"
+
+# command.c:953
+# common.c:216
+# common.c:605
+# common.c:660
+# common.c:903
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid "could not close pipe to external command: %s\n"
+#~ msgstr "无法为外部命令: %s关闭管道\n"
+
+#~ msgid "could not stat file \"%s\": %s\n"
+#~ msgstr "无法获取文件 \"%s\":%s 的状态\n"
+
+#~ msgid "could not execute command \"%s\": %s\n"
+#~ msgstr "无法执行命令 \"%s\": %s\n"
+
+#~ msgid "could not parse reloptions array\n"
+#~ msgstr "无法解析 reloptions 数组\n"
+
+# command.c:1148
+#~ msgid "could not open temporary file \"%s\": %s\n"
+#~ msgstr "无法打开临时文件 \"%s\": %s\n"
+
+# command.c:120
+#~ msgid "Invalid command \\%s. Try \\? for help.\n"
+#~ msgstr "无效的命令 \\%s,用 \\? 查看帮助。\n"
+
+#~ msgid "child process was terminated by signal %d"
+#~ msgstr "子进程被信号 %d 终止"
+
+#~ msgid "child process was terminated by signal %s"
+#~ msgstr "子进程被信号 %s 终止"
+
+#~ msgid "pclose failed: %s"
+#~ msgstr "pclose调用失败: %s"
+
+# command.c:1103
+#~ msgid "could not read symbolic link \"%s\""
+#~ msgstr "无法读取符号链接 \"%s\""
+
+#~ msgid "could not change directory to \"%s\": %s"
+#~ msgstr "无法跳转到目录 \"%s\" 中: %s"
+
+# command.c:240
+#~ msgid "could not identify current directory: %s"
+#~ msgstr "无法识别目前目录:%s"
diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c
new file mode 100644
index 0000000..ef503ec
--- /dev/null
+++ b/src/bin/psql/prompt.c
@@ -0,0 +1,382 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/prompt.c
+ */
+#include "postgres_fe.h"
+
+#ifdef WIN32
+#include <io.h>
+#include <win32.h>
+#endif
+
+#include "common.h"
+#include "common/string.h"
+#include "input.h"
+#include "prompt.h"
+#include "settings.h"
+
+/*--------------------------
+ * get_prompt
+ *
+ * Returns a statically allocated prompt made by interpolating certain
+ * tcsh style escape sequences into pset.vars "PROMPT1|2|3".
+ * (might not be completely multibyte safe)
+ *
+ * Defined interpolations are:
+ * %M - database server "hostname.domainname", "[local]" for AF_UNIX
+ * sockets, "[local:/dir/name]" if not default
+ * %m - like %M, but hostname only (before first dot), or always "[local]"
+ * %p - backend pid
+ * %> - database server port number
+ * %n - database user name
+ * %/ - current database
+ * %~ - like %/ but "~" when database name equals user name
+ * %w - whitespace of the same width as the most recent output of PROMPT1
+ * %# - "#" if superuser, ">" otherwise
+ * %R - in prompt1 normally =, or ^ if single line mode,
+ * or a ! if session is not connected to a database;
+ * in prompt2 -, *, ', or ";
+ * in prompt3 nothing
+ * %x - transaction status: empty, *, !, ? (unknown or no connection)
+ * %l - The line number inside the current statement, starting from 1.
+ * %? - the error code of the last query (not yet implemented)
+ * %% - a percent sign
+ *
+ * %[0-9] - the character with the given decimal code
+ * %0[0-7] - the character with the given octal code
+ * %0x[0-9A-Fa-f] - the character with the given hexadecimal code
+ *
+ * %`command` - The result of executing command in /bin/sh with trailing
+ * newline stripped.
+ * %:name: - The value of the psql variable 'name'
+ * (those will not be rescanned for more escape sequences!)
+ *
+ * %[ ... %] - tell readline that the contained text is invisible
+ *
+ * If the application-wide prompts become NULL somehow, the returned string
+ * will be empty (not NULL!).
+ *--------------------------
+ */
+
+char *
+get_prompt(promptStatus_t status, ConditionalStack cstack)
+{
+#define MAX_PROMPT_SIZE 256
+ static char destination[MAX_PROMPT_SIZE + 1];
+ char buf[MAX_PROMPT_SIZE + 1];
+ bool esc = false;
+ const char *p;
+ const char *prompt_string = "? ";
+ static size_t last_prompt1_width = 0;
+
+ switch (status)
+ {
+ case PROMPT_READY:
+ prompt_string = pset.prompt1;
+ break;
+
+ case PROMPT_CONTINUE:
+ case PROMPT_SINGLEQUOTE:
+ case PROMPT_DOUBLEQUOTE:
+ case PROMPT_DOLLARQUOTE:
+ case PROMPT_COMMENT:
+ case PROMPT_PAREN:
+ prompt_string = pset.prompt2;
+ break;
+
+ case PROMPT_COPY:
+ prompt_string = pset.prompt3;
+ break;
+ }
+
+ destination[0] = '\0';
+
+ for (p = prompt_string;
+ *p && strlen(destination) < sizeof(destination) - 1;
+ p++)
+ {
+ memset(buf, 0, sizeof(buf));
+ if (esc)
+ {
+ switch (*p)
+ {
+ /* Current database */
+ case '/':
+ if (pset.db)
+ strlcpy(buf, PQdb(pset.db), sizeof(buf));
+ break;
+ case '~':
+ if (pset.db)
+ {
+ const char *var;
+
+ if (strcmp(PQdb(pset.db), PQuser(pset.db)) == 0 ||
+ ((var = getenv("PGDATABASE")) && strcmp(var, PQdb(pset.db)) == 0))
+ strlcpy(buf, "~", sizeof(buf));
+ else
+ strlcpy(buf, PQdb(pset.db), sizeof(buf));
+ }
+ break;
+
+ /* Whitespace of the same width as the last PROMPT1 */
+ case 'w':
+ if (pset.db)
+ memset(buf, ' ',
+ Min(last_prompt1_width, sizeof(buf) - 1));
+ break;
+
+ /* DB server hostname (long/short) */
+ case 'M':
+ case 'm':
+ if (pset.db)
+ {
+ const char *host = PQhost(pset.db);
+
+ /* INET socket */
+ if (host && host[0] && !is_absolute_path(host))
+ {
+ strlcpy(buf, host, sizeof(buf));
+ if (*p == 'm')
+ buf[strcspn(buf, ".")] = '\0';
+ }
+ /* UNIX socket */
+ else
+ {
+ if (!host
+ || strcmp(host, DEFAULT_PGSOCKET_DIR) == 0
+ || *p == 'm')
+ strlcpy(buf, "[local]", sizeof(buf));
+ else
+ snprintf(buf, sizeof(buf), "[local:%s]", host);
+ }
+ }
+ break;
+ /* DB server port number */
+ case '>':
+ if (pset.db && PQport(pset.db))
+ strlcpy(buf, PQport(pset.db), sizeof(buf));
+ break;
+ /* DB server user name */
+ case 'n':
+ if (pset.db)
+ strlcpy(buf, session_username(), sizeof(buf));
+ break;
+ /* backend pid */
+ case 'p':
+ if (pset.db)
+ {
+ int pid = PQbackendPID(pset.db);
+
+ if (pid)
+ snprintf(buf, sizeof(buf), "%d", pid);
+ }
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ *buf = (char) strtol(p, unconstify(char **, &p), 8);
+ --p;
+ break;
+ case 'R':
+ switch (status)
+ {
+ case PROMPT_READY:
+ if (cstack != NULL && !conditional_active(cstack))
+ buf[0] = '@';
+ else if (!pset.db)
+ buf[0] = '!';
+ else if (!pset.singleline)
+ buf[0] = '=';
+ else
+ buf[0] = '^';
+ break;
+ case PROMPT_CONTINUE:
+ buf[0] = '-';
+ break;
+ case PROMPT_SINGLEQUOTE:
+ buf[0] = '\'';
+ break;
+ case PROMPT_DOUBLEQUOTE:
+ buf[0] = '"';
+ break;
+ case PROMPT_DOLLARQUOTE:
+ buf[0] = '$';
+ break;
+ case PROMPT_COMMENT:
+ buf[0] = '*';
+ break;
+ case PROMPT_PAREN:
+ buf[0] = '(';
+ break;
+ default:
+ buf[0] = '\0';
+ break;
+ }
+ break;
+
+ case 'x':
+ if (!pset.db)
+ buf[0] = '?';
+ else
+ switch (PQtransactionStatus(pset.db))
+ {
+ case PQTRANS_IDLE:
+ buf[0] = '\0';
+ break;
+ case PQTRANS_ACTIVE:
+ case PQTRANS_INTRANS:
+ buf[0] = '*';
+ break;
+ case PQTRANS_INERROR:
+ buf[0] = '!';
+ break;
+ default:
+ buf[0] = '?';
+ break;
+ }
+ break;
+
+ case 'l':
+ snprintf(buf, sizeof(buf), UINT64_FORMAT, pset.stmt_lineno);
+ break;
+
+ case '?':
+ /* not here yet */
+ break;
+
+ case '#':
+ if (is_superuser())
+ buf[0] = '#';
+ else
+ buf[0] = '>';
+ break;
+
+ /* execute command */
+ case '`':
+ {
+ int cmdend = strcspn(p + 1, "`");
+ char *file = pnstrdup(p + 1, cmdend);
+ FILE *fd = popen(file, "r");
+
+ if (fd)
+ {
+ if (fgets(buf, sizeof(buf), fd) == NULL)
+ buf[0] = '\0';
+ pclose(fd);
+ }
+
+ /* strip trailing newline and carriage return */
+ (void) pg_strip_crlf(buf);
+
+ free(file);
+ p += cmdend + 1;
+ break;
+ }
+
+ /* interpolate variable */
+ case ':':
+ {
+ int nameend = strcspn(p + 1, ":");
+ char *name = pnstrdup(p + 1, nameend);
+ const char *val;
+
+ val = GetVariable(pset.vars, name);
+ if (val)
+ strlcpy(buf, val, sizeof(buf));
+ free(name);
+ p += nameend + 1;
+ break;
+ }
+
+ case '[':
+ case ']':
+#if defined(USE_READLINE) && defined(RL_PROMPT_START_IGNORE)
+
+ /*
+ * readline >=4.0 undocumented feature: non-printing
+ * characters in prompt strings must be marked as such, in
+ * order to properly display the line during editing.
+ */
+ buf[0] = (*p == '[') ? RL_PROMPT_START_IGNORE : RL_PROMPT_END_IGNORE;
+ buf[1] = '\0';
+#endif /* USE_READLINE */
+ break;
+
+ default:
+ buf[0] = *p;
+ buf[1] = '\0';
+ break;
+
+ }
+ esc = false;
+ }
+ else if (*p == '%')
+ esc = true;
+ else
+ {
+ buf[0] = *p;
+ buf[1] = '\0';
+ esc = false;
+ }
+
+ if (!esc)
+ strlcat(destination, buf, sizeof(destination));
+ }
+
+ /* Compute the visible width of PROMPT1, for PROMPT2's %w */
+ if (prompt_string == pset.prompt1)
+ {
+ char *p = destination;
+ char *end = p + strlen(p);
+ bool visible = true;
+
+ last_prompt1_width = 0;
+ while (*p)
+ {
+#if defined(USE_READLINE) && defined(RL_PROMPT_START_IGNORE)
+ if (*p == RL_PROMPT_START_IGNORE)
+ {
+ visible = false;
+ ++p;
+ }
+ else if (*p == RL_PROMPT_END_IGNORE)
+ {
+ visible = true;
+ ++p;
+ }
+ else
+#endif
+ {
+ int chlen,
+ chwidth;
+
+ chlen = PQmblen(p, pset.encoding);
+ if (p + chlen > end)
+ break; /* Invalid string */
+
+ if (visible)
+ {
+ chwidth = PQdsplen(p, pset.encoding);
+
+ if (*p == '\n')
+ last_prompt1_width = 0;
+ else if (chwidth > 0)
+ last_prompt1_width += chwidth;
+ }
+
+ p += chlen;
+ }
+ }
+ }
+
+ return destination;
+}
diff --git a/src/bin/psql/prompt.h b/src/bin/psql/prompt.h
new file mode 100644
index 0000000..3c86669
--- /dev/null
+++ b/src/bin/psql/prompt.h
@@ -0,0 +1,17 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/prompt.h
+ */
+#ifndef PROMPT_H
+#define PROMPT_H
+
+#include "fe_utils/conditional.h"
+/* enum promptStatus_t is now defined by psqlscan.h */
+#include "fe_utils/psqlscan.h"
+
+char *get_prompt(promptStatus_t status, ConditionalStack cstack);
+
+#endif /* PROMPT_H */
diff --git a/src/bin/psql/psqlrc.sample b/src/bin/psql/psqlrc.sample
new file mode 100644
index 0000000..8152cac
--- /dev/null
+++ b/src/bin/psql/psqlrc.sample
@@ -0,0 +1,8 @@
+--
+-- system-wide psql configuration file
+--
+-- This file is read before the .psqlrc file in the user's home directory.
+--
+-- Copy this to your installation's sysconf directory and rename it psqlrc.
+-- The sysconf directory can be identified via "pg_config --sysconfdir".
+--
diff --git a/src/bin/psql/psqlscanslash.c b/src/bin/psql/psqlscanslash.c
new file mode 100644
index 0000000..aee12dd
--- /dev/null
+++ b/src/bin/psql/psqlscanslash.c
@@ -0,0 +1,3487 @@
+#line 2 "psqlscanslash.c"
+/*-------------------------------------------------------------------------
+ *
+ * psqlscanslash.l
+ * lexical scanner for psql backslash commands
+ *
+ * XXX Avoid creating backtracking cases --- see the backend lexer for info.
+ *
+ * See fe_utils/psqlscan_int.h for additional commentary.
+ *
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * IDENTIFICATION
+ * src/bin/psql/psqlscanslash.l
+ *
+ *-------------------------------------------------------------------------
+ */
+#include "postgres_fe.h"
+
+#include "psqlscanslash.h"
+#include "common/logging.h"
+#include "fe_utils/conditional.h"
+
+#include "libpq-fe.h"
+
+#line 28 "psqlscanslash.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+#ifdef yy_create_buffer
+#define slash_yy_create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer slash_yy_create_buffer
+#endif
+
+#ifdef yy_delete_buffer
+#define slash_yy_delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer slash_yy_delete_buffer
+#endif
+
+#ifdef yy_scan_buffer
+#define slash_yy_scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer slash_yy_scan_buffer
+#endif
+
+#ifdef yy_scan_string
+#define slash_yy_scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string slash_yy_scan_string
+#endif
+
+#ifdef yy_scan_bytes
+#define slash_yy_scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes slash_yy_scan_bytes
+#endif
+
+#ifdef yy_init_buffer
+#define slash_yy_init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer slash_yy_init_buffer
+#endif
+
+#ifdef yy_flush_buffer
+#define slash_yy_flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer slash_yy_flush_buffer
+#endif
+
+#ifdef yy_load_buffer_state
+#define slash_yy_load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state slash_yy_load_buffer_state
+#endif
+
+#ifdef yy_switch_to_buffer
+#define slash_yy_switch_to_buffer_ALREADY_DEFINED
+#else
+#define yy_switch_to_buffer slash_yy_switch_to_buffer
+#endif
+
+#ifdef yypush_buffer_state
+#define slash_yypush_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state slash_yypush_buffer_state
+#endif
+
+#ifdef yypop_buffer_state
+#define slash_yypop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state slash_yypop_buffer_state
+#endif
+
+#ifdef yyensure_buffer_stack
+#define slash_yyensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack slash_yyensure_buffer_stack
+#endif
+
+#ifdef yylex
+#define slash_yylex_ALREADY_DEFINED
+#else
+#define yylex slash_yylex
+#endif
+
+#ifdef yyrestart
+#define slash_yyrestart_ALREADY_DEFINED
+#else
+#define yyrestart slash_yyrestart
+#endif
+
+#ifdef yylex_init
+#define slash_yylex_init_ALREADY_DEFINED
+#else
+#define yylex_init slash_yylex_init
+#endif
+
+#ifdef yylex_init_extra
+#define slash_yylex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra slash_yylex_init_extra
+#endif
+
+#ifdef yylex_destroy
+#define slash_yylex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy slash_yylex_destroy
+#endif
+
+#ifdef yyget_debug
+#define slash_yyget_debug_ALREADY_DEFINED
+#else
+#define yyget_debug slash_yyget_debug
+#endif
+
+#ifdef yyset_debug
+#define slash_yyset_debug_ALREADY_DEFINED
+#else
+#define yyset_debug slash_yyset_debug
+#endif
+
+#ifdef yyget_extra
+#define slash_yyget_extra_ALREADY_DEFINED
+#else
+#define yyget_extra slash_yyget_extra
+#endif
+
+#ifdef yyset_extra
+#define slash_yyset_extra_ALREADY_DEFINED
+#else
+#define yyset_extra slash_yyset_extra
+#endif
+
+#ifdef yyget_in
+#define slash_yyget_in_ALREADY_DEFINED
+#else
+#define yyget_in slash_yyget_in
+#endif
+
+#ifdef yyset_in
+#define slash_yyset_in_ALREADY_DEFINED
+#else
+#define yyset_in slash_yyset_in
+#endif
+
+#ifdef yyget_out
+#define slash_yyget_out_ALREADY_DEFINED
+#else
+#define yyget_out slash_yyget_out
+#endif
+
+#ifdef yyset_out
+#define slash_yyset_out_ALREADY_DEFINED
+#else
+#define yyset_out slash_yyset_out
+#endif
+
+#ifdef yyget_leng
+#define slash_yyget_leng_ALREADY_DEFINED
+#else
+#define yyget_leng slash_yyget_leng
+#endif
+
+#ifdef yyget_text
+#define slash_yyget_text_ALREADY_DEFINED
+#else
+#define yyget_text slash_yyget_text
+#endif
+
+#ifdef yyget_lineno
+#define slash_yyget_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno slash_yyget_lineno
+#endif
+
+#ifdef yyset_lineno
+#define slash_yyset_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno slash_yyset_lineno
+#endif
+
+#ifdef yyget_column
+#define slash_yyget_column_ALREADY_DEFINED
+#else
+#define yyget_column slash_yyget_column
+#endif
+
+#ifdef yyset_column
+#define slash_yyset_column_ALREADY_DEFINED
+#else
+#define yyset_column slash_yyset_column
+#endif
+
+#ifdef yywrap
+#define slash_yywrap_ALREADY_DEFINED
+#else
+#define yywrap slash_yywrap
+#endif
+
+#ifdef yyget_lval
+#define slash_yyget_lval_ALREADY_DEFINED
+#else
+#define yyget_lval slash_yyget_lval
+#endif
+
+#ifdef yyset_lval
+#define slash_yyset_lval_ALREADY_DEFINED
+#else
+#define yyset_lval slash_yyset_lval
+#endif
+
+#ifdef yyalloc
+#define slash_yyalloc_ALREADY_DEFINED
+#else
+#define yyalloc slash_yyalloc
+#endif
+
+#ifdef yyrealloc
+#define slash_yyrealloc_ALREADY_DEFINED
+#else
+#define yyrealloc slash_yyrealloc
+#endif
+
+#ifdef yyfree
+#define slash_yyfree_ALREADY_DEFINED
+#else
+#define yyfree slash_yyfree
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#ifndef SIZE_MAX
+#define SIZE_MAX (~(size_t)0)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+/* begin standard C++ headers. */
+
+/* TODO: this is always defined, so inline it */
+#define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
+#else
+#define yynoreturn
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an
+ * integer in range [0..255] for use as an array index.
+ */
+#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yyg->yy_start = 1 + 2 *
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yyg->yy_start - 1) / 2)
+#define YYSTATE YY_START
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin , yyscanner )
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+ #define YY_LINENO_REWIND_TO(ptr)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = yyg->yy_hold_char; \
+ YY_RESTORE_YY_MORE_OFFSET \
+ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ int yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
+ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
+ : NULL)
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
+
+void yyrestart ( FILE *input_file , yyscan_t yyscanner );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
+void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
+void yypop_buffer_state ( yyscan_t yyscanner );
+
+static void yyensure_buffer_stack ( yyscan_t yyscanner );
+static void yy_load_buffer_state ( yyscan_t yyscanner );
+static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
+#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
+
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
+
+void *yyalloc ( yy_size_t , yyscan_t yyscanner );
+void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
+void yyfree ( void * , yyscan_t yyscanner );
+
+#define yy_new_buffer yy_create_buffer
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define slash_yywrap(yyscanner) (/*CONSTCOND*/1)
+#define YY_SKIP_YYWRAP
+typedef flex_uint8_t YY_CHAR;
+
+typedef int yy_state_type;
+
+#define yytext_ptr yytext_r
+
+static const flex_int16_t yy_nxt[][22] =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0
+ },
+
+ {
+ 19, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20
+ },
+
+ {
+ 19, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20
+ },
+
+ {
+ 19, 21, 22, 23, 21, 21, 21, 21, 21, 21,
+
+ 21, 22, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21
+ },
+
+ {
+ 19, 21, 22, 23, 21, 21, 21, 21, 21, 21,
+ 21, 22, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21
+ },
+
+ {
+ 19, 24, 25, 26, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 27, 24
+ },
+
+ {
+ 19, 24, 25, 26, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+
+ 27, 24
+ },
+
+ {
+ 19, 28, 29, 30, 31, 32, 28, 28, 33, 28,
+ 28, 29, 34, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28
+ },
+
+ {
+ 19, 28, 29, 30, 31, 32, 28, 28, 33, 28,
+ 28, 29, 34, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28
+ },
+
+ {
+ 19, 35, 35, 35, 35, 36, 35, 35, 35, 35,
+ 35, 37, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35
+
+ },
+
+ {
+ 19, 35, 35, 35, 35, 36, 35, 35, 35, 35,
+ 35, 37, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35
+ },
+
+ {
+ 19, 38, 38, 38, 38, 38, 38, 38, 39, 38,
+ 38, 38, 40, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38
+ },
+
+ {
+ 19, 38, 38, 38, 38, 38, 38, 38, 39, 38,
+ 38, 38, 40, 38, 38, 38, 38, 38, 38, 38,
+ 38, 38
+ },
+
+ {
+ 19, 41, 41, 41, 42, 41, 41, 41, 41, 41,
+
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41
+ },
+
+ {
+ 19, 41, 41, 41, 42, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 41, 41
+ },
+
+ {
+ 19, 43, 44, 45, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43
+ },
+
+ {
+ 19, 43, 44, 45, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+
+ 43, 43
+ },
+
+ {
+ 19, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 47, 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 46
+ },
+
+ {
+ 19, 46, 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 47, 46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 46
+ },
+
+ {
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19, -19, -19, -19, -19, -19, -19, -19, -19,
+ -19, -19
+
+ },
+
+ {
+ 19, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
+ -20, -20
+ },
+
+ {
+ 19, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21
+ },
+
+ {
+ 19, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22
+ },
+
+ {
+ 19, -23, -23, -23, -23, -23, -23, -23, -23, -23,
+
+ -23, -23, -23, -23, -23, -23, -23, -23, -23, -23,
+ -23, -23
+ },
+
+ {
+ 19, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24
+ },
+
+ {
+ 19, -25, 48, 48, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25
+ },
+
+ {
+ 19, -26, 48, 48, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26
+ },
+
+ {
+ 19, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27
+ },
+
+ {
+ 19, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28
+ },
+
+ {
+ 19, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29
+
+ },
+
+ {
+ 19, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
+ -30, -30
+ },
+
+ {
+ 19, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31
+ },
+
+ {
+ 19, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32
+ },
+
+ {
+ 19, -33, -33, -33, 49, 50, 51, 51, -33, -33,
+
+ 51, -33, -33, 51, 51, 51, 51, 51, 51, 52,
+ -33, -33
+ },
+
+ {
+ 19, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34
+ },
+
+ {
+ 19, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35
+ },
+
+ {
+ 19, -36, -36, -36, -36, 53, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+
+ -36, -36
+ },
+
+ {
+ 19, 54, 54, -37, 54, 54, 55, 54, 54, 54,
+ 54, 54, 54, 56, 57, 58, 59, 60, 61, 54,
+ 54, 54
+ },
+
+ {
+ 19, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38
+ },
+
+ {
+ 19, -39, -39, -39, -39, 62, 63, 63, -39, -39,
+ 63, -39, -39, 63, 63, 63, 63, 63, 63, -39,
+ -39, -39
+
+ },
+
+ {
+ 19, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40
+ },
+
+ {
+ 19, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41
+ },
+
+ {
+ 19, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42
+ },
+
+ {
+ 19, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43
+ },
+
+ {
+ 19, -44, 64, 64, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44
+ },
+
+ {
+ 19, -45, 64, 64, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45
+ },
+
+ {
+ 19, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+
+ -46, -46
+ },
+
+ {
+ 19, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, 65, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47
+ },
+
+ {
+ 19, -48, 48, 48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48
+ },
+
+ {
+ 19, -49, -49, -49, -49, -49, 66, 66, -49, -49,
+ 66, -49, -49, 66, 66, 66, 66, 66, 66, -49,
+ -49, -49
+
+ },
+
+ {
+ 19, -50, -50, -50, -50, -50, 67, 67, -50, -50,
+ 67, -50, -50, 67, 67, 67, 67, 67, 67, -50,
+ -50, -50
+ },
+
+ {
+ 19, -51, -51, -51, -51, -51, 51, 51, -51, -51,
+ 51, -51, -51, 51, 51, 51, 51, 51, 51, -51,
+ -51, -51
+ },
+
+ {
+ 19, -52, -52, -52, -52, -52, -52, -52, -52, 68,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52
+ },
+
+ {
+ 19, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53
+ },
+
+ {
+ 19, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54
+ },
+
+ {
+ 19, -55, -55, -55, -55, -55, 69, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55
+ },
+
+ {
+ 19, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+
+ -56, -56
+ },
+
+ {
+ 19, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57
+ },
+
+ {
+ 19, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58
+ },
+
+ {
+ 19, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59
+
+ },
+
+ {
+ 19, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60
+ },
+
+ {
+ 19, -61, -61, -61, -61, -61, 70, 70, -61, -61,
+ -61, -61, -61, 70, 70, -61, -61, -61, -61, -61,
+ -61, -61
+ },
+
+ {
+ 19, -62, -62, -62, -62, -62, 71, 71, -62, -62,
+ 71, -62, -62, 71, 71, 71, 71, 71, 71, -62,
+ -62, -62
+ },
+
+ {
+ 19, -63, -63, -63, -63, -63, 63, 63, -63, -63,
+
+ 63, -63, -63, 63, 63, 63, 63, 63, 63, -63,
+ -63, -63
+ },
+
+ {
+ 19, -64, 64, 64, -64, -64, -64, -64, -64, -64,
+ -64, -64, -64, -64, -64, -64, -64, -64, -64, -64,
+ -64, -64
+ },
+
+ {
+ 19, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65
+ },
+
+ {
+ 19, -66, -66, -66, 72, -66, 66, 66, -66, -66,
+ 66, -66, -66, 66, 66, 66, 66, 66, 66, -66,
+
+ -66, -66
+ },
+
+ {
+ 19, -67, -67, -67, -67, 73, 67, 67, -67, -67,
+ 67, -67, -67, 67, 67, 67, 67, 67, 67, -67,
+ -67, -67
+ },
+
+ {
+ 19, -68, -68, -68, -68, -68, 74, 74, -68, -68,
+ 74, -68, -68, 74, 74, 74, 74, 74, 74, -68,
+ -68, -68
+ },
+
+ {
+ 19, -69, -69, -69, -69, -69, 75, -69, -69, -69,
+ -69, -69, -69, -69, -69, -69, -69, -69, -69, -69,
+ -69, -69
+
+ },
+
+ {
+ 19, -70, -70, -70, -70, -70, 76, 76, -70, -70,
+ -70, -70, -70, 76, 76, -70, -70, -70, -70, -70,
+ -70, -70
+ },
+
+ {
+ 19, -71, -71, -71, -71, 77, 71, 71, -71, -71,
+ 71, -71, -71, 71, 71, 71, 71, 71, 71, -71,
+ -71, -71
+ },
+
+ {
+ 19, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72
+ },
+
+ {
+ 19, -73, -73, -73, -73, -73, -73, -73, -73, -73,
+
+ -73, -73, -73, -73, -73, -73, -73, -73, -73, -73,
+ -73, -73
+ },
+
+ {
+ 19, -74, -74, -74, -74, -74, 74, 74, -74, -74,
+ 74, -74, -74, 74, 74, 74, 74, 74, 74, -74,
+ -74, 78
+ },
+
+ {
+ 19, -75, -75, -75, -75, -75, -75, -75, -75, -75,
+ -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
+ -75, -75
+ },
+
+ {
+ 19, -76, -76, -76, -76, -76, -76, -76, -76, -76,
+ -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
+
+ -76, -76
+ },
+
+ {
+ 19, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77
+ },
+
+ {
+ 19, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78
+ },
+
+ } ;
+
+static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
+static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner);
+static int yy_get_next_buffer ( yyscan_t yyscanner );
+static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ yyg->yytext_ptr = yy_bp; \
+ yyleng = (int) (yy_cp - yy_bp); \
+ yyg->yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yyg->yy_c_buf_p = yy_cp;
+#define YY_NUM_RULES 42
+#define YY_END_OF_BUFFER 43
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static const flex_int16_t yy_accept[79] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 43, 1,
+ 3, 2, 2, 6, 4, 4, 5, 19, 7, 7,
+ 10, 8, 19, 9, 30, 20, 30, 35, 35, 31,
+ 37, 36, 39, 38, 38, 41, 41, 4, 16, 15,
+ 11, 18, 21, 29, 27, 24, 26, 22, 25, 23,
+ 29, 34, 32, 38, 40, 16, 15, 17, 27, 28,
+ 34, 13, 12, 17, 27, 28, 33, 14
+ } ;
+
+static const YY_CHAR yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 2, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 4, 1, 1, 1, 1, 5, 1,
+ 1, 1, 1, 1, 1, 1, 1, 6, 6, 6,
+ 6, 6, 6, 6, 6, 7, 7, 8, 1, 1,
+ 1, 1, 9, 1, 7, 7, 7, 7, 7, 7,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 1, 11, 1, 1, 10, 12, 7, 13, 7, 7,
+
+ 7, 14, 10, 10, 10, 10, 10, 10, 10, 15,
+ 10, 10, 10, 16, 10, 17, 10, 10, 10, 18,
+ 10, 10, 19, 20, 21, 1, 1, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10
+ } ;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+#line 1 "psqlscanslash.l"
+
+#line 29 "psqlscanslash.l"
+#include "fe_utils/psqlscan_int.h"
+
+#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e))
+
+/*
+ * We must have a typedef YYSTYPE for yylex's first argument, but this lexer
+ * doesn't presently make use of that argument, so just declare it as int.
+ */
+typedef int YYSTYPE;
+
+/*
+ * Set the type of yyextra; we use it as a pointer back to the containing
+ * PsqlScanState.
+ */
+#define YY_EXTRA_TYPE PsqlScanState
+
+/*
+ * These variables do not need to be saved across calls. Yeah, it's a bit
+ * of a hack, but putting them into PsqlScanStateData would be klugy too.
+ */
+static enum slash_option_type option_type;
+static char *option_quote;
+static int unquoted_option_chars;
+static int backtick_start_offset;
+
+
+/* Return values from yylex() */
+#define LEXRES_EOL 0 /* end of input */
+#define LEXRES_OK 1 /* OK completion of backslash argument */
+
+
+static void evaluate_backtick(PsqlScanState state);
+
+#define ECHO psqlscan_emit(cur_state, yytext, yyleng)
+
+/*
+ * Work around a bug in flex 2.5.35: it emits a couple of functions that
+ * it forgets to emit declarations for. Since we use -Wmissing-prototypes,
+ * this would cause warnings. Providing our own declarations should be
+ * harmless even when the bug gets fixed.
+ */
+extern int slash_yyget_column(yyscan_t yyscanner);
+extern void slash_yyset_column(int column_no, yyscan_t yyscanner);
+
+/* LCOV_EXCL_START */
+
+#line 1199 "psqlscanslash.c"
+/* Except for the prefix, these options should match psqlscan.l */
+#define YY_NO_INPUT 1
+/*
+ * OK, here is a short description of lex/flex rules behavior.
+ * The longest pattern which matches an input string is always chosen.
+ * For equal-length patterns, the first occurring in the rules list is chosen.
+ * INITIAL is the starting state, to which all non-conditional rules apply.
+ * Exclusive states change parsing rules while the state is active. When in
+ * an exclusive state, only those rules defined for that state apply.
+ */
+/* Exclusive states for lexing backslash commands */
+
+/*
+ * Assorted character class definitions that should match psqlscan.l.
+ */
+#line 1215 "psqlscanslash.c"
+
+#define INITIAL 0
+#define xslashcmd 1
+#define xslashargstart 2
+#define xslasharg 3
+#define xslashquote 4
+#define xslashbackquote 5
+#define xslashdquote 6
+#define xslashwholeline 7
+#define xslashend 8
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Holds the entire state of the reentrant scanner. */
+struct yyguts_t
+ {
+
+ /* User-defined. Not touched by flex. */
+ YY_EXTRA_TYPE yyextra_r;
+
+ /* The rest are the same as the globals declared in the non-reentrant scanner. */
+ FILE *yyin_r, *yyout_r;
+ size_t yy_buffer_stack_top; /**< index of top of stack. */
+ size_t yy_buffer_stack_max; /**< capacity of stack. */
+ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
+ char yy_hold_char;
+ int yy_n_chars;
+ int yyleng_r;
+ char *yy_c_buf_p;
+ int yy_init;
+ int yy_start;
+ int yy_did_buffer_switch_on_eof;
+ int yy_start_stack_ptr;
+ int yy_start_stack_depth;
+ int *yy_start_stack;
+ yy_state_type yy_last_accepting_state;
+ char* yy_last_accepting_cpos;
+
+ int yylineno_r;
+ int yy_flex_debug_r;
+
+ char *yytext_r;
+ int yy_more_flag;
+ int yy_more_len;
+
+ YYSTYPE * yylval_r;
+
+ }; /* end struct yyguts_t */
+
+static int yy_init_globals ( yyscan_t yyscanner );
+
+ /* This must go here because YYSTYPE and YYLTYPE are included
+ * from bison output in section 1.*/
+ # define yylval yyg->yylval_r
+
+int yylex_init (yyscan_t* scanner);
+
+int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy ( yyscan_t yyscanner );
+
+int yyget_debug ( yyscan_t yyscanner );
+
+void yyset_debug ( int debug_flag , yyscan_t yyscanner );
+
+YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
+
+void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
+
+FILE *yyget_in ( yyscan_t yyscanner );
+
+void yyset_in ( FILE * _in_str , yyscan_t yyscanner );
+
+FILE *yyget_out ( yyscan_t yyscanner );
+
+void yyset_out ( FILE * _out_str , yyscan_t yyscanner );
+
+ int yyget_leng ( yyscan_t yyscanner );
+
+char *yyget_text ( yyscan_t yyscanner );
+
+int yyget_lineno ( yyscan_t yyscanner );
+
+void yyset_lineno ( int _line_number , yyscan_t yyscanner );
+
+int yyget_column ( yyscan_t yyscanner );
+
+void yyset_column ( int _column_no , yyscan_t yyscanner );
+
+YYSTYPE * yyget_lval ( yyscan_t yyscanner );
+
+void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap ( yyscan_t yyscanner );
+#else
+extern int yywrap ( yyscan_t yyscanner );
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput ( yyscan_t yyscanner );
+#else
+static int input ( yyscan_t yyscanner );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ int n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex \
+ (YYSTYPE * yylval_param , yyscan_t yyscanner);
+
+#define YY_DECL int yylex \
+ (YYSTYPE * yylval_param , yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK /*LINTED*/break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ yy_state_type yy_current_state;
+ char *yy_cp, *yy_bp;
+ int yy_act;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yylval = yylval_param;
+
+ if ( !yyg->yy_init )
+ {
+ yyg->yy_init = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! yyg->yy_start )
+ yyg->yy_start = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ yyensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
+ }
+
+ yy_load_buffer_state( yyscanner );
+ }
+
+ {
+#line 121 "psqlscanslash.l"
+
+
+
+#line 125 "psqlscanslash.l"
+ /* Declare some local variables inside yylex(), for convenience */
+ PsqlScanState cur_state = yyextra;
+ PQExpBuffer output_buf = cur_state->output_buf;
+
+ /*
+ * Force flex into the state indicated by start_state. This has a
+ * couple of purposes: it lets some of the functions below set a new
+ * starting state without ugly direct access to flex variables, and it
+ * allows us to transition from one flex lexer to another so that we
+ * can lex different parts of the source string using separate lexers.
+ */
+ BEGIN(cur_state->start_state);
+
+
+ /*
+ * We don't really expect to be invoked in the INITIAL state in this
+ * lexer; but if we are, just spit data to the output_buf until EOF.
+ */
+
+#line 1519 "psqlscanslash.c"
+
+ while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yyg->yy_c_buf_p;
+
+ /* Support of yytext. */
+ *yy_cp = yyg->yy_hold_char;
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = yyg->yy_start;
+yy_match:
+ while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
+ ++yy_cp;
+
+ yy_current_state = -yy_current_state;
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 144 "psqlscanslash.l"
+{ ECHO; }
+ YY_BREAK
+/*
+ * Exclusive lexer states to handle backslash command lexing
+ */
+
+/* command name ends at whitespace or backslash; eat all else */
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 153 "psqlscanslash.l"
+{
+ yyless(0);
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 159 "psqlscanslash.l"
+{ ECHO; }
+ YY_BREAK
+
+
+/*
+ * Discard any whitespace before argument, then go to xslasharg state.
+ * An exception is that "|" is only special at start of argument, so we
+ * check for it here.
+ */
+case 4:
+/* rule 4 can match eol */
+YY_RULE_SETUP
+#line 170 "psqlscanslash.l"
+{ }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 172 "psqlscanslash.l"
+{
+ if (option_type == OT_FILEPIPE)
+ {
+ /* treat like whole-string case */
+ ECHO;
+ BEGIN(xslashwholeline);
+ }
+ else
+ {
+ /* vertical bar is not special otherwise */
+ yyless(0);
+ BEGIN(xslasharg);
+ }
+ }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 187 "psqlscanslash.l"
+{
+ yyless(0);
+ BEGIN(xslasharg);
+ }
+ YY_BREAK
+
+
+/*
+ * Default processing of text in a slash command's argument.
+ *
+ * Note: unquoted_option_chars counts the number of characters at the
+ * end of the argument that were not subject to any form of quoting.
+ * psql_scan_slash_option needs this to strip trailing semicolons safely.
+ */
+case 7:
+/* rule 7 can match eol */
+YY_RULE_SETUP
+#line 203 "psqlscanslash.l"
+{
+ /*
+ * Unquoted space is end of arg; do not eat. Likewise
+ * backslash is end of command or next command, do not eat
+ *
+ * XXX this means we can't conveniently accept options
+ * that include unquoted backslashes; therefore, option
+ * processing that encourages use of backslashes is rather
+ * broken.
+ */
+ yyless(0);
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 218 "psqlscanslash.l"
+{
+ *option_quote = '\'';
+ unquoted_option_chars = 0;
+ BEGIN(xslashquote);
+ }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 224 "psqlscanslash.l"
+{
+ backtick_start_offset = output_buf->len;
+ *option_quote = '`';
+ unquoted_option_chars = 0;
+ BEGIN(xslashbackquote);
+ }
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 231 "psqlscanslash.l"
+{
+ ECHO;
+ *option_quote = '"';
+ unquoted_option_chars = 0;
+ BEGIN(xslashdquote);
+ }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 238 "psqlscanslash.l"
+{
+ /* Possible psql variable substitution */
+ if (cur_state->callbacks->get_variable == NULL)
+ ECHO;
+ else
+ {
+ char *varname;
+ char *value;
+
+ varname = psqlscan_extract_substring(cur_state,
+ yytext + 1,
+ yyleng - 1);
+ value = cur_state->callbacks->get_variable(varname,
+ PQUOTE_PLAIN,
+ cur_state->cb_passthrough);
+ free(varname);
+
+ /*
+ * The variable value is just emitted without any
+ * further examination. This is consistent with the
+ * pre-8.0 code behavior, if not with the way that
+ * variables are handled outside backslash commands.
+ * Note that we needn't guard against recursion here.
+ */
+ if (value)
+ {
+ appendPQExpBufferStr(output_buf, value);
+ free(value);
+ }
+ else
+ ECHO;
+
+ *option_quote = ':';
+ }
+ unquoted_option_chars = 0;
+ }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 275 "psqlscanslash.l"
+{
+ psqlscan_escape_variable(cur_state, yytext, yyleng,
+ PQUOTE_SQL_LITERAL);
+ *option_quote = ':';
+ unquoted_option_chars = 0;
+ }
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 283 "psqlscanslash.l"
+{
+ psqlscan_escape_variable(cur_state, yytext, yyleng,
+ PQUOTE_SQL_IDENT);
+ *option_quote = ':';
+ unquoted_option_chars = 0;
+ }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 290 "psqlscanslash.l"
+{
+ psqlscan_test_variable(cur_state, yytext, yyleng);
+ }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 294 "psqlscanslash.l"
+{
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 301 "psqlscanslash.l"
+{
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 308 "psqlscanslash.l"
+{
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 315 "psqlscanslash.l"
+{
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 322 "psqlscanslash.l"
+{
+ unquoted_option_chars++;
+ ECHO;
+ }
+ YY_BREAK
+
+
+/*
+ * single-quoted text: copy literally except for '' and backslash
+ * sequences
+ */
+case 20:
+YY_RULE_SETUP
+#line 335 "psqlscanslash.l"
+{ BEGIN(xslasharg); }
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 337 "psqlscanslash.l"
+{ appendPQExpBufferChar(output_buf, '\''); }
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 339 "psqlscanslash.l"
+{ appendPQExpBufferChar(output_buf, '\n'); }
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 340 "psqlscanslash.l"
+{ appendPQExpBufferChar(output_buf, '\t'); }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 341 "psqlscanslash.l"
+{ appendPQExpBufferChar(output_buf, '\b'); }
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 342 "psqlscanslash.l"
+{ appendPQExpBufferChar(output_buf, '\r'); }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 343 "psqlscanslash.l"
+{ appendPQExpBufferChar(output_buf, '\f'); }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 345 "psqlscanslash.l"
+{
+ /* octal case */
+ appendPQExpBufferChar(output_buf,
+ (char) strtol(yytext + 1, NULL, 8));
+ }
+ YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 351 "psqlscanslash.l"
+{
+ /* hex case */
+ appendPQExpBufferChar(output_buf,
+ (char) strtol(yytext + 2, NULL, 16));
+ }
+ YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 357 "psqlscanslash.l"
+{ psqlscan_emit(cur_state, yytext + 1, 1); }
+ YY_BREAK
+case 30:
+/* rule 30 can match eol */
+YY_RULE_SETUP
+#line 359 "psqlscanslash.l"
+{ ECHO; }
+ YY_BREAK
+
+
+/*
+ * backticked text: copy everything until next backquote (expanding
+ * variable references, but doing nought else), then evaluate.
+ */
+case 31:
+YY_RULE_SETUP
+#line 369 "psqlscanslash.l"
+{
+ /* In an inactive \if branch, don't evaluate the command */
+ if (cur_state->cb_passthrough == NULL ||
+ conditional_active((ConditionalStack) cur_state->cb_passthrough))
+ evaluate_backtick(cur_state);
+ BEGIN(xslasharg);
+ }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 377 "psqlscanslash.l"
+{
+ /* Possible psql variable substitution */
+ if (cur_state->callbacks->get_variable == NULL)
+ ECHO;
+ else
+ {
+ char *varname;
+ char *value;
+
+ varname = psqlscan_extract_substring(cur_state,
+ yytext + 1,
+ yyleng - 1);
+ value = cur_state->callbacks->get_variable(varname,
+ PQUOTE_PLAIN,
+ cur_state->cb_passthrough);
+ free(varname);
+
+ if (value)
+ {
+ appendPQExpBufferStr(output_buf, value);
+ free(value);
+ }
+ else
+ ECHO;
+ }
+ }
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 404 "psqlscanslash.l"
+{
+ psqlscan_escape_variable(cur_state, yytext, yyleng,
+ PQUOTE_SHELL_ARG);
+ }
+ YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 409 "psqlscanslash.l"
+{
+ /* Throw back everything but the colon */
+ yyless(1);
+ ECHO;
+ }
+ YY_BREAK
+case 35:
+/* rule 35 can match eol */
+YY_RULE_SETUP
+#line 415 "psqlscanslash.l"
+{ ECHO; }
+ YY_BREAK
+
+
+/* double-quoted text: copy verbatim, including the double quotes */
+case 36:
+YY_RULE_SETUP
+#line 422 "psqlscanslash.l"
+{
+ ECHO;
+ BEGIN(xslasharg);
+ }
+ YY_BREAK
+case 37:
+/* rule 37 can match eol */
+YY_RULE_SETUP
+#line 427 "psqlscanslash.l"
+{ ECHO; }
+ YY_BREAK
+
+
+/* copy everything until end of input line */
+/* but suppress leading whitespace */
+case 38:
+/* rule 38 can match eol */
+YY_RULE_SETUP
+#line 435 "psqlscanslash.l"
+{
+ if (output_buf->len > 0)
+ ECHO;
+ }
+ YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 440 "psqlscanslash.l"
+{ ECHO; }
+ YY_BREAK
+
+
+/* at end of command, eat a double backslash, but not anything else */
+case 40:
+YY_RULE_SETUP
+#line 447 "psqlscanslash.l"
+{
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+ YY_BREAK
+case 41:
+/* rule 41 can match eol */
+YY_RULE_SETUP
+#line 452 "psqlscanslash.l"
+{
+ yyless(0);
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+ YY_BREAK
+
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(xslashcmd):
+case YY_STATE_EOF(xslashargstart):
+case YY_STATE_EOF(xslasharg):
+case YY_STATE_EOF(xslashquote):
+case YY_STATE_EOF(xslashbackquote):
+case YY_STATE_EOF(xslashdquote):
+case YY_STATE_EOF(xslashwholeline):
+case YY_STATE_EOF(xslashend):
+#line 460 "psqlscanslash.l"
+{
+ if (cur_state->buffer_stack == NULL)
+ {
+ cur_state->start_state = YY_START;
+ return LEXRES_EOL; /* end of input reached */
+ }
+
+ /*
+ * We were expanding a variable, so pop the inclusion
+ * stack and keep lexing
+ */
+ psqlscan_pop_buffer_stack(cur_state);
+ psqlscan_select_top_buffer(cur_state);
+ }
+ YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 475 "psqlscanslash.l"
+YY_FATAL_ERROR( "flex scanner jammed" );
+ YY_BREAK
+#line 2013 "psqlscanslash.c"
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = yyg->yy_hold_char;
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
+
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++yyg->yy_c_buf_p;
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = yyg->yy_c_buf_p;
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ yyg->yy_did_buffer_switch_on_eof = 0;
+
+ if ( yywrap( yyscanner ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p =
+ yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ yyg->yy_c_buf_p =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+ } /* end of user's declarations */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ char *source = yyg->yytext_ptr;
+ int number_to_move, i;
+ int ret_val;
+
+ if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+ int yy_c_buf_p_offset =
+ (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yyrealloc( (void *) b->yy_ch_buf,
+ (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = NULL;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ yyg->yy_n_chars, num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ if ( yyg->yy_n_chars == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ yyrestart( yyin , yyscanner);
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
+ (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ /* "- 2" to take care of EOB's */
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
+ }
+
+ yyg->yy_n_chars += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
+{
+ yy_state_type yy_current_state;
+ char *yy_cp;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_current_state = yyg->yy_start;
+
+ for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+ {
+ yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
+{
+ int yy_is_jam;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
+
+ yy_current_state = yy_nxt[yy_current_state][1];
+ yy_is_jam = (yy_current_state <= 0);
+
+ (void)yyg;
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_UNPUT
+
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (yyscan_t yyscanner)
+#else
+ static int input (yyscan_t yyscanner)
+#endif
+
+{
+ int c;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+
+ if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ /* This was really a NUL. */
+ *yyg->yy_c_buf_p = '\0';
+
+ else
+ { /* need more input */
+ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
+ ++yyg->yy_c_buf_p;
+
+ switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ yyrestart( yyin , yyscanner);
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap( yyscanner ) )
+ return 0;
+
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput(yyscanner);
+#else
+ return input(yyscanner);
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
+ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
+ yyg->yy_hold_char = *++yyg->yy_c_buf_p;
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * @param yyscanner The scanner object.
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
+ }
+
+ yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
+ yy_load_buffer_state( yyscanner );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * @param yyscanner The scanner object.
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack (yyscanner);
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ yy_load_buffer_state( yyscanner );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+static void yy_load_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ yyg->yy_hold_char = *yyg->yy_c_buf_p;
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * @param yyscanner The scanner object.
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ yy_init_buffer( b, file , yyscanner);
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * @param yyscanner The scanner object.
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree( (void *) b->yy_ch_buf , yyscanner );
+
+ yyfree( (void *) b , yyscanner );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
+
+{
+ int oerrno = errno;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_flush_buffer( b , yyscanner);
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * @param yyscanner The scanner object.
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ yy_load_buffer_state( yyscanner );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ * @param yyscanner The scanner object.
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack(yyscanner);
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ yyg->yy_buffer_stack_top++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state( yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ * @param yyscanner The scanner object.
+ */
+void yypop_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if (yyg->yy_buffer_stack_top > 0)
+ --yyg->yy_buffer_stack_top;
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state( yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (yyscan_t yyscanner)
+{
+ yy_size_t num_to_alloc;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (!yyg->yy_buffer_stack) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ yyg->yy_buffer_stack_top = 0;
+ return;
+ }
+
+ if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ yy_size_t grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
+ (yyg->yy_buffer_stack,
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return NULL;
+
+ b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+ b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = NULL;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ yy_switch_to_buffer( b , yyscanner );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
+{
+
+ return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = (yy_size_t) (_yybytes_len + 2);
+ buf = (char *) yyalloc( n , yyscanner );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = yy_scan_buffer( buf, n , yyscanner);
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+ fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = yyg->yy_hold_char; \
+ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
+ yyg->yy_hold_char = *yyg->yy_c_buf_p; \
+ *yyg->yy_c_buf_p = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the user-defined data for this scanner.
+ * @param yyscanner The scanner object.
+ */
+YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyextra;
+}
+
+/** Get the current line number.
+ * @param yyscanner The scanner object.
+ */
+int yyget_lineno (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yylineno;
+}
+
+/** Get the current column number.
+ * @param yyscanner The scanner object.
+ */
+int yyget_column (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yycolumn;
+}
+
+/** Get the input stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *yyget_in (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyin;
+}
+
+/** Get the output stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *yyget_out (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyout;
+}
+
+/** Get the length of the current token.
+ * @param yyscanner The scanner object.
+ */
+int yyget_leng (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyleng;
+}
+
+/** Get the current token.
+ * @param yyscanner The scanner object.
+ */
+
+char *yyget_text (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yytext;
+}
+
+/** Set the user-defined data. This data is never touched by the scanner.
+ * @param user_defined The data to be associated with this scanner.
+ * @param yyscanner The scanner object.
+ */
+void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyextra = user_defined ;
+}
+
+/** Set the current line number.
+ * @param _line_number line number
+ * @param yyscanner The scanner object.
+ */
+void yyset_lineno (int _line_number , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* lineno is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
+
+ yylineno = _line_number;
+}
+
+/** Set the current column.
+ * @param _column_no column number
+ * @param yyscanner The scanner object.
+ */
+void yyset_column (int _column_no , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* column is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ YY_FATAL_ERROR( "yyset_column called with no buffer" );
+
+ yycolumn = _column_no;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param _in_str A readable stream.
+ * @param yyscanner The scanner object.
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * _in_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyin = _in_str ;
+}
+
+void yyset_out (FILE * _out_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyout = _out_str ;
+}
+
+int yyget_debug (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yy_flex_debug;
+}
+
+void yyset_debug (int _bdebug , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yy_flex_debug = _bdebug ;
+}
+
+/* Accessor methods for yylval and yylloc */
+
+YYSTYPE * yyget_lval (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yylval;
+}
+
+void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yylval = yylval_param;
+}
+
+/* User-visible API */
+
+/* yylex_init is special because it creates the scanner itself, so it is
+ * the ONLY reentrant function that doesn't take the scanner as the last argument.
+ * That's why we explicitly handle the declaration, instead of using our macros.
+ */
+int yylex_init(yyscan_t* ptr_yy_globals)
+{
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+/* yylex_init_extra has the same functionality as yylex_init, but follows the
+ * convention of taking the scanner as the last argument. Note however, that
+ * this is a *pointer* to a scanner, as it will be allocated by this call (and
+ * is the reason, too, why this function also must handle its own declaration).
+ * The user defined value in the first argument will be available to yyalloc in
+ * the yyextra field.
+ */
+int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
+{
+ struct yyguts_t dummy_yyguts;
+
+ yyset_extra (yy_user_defined, &dummy_yyguts);
+
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in
+ yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ yyset_extra (yy_user_defined, *ptr_yy_globals);
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+static int yy_init_globals (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ yyg->yy_buffer_stack = NULL;
+ yyg->yy_buffer_stack_top = 0;
+ yyg->yy_buffer_stack_max = 0;
+ yyg->yy_c_buf_p = NULL;
+ yyg->yy_init = 0;
+ yyg->yy_start = 0;
+
+ yyg->yy_start_stack_ptr = 0;
+ yyg->yy_start_stack_depth = 0;
+ yyg->yy_start_stack = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = NULL;
+ yyout = NULL;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state(yyscanner);
+ }
+
+ /* Destroy the stack itself. */
+ yyfree(yyg->yy_buffer_stack , yyscanner);
+ yyg->yy_buffer_stack = NULL;
+
+ /* Destroy the start condition stack. */
+ yyfree( yyg->yy_start_stack , yyscanner );
+ yyg->yy_start_stack = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( yyscanner);
+
+ /* Destroy the main struct (reentrant only). */
+ yyfree ( yyscanner , yyscanner );
+ yyscanner = NULL;
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+
+ int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
+{
+ int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+ return malloc(size);
+}
+
+void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return realloc(ptr, size);
+}
+
+void yyfree (void * ptr , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ (void)yyg;
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 475 "psqlscanslash.l"
+
+
+/* LCOV_EXCL_STOP */
+
+/*
+ * Scan the command name of a psql backslash command. This should be called
+ * after psql_scan() returns PSCAN_BACKSLASH. It is assumed that the input
+ * has been consumed through the leading backslash.
+ *
+ * The return value is a malloc'd copy of the command name, as parsed off
+ * from the input.
+ */
+char *
+psql_scan_slash_command(PsqlScanState state)
+{
+ PQExpBufferData mybuf;
+
+ /* Must be scanning already */
+ Assert(state->scanbufhandle != NULL);
+
+ /* Build a local buffer that we'll return the data of */
+ initPQExpBuffer(&mybuf);
+
+ /* Set current output target */
+ state->output_buf = &mybuf;
+
+ /* Set input source */
+ if (state->buffer_stack != NULL)
+ yy_switch_to_buffer(state->buffer_stack->buf, state->scanner);
+ else
+ yy_switch_to_buffer(state->scanbufhandle, state->scanner);
+
+ /*
+ * Set lexer start state. Note that this is sufficient to switch
+ * state->scanner over to using the tables in this lexer file.
+ */
+ state->start_state = xslashcmd;
+
+ /* And lex. */
+ yylex(NULL, state->scanner);
+
+ /* There are no possible errors in this lex state... */
+
+ /*
+ * In case the caller returns to using the regular SQL lexer, reselect the
+ * appropriate initial state.
+ */
+ psql_scan_reselect_sql_lexer(state);
+
+ return mybuf.data;
+}
+
+/*
+ * Parse off the next argument for a backslash command, and return it as a
+ * malloc'd string. If there are no more arguments, returns NULL.
+ *
+ * type tells what processing, if any, to perform on the option string;
+ * for example, if it's a SQL identifier, we want to downcase any unquoted
+ * letters.
+ *
+ * if quote is not NULL, *quote is set to 0 if no quoting was found, else
+ * the last quote symbol used in the argument.
+ *
+ * if semicolon is true, unquoted trailing semicolon(s) that would otherwise
+ * be taken as part of the option string will be stripped.
+ *
+ * NOTE: the only possible syntax errors for backslash options are unmatched
+ * quotes, which are detected when we run out of input. Therefore, on a
+ * syntax error we just throw away the string and return NULL; there is no
+ * need to worry about flushing remaining input.
+ */
+char *
+psql_scan_slash_option(PsqlScanState state,
+ enum slash_option_type type,
+ char *quote,
+ bool semicolon)
+{
+ PQExpBufferData mybuf;
+ int lexresult PG_USED_FOR_ASSERTS_ONLY;
+ int final_state;
+ char local_quote;
+
+ /* Must be scanning already */
+ Assert(state->scanbufhandle != NULL);
+
+ if (quote == NULL)
+ quote = &local_quote;
+ *quote = 0;
+
+ /* Build a local buffer that we'll return the data of */
+ initPQExpBuffer(&mybuf);
+
+ /* Set up static variables that will be used by yylex */
+ option_type = type;
+ option_quote = quote;
+ unquoted_option_chars = 0;
+
+ /* Set current output target */
+ state->output_buf = &mybuf;
+
+ /* Set input source */
+ if (state->buffer_stack != NULL)
+ yy_switch_to_buffer(state->buffer_stack->buf, state->scanner);
+ else
+ yy_switch_to_buffer(state->scanbufhandle, state->scanner);
+
+ /* Set lexer start state */
+ if (type == OT_WHOLE_LINE)
+ state->start_state = xslashwholeline;
+ else
+ state->start_state = xslashargstart;
+
+ /* And lex. */
+ lexresult = yylex(NULL, state->scanner);
+
+ /* Save final state for a moment... */
+ final_state = state->start_state;
+
+ /*
+ * In case the caller returns to using the regular SQL lexer, reselect the
+ * appropriate initial state.
+ */
+ psql_scan_reselect_sql_lexer(state);
+
+ /*
+ * Check the lex result: we should have gotten back either LEXRES_OK
+ * or LEXRES_EOL (the latter indicating end of string). If we were inside
+ * a quoted string, as indicated by final_state, EOL is an error.
+ */
+ Assert(lexresult == LEXRES_EOL || lexresult == LEXRES_OK);
+
+ switch (final_state)
+ {
+ case xslashargstart:
+ /* empty arg */
+ break;
+ case xslasharg:
+ /* Strip any unquoted trailing semi-colons if requested */
+ if (semicolon)
+ {
+ while (unquoted_option_chars-- > 0 &&
+ mybuf.len > 0 &&
+ mybuf.data[mybuf.len - 1] == ';')
+ {
+ mybuf.data[--mybuf.len] = '\0';
+ }
+ }
+
+ /*
+ * If SQL identifier processing was requested, then we strip out
+ * excess double quotes and optionally downcase unquoted letters.
+ */
+ if (type == OT_SQLID || type == OT_SQLIDHACK)
+ {
+ dequote_downcase_identifier(mybuf.data,
+ (type != OT_SQLIDHACK),
+ state->encoding);
+ /* update mybuf.len for possible shortening */
+ mybuf.len = strlen(mybuf.data);
+ }
+ break;
+ case xslashquote:
+ case xslashbackquote:
+ case xslashdquote:
+ /* must have hit EOL inside quotes */
+ pg_log_error("unterminated quoted string");
+ termPQExpBuffer(&mybuf);
+ return NULL;
+ case xslashwholeline:
+ /* always okay */
+ break;
+ default:
+ /* can't get here */
+ fprintf(stderr, "invalid YY_START\n");
+ exit(1);
+ }
+
+ /*
+ * An unquoted empty argument isn't possible unless we are at end of
+ * command. Return NULL instead.
+ */
+ if (mybuf.len == 0 && *quote == 0)
+ {
+ termPQExpBuffer(&mybuf);
+ return NULL;
+ }
+
+ /* Else return the completed string. */
+ return mybuf.data;
+}
+
+/*
+ * Eat up any unused \\ to complete a backslash command.
+ */
+void
+psql_scan_slash_command_end(PsqlScanState state)
+{
+ /* Must be scanning already */
+ Assert(state->scanbufhandle != NULL);
+
+ /* Set current output target */
+ state->output_buf = NULL; /* we won't output anything */
+
+ /* Set input source */
+ if (state->buffer_stack != NULL)
+ yy_switch_to_buffer(state->buffer_stack->buf, state->scanner);
+ else
+ yy_switch_to_buffer(state->scanbufhandle, state->scanner);
+
+ /* Set lexer start state */
+ state->start_state = xslashend;
+
+ /* And lex. */
+ yylex(NULL, state->scanner);
+
+ /* There are no possible errors in this lex state... */
+
+ /*
+ * We expect the caller to return to using the regular SQL lexer, so
+ * reselect the appropriate initial state.
+ */
+ psql_scan_reselect_sql_lexer(state);
+}
+
+/*
+ * Fetch current paren nesting depth
+ */
+int
+psql_scan_get_paren_depth(PsqlScanState state)
+{
+ return state->paren_depth;
+}
+
+/*
+ * Set paren nesting depth
+ */
+void
+psql_scan_set_paren_depth(PsqlScanState state, int depth)
+{
+ Assert(depth >= 0);
+ state->paren_depth = depth;
+}
+
+/*
+ * De-quote and optionally downcase a SQL identifier.
+ *
+ * The string at *str is modified in-place; it can become shorter,
+ * but not longer.
+ *
+ * If downcase is true then non-quoted letters are folded to lower case.
+ * Ideally this behavior will match the backend's downcase_identifier();
+ * but note that it could differ if LC_CTYPE is different in the frontend.
+ *
+ * Note that a string like FOO"BAR"BAZ will be converted to fooBARbaz;
+ * this is somewhat inconsistent with the SQL spec, which would have us
+ * parse it as several identifiers. But for psql's purposes, we want a
+ * string like "foo"."bar" to be treated as one option, so there's little
+ * choice; this routine doesn't get to change the token boundaries.
+ */
+void
+dequote_downcase_identifier(char *str, bool downcase, int encoding)
+{
+ bool inquotes = false;
+ char *cp = str;
+
+ while (*cp)
+ {
+ if (*cp == '"')
+ {
+ if (inquotes && cp[1] == '"')
+ {
+ /* Keep the first quote, remove the second */
+ cp++;
+ }
+ else
+ inquotes = !inquotes;
+ /* Collapse out quote at *cp */
+ memmove(cp, cp + 1, strlen(cp));
+ /* do not advance cp */
+ }
+ else
+ {
+ if (downcase && !inquotes)
+ *cp = pg_tolower((unsigned char) *cp);
+ cp += PQmblenBounded(cp, encoding);
+ }
+ }
+}
+
+/*
+ * Evaluate a backticked substring of a slash command's argument.
+ *
+ * The portion of output_buf starting at backtick_start_offset is evaluated
+ * as a shell command and then replaced by the command's output.
+ */
+static void
+evaluate_backtick(PsqlScanState state)
+{
+ PQExpBuffer output_buf = state->output_buf;
+ char *cmd = output_buf->data + backtick_start_offset;
+ PQExpBufferData cmd_output;
+ FILE *fd;
+ bool error = false;
+ char buf[512];
+ size_t result;
+
+ initPQExpBuffer(&cmd_output);
+
+ fd = popen(cmd, "r");
+ if (!fd)
+ {
+ pg_log_error("%s: %m", cmd);
+ error = true;
+ }
+
+ if (!error)
+ {
+ do
+ {
+ result = fread(buf, 1, sizeof(buf), fd);
+ if (ferror(fd))
+ {
+ pg_log_error("%s: %m", cmd);
+ error = true;
+ break;
+ }
+ appendBinaryPQExpBuffer(&cmd_output, buf, result);
+ } while (!feof(fd));
+ }
+
+ if (fd && pclose(fd) == -1)
+ {
+ pg_log_error("%s: %m", cmd);
+ error = true;
+ }
+
+ if (PQExpBufferDataBroken(cmd_output))
+ {
+ pg_log_error("%s: out of memory", cmd);
+ error = true;
+ }
+
+ /* Now done with cmd, delete it from output_buf */
+ output_buf->len = backtick_start_offset;
+ output_buf->data[output_buf->len] = '\0';
+
+ /* If no error, transfer result to output_buf */
+ if (!error)
+ {
+ /* strip any trailing newline (but only one) */
+ if (cmd_output.len > 0 &&
+ cmd_output.data[cmd_output.len - 1] == '\n')
+ cmd_output.len--;
+ appendBinaryPQExpBuffer(output_buf, cmd_output.data, cmd_output.len);
+ }
+
+ termPQExpBuffer(&cmd_output);
+}
+
diff --git a/src/bin/psql/psqlscanslash.h b/src/bin/psql/psqlscanslash.h
new file mode 100644
index 0000000..7210e49
--- /dev/null
+++ b/src/bin/psql/psqlscanslash.h
@@ -0,0 +1,40 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/psqlscanslash.h
+ */
+#ifndef PSQLSCANSLASH_H
+#define PSQLSCANSLASH_H
+
+#include "fe_utils/psqlscan.h"
+
+
+/* Different ways for scan_slash_option to handle parameter words */
+enum slash_option_type
+{
+ OT_NORMAL, /* normal case */
+ OT_SQLID, /* treat as SQL identifier */
+ OT_SQLIDHACK, /* SQL identifier, but don't downcase */
+ OT_FILEPIPE, /* it's a filename or pipe */
+ OT_WHOLE_LINE /* just snarf the rest of the line */
+};
+
+
+extern char *psql_scan_slash_command(PsqlScanState state);
+
+extern char *psql_scan_slash_option(PsqlScanState state,
+ enum slash_option_type type,
+ char *quote,
+ bool semicolon);
+
+extern void psql_scan_slash_command_end(PsqlScanState state);
+
+extern int psql_scan_get_paren_depth(PsqlScanState state);
+
+extern void psql_scan_set_paren_depth(PsqlScanState state, int depth);
+
+extern void dequote_downcase_identifier(char *str, bool downcase, int encoding);
+
+#endif /* PSQLSCANSLASH_H */
diff --git a/src/bin/psql/psqlscanslash.l b/src/bin/psql/psqlscanslash.l
new file mode 100644
index 0000000..390dc6c
--- /dev/null
+++ b/src/bin/psql/psqlscanslash.l
@@ -0,0 +1,831 @@
+%top{
+/*-------------------------------------------------------------------------
+ *
+ * psqlscanslash.l
+ * lexical scanner for psql backslash commands
+ *
+ * XXX Avoid creating backtracking cases --- see the backend lexer for info.
+ *
+ * See fe_utils/psqlscan_int.h for additional commentary.
+ *
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * IDENTIFICATION
+ * src/bin/psql/psqlscanslash.l
+ *
+ *-------------------------------------------------------------------------
+ */
+#include "postgres_fe.h"
+
+#include "psqlscanslash.h"
+#include "common/logging.h"
+#include "fe_utils/conditional.h"
+
+#include "libpq-fe.h"
+}
+
+%{
+#include "fe_utils/psqlscan_int.h"
+
+#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e))
+
+/*
+ * We must have a typedef YYSTYPE for yylex's first argument, but this lexer
+ * doesn't presently make use of that argument, so just declare it as int.
+ */
+typedef int YYSTYPE;
+
+/*
+ * Set the type of yyextra; we use it as a pointer back to the containing
+ * PsqlScanState.
+ */
+#define YY_EXTRA_TYPE PsqlScanState
+
+/*
+ * These variables do not need to be saved across calls. Yeah, it's a bit
+ * of a hack, but putting them into PsqlScanStateData would be klugy too.
+ */
+static enum slash_option_type option_type;
+static char *option_quote;
+static int unquoted_option_chars;
+static int backtick_start_offset;
+
+
+/* Return values from yylex() */
+#define LEXRES_EOL 0 /* end of input */
+#define LEXRES_OK 1 /* OK completion of backslash argument */
+
+
+static void evaluate_backtick(PsqlScanState state);
+
+#define ECHO psqlscan_emit(cur_state, yytext, yyleng)
+
+/*
+ * Work around a bug in flex 2.5.35: it emits a couple of functions that
+ * it forgets to emit declarations for. Since we use -Wmissing-prototypes,
+ * this would cause warnings. Providing our own declarations should be
+ * harmless even when the bug gets fixed.
+ */
+extern int slash_yyget_column(yyscan_t yyscanner);
+extern void slash_yyset_column(int column_no, yyscan_t yyscanner);
+
+/* LCOV_EXCL_START */
+
+%}
+
+/* Except for the prefix, these options should match psqlscan.l */
+%option reentrant
+%option bison-bridge
+%option 8bit
+%option never-interactive
+%option nodefault
+%option noinput
+%option nounput
+%option noyywrap
+%option warn
+%option prefix="slash_yy"
+
+/*
+ * OK, here is a short description of lex/flex rules behavior.
+ * The longest pattern which matches an input string is always chosen.
+ * For equal-length patterns, the first occurring in the rules list is chosen.
+ * INITIAL is the starting state, to which all non-conditional rules apply.
+ * Exclusive states change parsing rules while the state is active. When in
+ * an exclusive state, only those rules defined for that state apply.
+ */
+
+/* Exclusive states for lexing backslash commands */
+%x xslashcmd
+%x xslashargstart
+%x xslasharg
+%x xslashquote
+%x xslashbackquote
+%x xslashdquote
+%x xslashwholeline
+%x xslashend
+
+/*
+ * Assorted character class definitions that should match psqlscan.l.
+ */
+space [ \t\n\r\f]
+quote '
+xeoctesc [\\][0-7]{1,3}
+xehexesc [\\]x[0-9A-Fa-f]{1,2}
+xqdouble {quote}{quote}
+dquote \"
+variable_char [A-Za-z\200-\377_0-9]
+
+other .
+
+%%
+
+%{
+ /* Declare some local variables inside yylex(), for convenience */
+ PsqlScanState cur_state = yyextra;
+ PQExpBuffer output_buf = cur_state->output_buf;
+
+ /*
+ * Force flex into the state indicated by start_state. This has a
+ * couple of purposes: it lets some of the functions below set a new
+ * starting state without ugly direct access to flex variables, and it
+ * allows us to transition from one flex lexer to another so that we
+ * can lex different parts of the source string using separate lexers.
+ */
+ BEGIN(cur_state->start_state);
+%}
+
+ /*
+ * We don't really expect to be invoked in the INITIAL state in this
+ * lexer; but if we are, just spit data to the output_buf until EOF.
+ */
+
+{other}|\n { ECHO; }
+
+ /*
+ * Exclusive lexer states to handle backslash command lexing
+ */
+
+<xslashcmd>{
+ /* command name ends at whitespace or backslash; eat all else */
+
+{space}|"\\" {
+ yyless(0);
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+
+{other} { ECHO; }
+
+}
+
+<xslashargstart>{
+ /*
+ * Discard any whitespace before argument, then go to xslasharg state.
+ * An exception is that "|" is only special at start of argument, so we
+ * check for it here.
+ */
+
+{space}+ { }
+
+"|" {
+ if (option_type == OT_FILEPIPE)
+ {
+ /* treat like whole-string case */
+ ECHO;
+ BEGIN(xslashwholeline);
+ }
+ else
+ {
+ /* vertical bar is not special otherwise */
+ yyless(0);
+ BEGIN(xslasharg);
+ }
+ }
+
+{other} {
+ yyless(0);
+ BEGIN(xslasharg);
+ }
+
+}
+
+<xslasharg>{
+ /*
+ * Default processing of text in a slash command's argument.
+ *
+ * Note: unquoted_option_chars counts the number of characters at the
+ * end of the argument that were not subject to any form of quoting.
+ * psql_scan_slash_option needs this to strip trailing semicolons safely.
+ */
+
+{space}|"\\" {
+ /*
+ * Unquoted space is end of arg; do not eat. Likewise
+ * backslash is end of command or next command, do not eat
+ *
+ * XXX this means we can't conveniently accept options
+ * that include unquoted backslashes; therefore, option
+ * processing that encourages use of backslashes is rather
+ * broken.
+ */
+ yyless(0);
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+
+{quote} {
+ *option_quote = '\'';
+ unquoted_option_chars = 0;
+ BEGIN(xslashquote);
+ }
+
+"`" {
+ backtick_start_offset = output_buf->len;
+ *option_quote = '`';
+ unquoted_option_chars = 0;
+ BEGIN(xslashbackquote);
+ }
+
+{dquote} {
+ ECHO;
+ *option_quote = '"';
+ unquoted_option_chars = 0;
+ BEGIN(xslashdquote);
+ }
+
+:{variable_char}+ {
+ /* Possible psql variable substitution */
+ if (cur_state->callbacks->get_variable == NULL)
+ ECHO;
+ else
+ {
+ char *varname;
+ char *value;
+
+ varname = psqlscan_extract_substring(cur_state,
+ yytext + 1,
+ yyleng - 1);
+ value = cur_state->callbacks->get_variable(varname,
+ PQUOTE_PLAIN,
+ cur_state->cb_passthrough);
+ free(varname);
+
+ /*
+ * The variable value is just emitted without any
+ * further examination. This is consistent with the
+ * pre-8.0 code behavior, if not with the way that
+ * variables are handled outside backslash commands.
+ * Note that we needn't guard against recursion here.
+ */
+ if (value)
+ {
+ appendPQExpBufferStr(output_buf, value);
+ free(value);
+ }
+ else
+ ECHO;
+
+ *option_quote = ':';
+ }
+ unquoted_option_chars = 0;
+ }
+
+:'{variable_char}+' {
+ psqlscan_escape_variable(cur_state, yytext, yyleng,
+ PQUOTE_SQL_LITERAL);
+ *option_quote = ':';
+ unquoted_option_chars = 0;
+ }
+
+
+:\"{variable_char}+\" {
+ psqlscan_escape_variable(cur_state, yytext, yyleng,
+ PQUOTE_SQL_IDENT);
+ *option_quote = ':';
+ unquoted_option_chars = 0;
+ }
+
+:\{\?{variable_char}+\} {
+ psqlscan_test_variable(cur_state, yytext, yyleng);
+ }
+
+:'{variable_char}* {
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+
+:\"{variable_char}* {
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+
+:\{\?{variable_char}* {
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+
+:\{ {
+ /* Throw back everything but the colon */
+ yyless(1);
+ unquoted_option_chars++;
+ ECHO;
+ }
+
+{other} {
+ unquoted_option_chars++;
+ ECHO;
+ }
+
+}
+
+<xslashquote>{
+ /*
+ * single-quoted text: copy literally except for '' and backslash
+ * sequences
+ */
+
+{quote} { BEGIN(xslasharg); }
+
+{xqdouble} { appendPQExpBufferChar(output_buf, '\''); }
+
+"\\n" { appendPQExpBufferChar(output_buf, '\n'); }
+"\\t" { appendPQExpBufferChar(output_buf, '\t'); }
+"\\b" { appendPQExpBufferChar(output_buf, '\b'); }
+"\\r" { appendPQExpBufferChar(output_buf, '\r'); }
+"\\f" { appendPQExpBufferChar(output_buf, '\f'); }
+
+{xeoctesc} {
+ /* octal case */
+ appendPQExpBufferChar(output_buf,
+ (char) strtol(yytext + 1, NULL, 8));
+ }
+
+{xehexesc} {
+ /* hex case */
+ appendPQExpBufferChar(output_buf,
+ (char) strtol(yytext + 2, NULL, 16));
+ }
+
+"\\". { psqlscan_emit(cur_state, yytext + 1, 1); }
+
+{other}|\n { ECHO; }
+
+}
+
+<xslashbackquote>{
+ /*
+ * backticked text: copy everything until next backquote (expanding
+ * variable references, but doing nought else), then evaluate.
+ */
+
+"`" {
+ /* In an inactive \if branch, don't evaluate the command */
+ if (cur_state->cb_passthrough == NULL ||
+ conditional_active((ConditionalStack) cur_state->cb_passthrough))
+ evaluate_backtick(cur_state);
+ BEGIN(xslasharg);
+ }
+
+:{variable_char}+ {
+ /* Possible psql variable substitution */
+ if (cur_state->callbacks->get_variable == NULL)
+ ECHO;
+ else
+ {
+ char *varname;
+ char *value;
+
+ varname = psqlscan_extract_substring(cur_state,
+ yytext + 1,
+ yyleng - 1);
+ value = cur_state->callbacks->get_variable(varname,
+ PQUOTE_PLAIN,
+ cur_state->cb_passthrough);
+ free(varname);
+
+ if (value)
+ {
+ appendPQExpBufferStr(output_buf, value);
+ free(value);
+ }
+ else
+ ECHO;
+ }
+ }
+
+:'{variable_char}+' {
+ psqlscan_escape_variable(cur_state, yytext, yyleng,
+ PQUOTE_SHELL_ARG);
+ }
+
+:'{variable_char}* {
+ /* Throw back everything but the colon */
+ yyless(1);
+ ECHO;
+ }
+
+{other}|\n { ECHO; }
+
+}
+
+<xslashdquote>{
+ /* double-quoted text: copy verbatim, including the double quotes */
+
+{dquote} {
+ ECHO;
+ BEGIN(xslasharg);
+ }
+
+{other}|\n { ECHO; }
+
+}
+
+<xslashwholeline>{
+ /* copy everything until end of input line */
+ /* but suppress leading whitespace */
+
+{space}+ {
+ if (output_buf->len > 0)
+ ECHO;
+ }
+
+{other} { ECHO; }
+
+}
+
+<xslashend>{
+ /* at end of command, eat a double backslash, but not anything else */
+
+"\\\\" {
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+
+{other}|\n {
+ yyless(0);
+ cur_state->start_state = YY_START;
+ return LEXRES_OK;
+ }
+
+}
+
+<<EOF>> {
+ if (cur_state->buffer_stack == NULL)
+ {
+ cur_state->start_state = YY_START;
+ return LEXRES_EOL; /* end of input reached */
+ }
+
+ /*
+ * We were expanding a variable, so pop the inclusion
+ * stack and keep lexing
+ */
+ psqlscan_pop_buffer_stack(cur_state);
+ psqlscan_select_top_buffer(cur_state);
+ }
+
+%%
+
+/* LCOV_EXCL_STOP */
+
+/*
+ * Scan the command name of a psql backslash command. This should be called
+ * after psql_scan() returns PSCAN_BACKSLASH. It is assumed that the input
+ * has been consumed through the leading backslash.
+ *
+ * The return value is a malloc'd copy of the command name, as parsed off
+ * from the input.
+ */
+char *
+psql_scan_slash_command(PsqlScanState state)
+{
+ PQExpBufferData mybuf;
+
+ /* Must be scanning already */
+ Assert(state->scanbufhandle != NULL);
+
+ /* Build a local buffer that we'll return the data of */
+ initPQExpBuffer(&mybuf);
+
+ /* Set current output target */
+ state->output_buf = &mybuf;
+
+ /* Set input source */
+ if (state->buffer_stack != NULL)
+ yy_switch_to_buffer(state->buffer_stack->buf, state->scanner);
+ else
+ yy_switch_to_buffer(state->scanbufhandle, state->scanner);
+
+ /*
+ * Set lexer start state. Note that this is sufficient to switch
+ * state->scanner over to using the tables in this lexer file.
+ */
+ state->start_state = xslashcmd;
+
+ /* And lex. */
+ yylex(NULL, state->scanner);
+
+ /* There are no possible errors in this lex state... */
+
+ /*
+ * In case the caller returns to using the regular SQL lexer, reselect the
+ * appropriate initial state.
+ */
+ psql_scan_reselect_sql_lexer(state);
+
+ return mybuf.data;
+}
+
+/*
+ * Parse off the next argument for a backslash command, and return it as a
+ * malloc'd string. If there are no more arguments, returns NULL.
+ *
+ * type tells what processing, if any, to perform on the option string;
+ * for example, if it's a SQL identifier, we want to downcase any unquoted
+ * letters.
+ *
+ * if quote is not NULL, *quote is set to 0 if no quoting was found, else
+ * the last quote symbol used in the argument.
+ *
+ * if semicolon is true, unquoted trailing semicolon(s) that would otherwise
+ * be taken as part of the option string will be stripped.
+ *
+ * NOTE: the only possible syntax errors for backslash options are unmatched
+ * quotes, which are detected when we run out of input. Therefore, on a
+ * syntax error we just throw away the string and return NULL; there is no
+ * need to worry about flushing remaining input.
+ */
+char *
+psql_scan_slash_option(PsqlScanState state,
+ enum slash_option_type type,
+ char *quote,
+ bool semicolon)
+{
+ PQExpBufferData mybuf;
+ int lexresult PG_USED_FOR_ASSERTS_ONLY;
+ int final_state;
+ char local_quote;
+
+ /* Must be scanning already */
+ Assert(state->scanbufhandle != NULL);
+
+ if (quote == NULL)
+ quote = &local_quote;
+ *quote = 0;
+
+ /* Build a local buffer that we'll return the data of */
+ initPQExpBuffer(&mybuf);
+
+ /* Set up static variables that will be used by yylex */
+ option_type = type;
+ option_quote = quote;
+ unquoted_option_chars = 0;
+
+ /* Set current output target */
+ state->output_buf = &mybuf;
+
+ /* Set input source */
+ if (state->buffer_stack != NULL)
+ yy_switch_to_buffer(state->buffer_stack->buf, state->scanner);
+ else
+ yy_switch_to_buffer(state->scanbufhandle, state->scanner);
+
+ /* Set lexer start state */
+ if (type == OT_WHOLE_LINE)
+ state->start_state = xslashwholeline;
+ else
+ state->start_state = xslashargstart;
+
+ /* And lex. */
+ lexresult = yylex(NULL, state->scanner);
+
+ /* Save final state for a moment... */
+ final_state = state->start_state;
+
+ /*
+ * In case the caller returns to using the regular SQL lexer, reselect the
+ * appropriate initial state.
+ */
+ psql_scan_reselect_sql_lexer(state);
+
+ /*
+ * Check the lex result: we should have gotten back either LEXRES_OK
+ * or LEXRES_EOL (the latter indicating end of string). If we were inside
+ * a quoted string, as indicated by final_state, EOL is an error.
+ */
+ Assert(lexresult == LEXRES_EOL || lexresult == LEXRES_OK);
+
+ switch (final_state)
+ {
+ case xslashargstart:
+ /* empty arg */
+ break;
+ case xslasharg:
+ /* Strip any unquoted trailing semi-colons if requested */
+ if (semicolon)
+ {
+ while (unquoted_option_chars-- > 0 &&
+ mybuf.len > 0 &&
+ mybuf.data[mybuf.len - 1] == ';')
+ {
+ mybuf.data[--mybuf.len] = '\0';
+ }
+ }
+
+ /*
+ * If SQL identifier processing was requested, then we strip out
+ * excess double quotes and optionally downcase unquoted letters.
+ */
+ if (type == OT_SQLID || type == OT_SQLIDHACK)
+ {
+ dequote_downcase_identifier(mybuf.data,
+ (type != OT_SQLIDHACK),
+ state->encoding);
+ /* update mybuf.len for possible shortening */
+ mybuf.len = strlen(mybuf.data);
+ }
+ break;
+ case xslashquote:
+ case xslashbackquote:
+ case xslashdquote:
+ /* must have hit EOL inside quotes */
+ pg_log_error("unterminated quoted string");
+ termPQExpBuffer(&mybuf);
+ return NULL;
+ case xslashwholeline:
+ /* always okay */
+ break;
+ default:
+ /* can't get here */
+ fprintf(stderr, "invalid YY_START\n");
+ exit(1);
+ }
+
+ /*
+ * An unquoted empty argument isn't possible unless we are at end of
+ * command. Return NULL instead.
+ */
+ if (mybuf.len == 0 && *quote == 0)
+ {
+ termPQExpBuffer(&mybuf);
+ return NULL;
+ }
+
+ /* Else return the completed string. */
+ return mybuf.data;
+}
+
+/*
+ * Eat up any unused \\ to complete a backslash command.
+ */
+void
+psql_scan_slash_command_end(PsqlScanState state)
+{
+ /* Must be scanning already */
+ Assert(state->scanbufhandle != NULL);
+
+ /* Set current output target */
+ state->output_buf = NULL; /* we won't output anything */
+
+ /* Set input source */
+ if (state->buffer_stack != NULL)
+ yy_switch_to_buffer(state->buffer_stack->buf, state->scanner);
+ else
+ yy_switch_to_buffer(state->scanbufhandle, state->scanner);
+
+ /* Set lexer start state */
+ state->start_state = xslashend;
+
+ /* And lex. */
+ yylex(NULL, state->scanner);
+
+ /* There are no possible errors in this lex state... */
+
+ /*
+ * We expect the caller to return to using the regular SQL lexer, so
+ * reselect the appropriate initial state.
+ */
+ psql_scan_reselect_sql_lexer(state);
+}
+
+/*
+ * Fetch current paren nesting depth
+ */
+int
+psql_scan_get_paren_depth(PsqlScanState state)
+{
+ return state->paren_depth;
+}
+
+/*
+ * Set paren nesting depth
+ */
+void
+psql_scan_set_paren_depth(PsqlScanState state, int depth)
+{
+ Assert(depth >= 0);
+ state->paren_depth = depth;
+}
+
+/*
+ * De-quote and optionally downcase a SQL identifier.
+ *
+ * The string at *str is modified in-place; it can become shorter,
+ * but not longer.
+ *
+ * If downcase is true then non-quoted letters are folded to lower case.
+ * Ideally this behavior will match the backend's downcase_identifier();
+ * but note that it could differ if LC_CTYPE is different in the frontend.
+ *
+ * Note that a string like FOO"BAR"BAZ will be converted to fooBARbaz;
+ * this is somewhat inconsistent with the SQL spec, which would have us
+ * parse it as several identifiers. But for psql's purposes, we want a
+ * string like "foo"."bar" to be treated as one option, so there's little
+ * choice; this routine doesn't get to change the token boundaries.
+ */
+void
+dequote_downcase_identifier(char *str, bool downcase, int encoding)
+{
+ bool inquotes = false;
+ char *cp = str;
+
+ while (*cp)
+ {
+ if (*cp == '"')
+ {
+ if (inquotes && cp[1] == '"')
+ {
+ /* Keep the first quote, remove the second */
+ cp++;
+ }
+ else
+ inquotes = !inquotes;
+ /* Collapse out quote at *cp */
+ memmove(cp, cp + 1, strlen(cp));
+ /* do not advance cp */
+ }
+ else
+ {
+ if (downcase && !inquotes)
+ *cp = pg_tolower((unsigned char) *cp);
+ cp += PQmblenBounded(cp, encoding);
+ }
+ }
+}
+
+/*
+ * Evaluate a backticked substring of a slash command's argument.
+ *
+ * The portion of output_buf starting at backtick_start_offset is evaluated
+ * as a shell command and then replaced by the command's output.
+ */
+static void
+evaluate_backtick(PsqlScanState state)
+{
+ PQExpBuffer output_buf = state->output_buf;
+ char *cmd = output_buf->data + backtick_start_offset;
+ PQExpBufferData cmd_output;
+ FILE *fd;
+ bool error = false;
+ char buf[512];
+ size_t result;
+
+ initPQExpBuffer(&cmd_output);
+
+ fd = popen(cmd, "r");
+ if (!fd)
+ {
+ pg_log_error("%s: %m", cmd);
+ error = true;
+ }
+
+ if (!error)
+ {
+ do
+ {
+ result = fread(buf, 1, sizeof(buf), fd);
+ if (ferror(fd))
+ {
+ pg_log_error("%s: %m", cmd);
+ error = true;
+ break;
+ }
+ appendBinaryPQExpBuffer(&cmd_output, buf, result);
+ } while (!feof(fd));
+ }
+
+ if (fd && pclose(fd) == -1)
+ {
+ pg_log_error("%s: %m", cmd);
+ error = true;
+ }
+
+ if (PQExpBufferDataBroken(cmd_output))
+ {
+ pg_log_error("%s: out of memory", cmd);
+ error = true;
+ }
+
+ /* Now done with cmd, delete it from output_buf */
+ output_buf->len = backtick_start_offset;
+ output_buf->data[output_buf->len] = '\0';
+
+ /* If no error, transfer result to output_buf */
+ if (!error)
+ {
+ /* strip any trailing newline (but only one) */
+ if (cmd_output.len > 0 &&
+ cmd_output.data[cmd_output.len - 1] == '\n')
+ cmd_output.len--;
+ appendBinaryPQExpBuffer(output_buf, cmd_output.data, cmd_output.len);
+ }
+
+ termPQExpBuffer(&cmd_output);
+}
diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h
new file mode 100644
index 0000000..97941aa
--- /dev/null
+++ b/src/bin/psql/settings.h
@@ -0,0 +1,161 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/settings.h
+ */
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+#include "fe_utils/print.h"
+#include "variables.h"
+
+#define DEFAULT_CSV_FIELD_SEP ','
+#define DEFAULT_FIELD_SEP "|"
+#define DEFAULT_RECORD_SEP "\n"
+
+#if defined(WIN32) || defined(__CYGWIN__)
+#define DEFAULT_EDITOR "notepad.exe"
+/* no DEFAULT_EDITOR_LINENUMBER_ARG for Notepad */
+#else
+#define DEFAULT_EDITOR "vi"
+#define DEFAULT_EDITOR_LINENUMBER_ARG "+"
+#endif
+
+#define DEFAULT_PROMPT1 "%/%R%x%# "
+#define DEFAULT_PROMPT2 "%/%R%x%# "
+#define DEFAULT_PROMPT3 ">> "
+
+/*
+ * Note: these enums should generally be chosen so that zero corresponds
+ * to the default behavior.
+ */
+
+typedef enum
+{
+ PSQL_ECHO_NONE,
+ PSQL_ECHO_QUERIES,
+ PSQL_ECHO_ERRORS,
+ PSQL_ECHO_ALL
+} PSQL_ECHO;
+
+typedef enum
+{
+ PSQL_ECHO_HIDDEN_OFF,
+ PSQL_ECHO_HIDDEN_ON,
+ PSQL_ECHO_HIDDEN_NOEXEC
+} PSQL_ECHO_HIDDEN;
+
+typedef enum
+{
+ PSQL_ERROR_ROLLBACK_OFF,
+ PSQL_ERROR_ROLLBACK_INTERACTIVE,
+ PSQL_ERROR_ROLLBACK_ON
+} PSQL_ERROR_ROLLBACK;
+
+typedef enum
+{
+ PSQL_COMP_CASE_PRESERVE_UPPER,
+ PSQL_COMP_CASE_PRESERVE_LOWER,
+ PSQL_COMP_CASE_UPPER,
+ PSQL_COMP_CASE_LOWER
+} PSQL_COMP_CASE;
+
+typedef enum
+{
+ hctl_none = 0,
+ hctl_ignorespace = 1,
+ hctl_ignoredups = 2,
+ hctl_ignoreboth = hctl_ignorespace | hctl_ignoredups
+} HistControl;
+
+enum trivalue
+{
+ TRI_DEFAULT,
+ TRI_NO,
+ TRI_YES
+};
+
+typedef struct _psqlSettings
+{
+ PGconn *db; /* connection to backend */
+ int encoding; /* client_encoding */
+ FILE *queryFout; /* where to send the query results */
+ bool queryFoutPipe; /* queryFout is from a popen() */
+
+ FILE *copyStream; /* Stream to read/write for \copy command */
+
+ PGresult *last_error_result; /* most recent error result, if any */
+
+ printQueryOpt popt; /* The active print format settings */
+
+ char *gfname; /* one-shot file output argument for \g */
+ printQueryOpt *gsavepopt; /* if not null, saved print format settings */
+
+ char *gset_prefix; /* one-shot prefix argument for \gset */
+ bool gdesc_flag; /* one-shot request to describe query results */
+ bool gexec_flag; /* one-shot request to execute query results */
+ bool crosstab_flag; /* one-shot request to crosstab results */
+ char *ctv_args[4]; /* \crosstabview arguments */
+
+ bool notty; /* stdin or stdout is not a tty (as determined
+ * on startup) */
+ enum trivalue getPassword; /* prompt the user for a username and password */
+ FILE *cur_cmd_source; /* describe the status of the current main
+ * loop */
+ bool cur_cmd_interactive;
+ int sversion; /* backend server version */
+ const char *progname; /* in case you renamed psql */
+ char *inputfile; /* file being currently processed, if any */
+ uint64 lineno; /* also for error reporting */
+ uint64 stmt_lineno; /* line number inside the current statement */
+
+ bool timing; /* enable timing of all queries */
+
+ FILE *logfile; /* session log file handle */
+
+ VariableSpace vars; /* "shell variable" repository */
+
+ /*
+ * The remaining fields are set by assign hooks associated with entries in
+ * "vars". They should not be set directly except by those hook
+ * functions.
+ */
+ bool autocommit;
+ bool on_error_stop;
+ bool quiet;
+ bool singleline;
+ bool singlestep;
+ bool hide_tableam;
+ int fetch_count;
+ int histsize;
+ int ignoreeof;
+ PSQL_ECHO echo;
+ PSQL_ECHO_HIDDEN echo_hidden;
+ PSQL_ERROR_ROLLBACK on_error_rollback;
+ PSQL_COMP_CASE comp_case;
+ HistControl histcontrol;
+ const char *prompt1;
+ const char *prompt2;
+ const char *prompt3;
+ PGVerbosity verbosity; /* current error verbosity level */
+ PGContextVisibility show_context; /* current context display level */
+} PsqlSettings;
+
+extern PsqlSettings pset;
+
+
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#endif
+
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE 1
+#endif
+
+#define EXIT_BADCONN 2
+
+#define EXIT_USER 3
+
+#endif
diff --git a/src/bin/psql/sql_help.c b/src/bin/psql/sql_help.c
new file mode 100644
index 0000000..d0a3a5e
--- /dev/null
+++ b/src/bin/psql/sql_help.c
@@ -0,0 +1,5921 @@
+/*
+ * *** Do not change this file by hand. It is automatically
+ * *** generated from the DocBook documentation.
+ *
+ * generated by src/bin/psql/create_help.pl
+ *
+ */
+
+#define N_(x) (x) /* gettext noop */
+
+#include "postgres_fe.h"
+#include "sql_help.h"
+
+static void
+sql_help_ABORT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ABORT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
+}
+
+static void
+sql_help_ALTER_AGGREGATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER AGGREGATE %s ( %s ) RENAME TO %s\n"
+ "ALTER AGGREGATE %s ( %s )\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER AGGREGATE %s ( %s ) SET SCHEMA %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "* |\n"
+ "[ %s ] [ %s ] %s [ , ... ] |\n"
+ "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
+ _("name"),
+ _("aggregate_signature"),
+ _("new_name"),
+ _("name"),
+ _("aggregate_signature"),
+ _("new_owner"),
+ _("name"),
+ _("aggregate_signature"),
+ _("new_schema"),
+ _("where aggregate_signature is:"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_ALTER_COLLATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER COLLATION %s REFRESH VERSION\n"
+ "\n"
+ "ALTER COLLATION %s RENAME TO %s\n"
+ "ALTER COLLATION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER COLLATION %s SET SCHEMA %s",
+ _("name"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_CONVERSION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER CONVERSION %s RENAME TO %s\n"
+ "ALTER CONVERSION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER CONVERSION %s SET SCHEMA %s",
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_DATABASE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER DATABASE %s [ [ WITH ] %s [ ... ] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ALLOW_CONNECTIONS %s\n"
+ " CONNECTION LIMIT %s\n"
+ " IS_TEMPLATE %s\n"
+ "\n"
+ "ALTER DATABASE %s RENAME TO %s\n"
+ "\n"
+ "ALTER DATABASE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "\n"
+ "ALTER DATABASE %s SET TABLESPACE %s\n"
+ "\n"
+ "ALTER DATABASE %s SET %s { TO | = } { %s | DEFAULT }\n"
+ "ALTER DATABASE %s SET %s FROM CURRENT\n"
+ "ALTER DATABASE %s RESET %s\n"
+ "ALTER DATABASE %s RESET ALL",
+ _("name"),
+ _("option"),
+ _("where option can be:"),
+ _("allowconn"),
+ _("connlimit"),
+ _("istemplate"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_tablespace"),
+ _("name"),
+ _("configuration_parameter"),
+ _("value"),
+ _("name"),
+ _("configuration_parameter"),
+ _("name"),
+ _("configuration_parameter"),
+ _("name"));
+}
+
+static void
+sql_help_ALTER_DEFAULT_PRIVILEGES(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER DEFAULT PRIVILEGES\n"
+ " [ FOR { ROLE | USER } %s [, ...] ]\n"
+ " [ IN SCHEMA %s [, ...] ]\n"
+ " %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON TABLES\n"
+ " TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { { USAGE | SELECT | UPDATE }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON SEQUENCES\n"
+ " TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
+ " ON { FUNCTIONS | ROUTINES }\n"
+ " TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON TYPES\n"
+ " TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }\n"
+ " ON SCHEMAS\n"
+ " TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON TABLES\n"
+ " FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { USAGE | SELECT | UPDATE }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON SEQUENCES\n"
+ " FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { EXECUTE | ALL [ PRIVILEGES ] }\n"
+ " ON { FUNCTIONS | ROUTINES }\n"
+ " FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON TYPES\n"
+ " FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { USAGE | CREATE | ALL [ PRIVILEGES ] }\n"
+ " ON SCHEMAS\n"
+ " FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
+ " [ CASCADE | RESTRICT ]",
+ _("target_role"),
+ _("schema_name"),
+ _("abbreviated_grant_or_revoke"),
+ _("where abbreviated_grant_or_revoke is one of:"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"));
+}
+
+static void
+sql_help_ALTER_DOMAIN(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER DOMAIN %s\n"
+ " { SET DEFAULT %s | DROP DEFAULT }\n"
+ "ALTER DOMAIN %s\n"
+ " { SET | DROP } NOT NULL\n"
+ "ALTER DOMAIN %s\n"
+ " ADD %s [ NOT VALID ]\n"
+ "ALTER DOMAIN %s\n"
+ " DROP CONSTRAINT [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
+ "ALTER DOMAIN %s\n"
+ " RENAME CONSTRAINT %s TO %s\n"
+ "ALTER DOMAIN %s\n"
+ " VALIDATE CONSTRAINT %s\n"
+ "ALTER DOMAIN %s\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER DOMAIN %s\n"
+ " RENAME TO %s\n"
+ "ALTER DOMAIN %s\n"
+ " SET SCHEMA %s",
+ _("name"),
+ _("expression"),
+ _("name"),
+ _("name"),
+ _("domain_constraint"),
+ _("name"),
+ _("constraint_name"),
+ _("name"),
+ _("constraint_name"),
+ _("new_constraint_name"),
+ _("name"),
+ _("constraint_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_EVENT_TRIGGER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER EVENT TRIGGER %s DISABLE\n"
+ "ALTER EVENT TRIGGER %s ENABLE [ REPLICA | ALWAYS ]\n"
+ "ALTER EVENT TRIGGER %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER EVENT TRIGGER %s RENAME TO %s",
+ _("name"),
+ _("name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"));
+}
+
+static void
+sql_help_ALTER_EXTENSION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER EXTENSION %s UPDATE [ TO %s ]\n"
+ "ALTER EXTENSION %s SET SCHEMA %s\n"
+ "ALTER EXTENSION %s ADD %s\n"
+ "ALTER EXTENSION %s DROP %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ACCESS METHOD %s |\n"
+ " AGGREGATE %s ( %s ) |\n"
+ " CAST (%s AS %s) |\n"
+ " COLLATION %s |\n"
+ " CONVERSION %s |\n"
+ " DOMAIN %s |\n"
+ " EVENT TRIGGER %s |\n"
+ " FOREIGN DATA WRAPPER %s |\n"
+ " FOREIGN TABLE %s |\n"
+ " FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " MATERIALIZED VIEW %s |\n"
+ " OPERATOR %s (%s, %s) |\n"
+ " OPERATOR CLASS %s USING %s |\n"
+ " OPERATOR FAMILY %s USING %s |\n"
+ " [ PROCEDURAL ] LANGUAGE %s |\n"
+ " PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " SCHEMA %s |\n"
+ " SEQUENCE %s |\n"
+ " SERVER %s |\n"
+ " TABLE %s |\n"
+ " TEXT SEARCH CONFIGURATION %s |\n"
+ " TEXT SEARCH DICTIONARY %s |\n"
+ " TEXT SEARCH PARSER %s |\n"
+ " TEXT SEARCH TEMPLATE %s |\n"
+ " TRANSFORM FOR %s LANGUAGE %s |\n"
+ " TYPE %s |\n"
+ " VIEW %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "* |\n"
+ "[ %s ] [ %s ] %s [ , ... ] |\n"
+ "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
+ _("name"),
+ _("new_version"),
+ _("name"),
+ _("new_schema"),
+ _("name"),
+ _("member_object"),
+ _("name"),
+ _("member_object"),
+ _("where member_object is:"),
+ _("object_name"),
+ _("aggregate_name"),
+ _("aggregate_signature"),
+ _("source_type"),
+ _("target_type"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("function_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("object_name"),
+ _("operator_name"),
+ _("left_type"),
+ _("right_type"),
+ _("object_name"),
+ _("index_method"),
+ _("object_name"),
+ _("index_method"),
+ _("object_name"),
+ _("procedure_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("routine_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("type_name"),
+ _("lang_name"),
+ _("object_name"),
+ _("object_name"),
+ _("and aggregate_signature is:"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_ALTER_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER FOREIGN DATA WRAPPER %s\n"
+ " [ HANDLER %s | NO HANDLER ]\n"
+ " [ VALIDATOR %s | NO VALIDATOR ]\n"
+ " [ OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ]) ]\n"
+ "ALTER FOREIGN DATA WRAPPER %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER FOREIGN DATA WRAPPER %s RENAME TO %s",
+ _("name"),
+ _("handler_function"),
+ _("validator_function"),
+ _("option"),
+ _("value"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"));
+}
+
+static void
+sql_help_ALTER_FOREIGN_TABLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
+ " %s [, ... ]\n"
+ "ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
+ " RENAME [ COLUMN ] %s TO %s\n"
+ "ALTER FOREIGN TABLE [ IF EXISTS ] %s\n"
+ " RENAME TO %s\n"
+ "ALTER FOREIGN TABLE [ IF EXISTS ] %s\n"
+ " SET SCHEMA %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ADD [ COLUMN ] %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
+ " DROP [ COLUMN ] [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
+ " ALTER [ COLUMN ] %s [ SET DATA ] TYPE %s [ COLLATE %s ]\n"
+ " ALTER [ COLUMN ] %s SET DEFAULT %s\n"
+ " ALTER [ COLUMN ] %s DROP DEFAULT\n"
+ " ALTER [ COLUMN ] %s { SET | DROP } NOT NULL\n"
+ " ALTER [ COLUMN ] %s SET STATISTICS %s\n"
+ " ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
+ " ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
+ " ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
+ " ALTER [ COLUMN ] %s OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ])\n"
+ " ADD %s [ NOT VALID ]\n"
+ " VALIDATE CONSTRAINT %s\n"
+ " DROP CONSTRAINT [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
+ " DISABLE TRIGGER [ %s | ALL | USER ]\n"
+ " ENABLE TRIGGER [ %s | ALL | USER ]\n"
+ " ENABLE REPLICA TRIGGER %s\n"
+ " ENABLE ALWAYS TRIGGER %s\n"
+ " SET WITHOUT OIDS\n"
+ " INHERIT %s\n"
+ " NO INHERIT %s\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ " OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ])",
+ _("name"),
+ _("action"),
+ _("name"),
+ _("column_name"),
+ _("new_column_name"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"),
+ _("where action is one of:"),
+ _("column_name"),
+ _("data_type"),
+ _("collation"),
+ _("column_constraint"),
+ _("column_name"),
+ _("column_name"),
+ _("data_type"),
+ _("collation"),
+ _("column_name"),
+ _("expression"),
+ _("column_name"),
+ _("column_name"),
+ _("column_name"),
+ _("integer"),
+ _("column_name"),
+ _("attribute_option"),
+ _("value"),
+ _("column_name"),
+ _("attribute_option"),
+ _("column_name"),
+ _("column_name"),
+ _("option"),
+ _("value"),
+ _("table_constraint"),
+ _("constraint_name"),
+ _("constraint_name"),
+ _("trigger_name"),
+ _("trigger_name"),
+ _("trigger_name"),
+ _("trigger_name"),
+ _("parent_table"),
+ _("parent_table"),
+ _("new_owner"),
+ _("option"),
+ _("value"));
+}
+
+static void
+sql_help_ALTER_FUNCTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " %s [ ... ] [ RESTRICT ]\n"
+ "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " RENAME TO %s\n"
+ "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " SET SCHEMA %s\n"
+ "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " [ NO ] DEPENDS ON EXTENSION %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
+ " IMMUTABLE | STABLE | VOLATILE\n"
+ " [ NOT ] LEAKPROOF\n"
+ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+ " PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
+ " COST %s\n"
+ " ROWS %s\n"
+ " SUPPORT %s\n"
+ " SET %s { TO | = } { %s | DEFAULT }\n"
+ " SET %s FROM CURRENT\n"
+ " RESET %s\n"
+ " RESET ALL",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("action"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_name"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_owner"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_schema"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("extension_name"),
+ _("where action is one of:"),
+ _("execution_cost"),
+ _("result_rows"),
+ _("support_function"),
+ _("configuration_parameter"),
+ _("value"),
+ _("configuration_parameter"),
+ _("configuration_parameter"));
+}
+
+static void
+sql_help_ALTER_GROUP(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER GROUP %s ADD USER %s [, ... ]\n"
+ "ALTER GROUP %s DROP USER %s [, ... ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s\n"
+ " | CURRENT_USER\n"
+ " | SESSION_USER\n"
+ "\n"
+ "ALTER GROUP %s RENAME TO %s",
+ _("role_specification"),
+ _("user_name"),
+ _("role_specification"),
+ _("user_name"),
+ _("where role_specification can be:"),
+ _("role_name"),
+ _("group_name"),
+ _("new_name"));
+}
+
+static void
+sql_help_ALTER_INDEX(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER INDEX [ IF EXISTS ] %s RENAME TO %s\n"
+ "ALTER INDEX [ IF EXISTS ] %s SET TABLESPACE %s\n"
+ "ALTER INDEX %s ATTACH PARTITION %s\n"
+ "ALTER INDEX %s [ NO ] DEPENDS ON EXTENSION %s\n"
+ "ALTER INDEX [ IF EXISTS ] %s SET ( %s [= %s] [, ... ] )\n"
+ "ALTER INDEX [ IF EXISTS ] %s RESET ( %s [, ... ] )\n"
+ "ALTER INDEX [ IF EXISTS ] %s ALTER [ COLUMN ] %s\n"
+ " SET STATISTICS %s\n"
+ "ALTER INDEX ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
+ " SET TABLESPACE %s [ NOWAIT ]",
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("tablespace_name"),
+ _("name"),
+ _("index_name"),
+ _("name"),
+ _("extension_name"),
+ _("name"),
+ _("storage_parameter"),
+ _("value"),
+ _("name"),
+ _("storage_parameter"),
+ _("name"),
+ _("column_number"),
+ _("integer"),
+ _("name"),
+ _("role_name"),
+ _("new_tablespace"));
+}
+
+static void
+sql_help_ALTER_LANGUAGE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER [ PROCEDURAL ] LANGUAGE %s RENAME TO %s\n"
+ "ALTER [ PROCEDURAL ] LANGUAGE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }",
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"));
+}
+
+static void
+sql_help_ALTER_LARGE_OBJECT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER LARGE OBJECT %s OWNER TO { %s | CURRENT_USER | SESSION_USER }",
+ _("large_object_oid"),
+ _("new_owner"));
+}
+
+static void
+sql_help_ALTER_MATERIALIZED_VIEW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
+ " %s [, ... ]\n"
+ "ALTER MATERIALIZED VIEW %s\n"
+ " [ NO ] DEPENDS ON EXTENSION %s\n"
+ "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
+ " RENAME [ COLUMN ] %s TO %s\n"
+ "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
+ " RENAME TO %s\n"
+ "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
+ " SET SCHEMA %s\n"
+ "ALTER MATERIALIZED VIEW ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
+ " SET TABLESPACE %s [ NOWAIT ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ALTER [ COLUMN ] %s SET STATISTICS %s\n"
+ " ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
+ " ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
+ " ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
+ " CLUSTER ON %s\n"
+ " SET WITHOUT CLUSTER\n"
+ " SET ( %s [= %s] [, ... ] )\n"
+ " RESET ( %s [, ... ] )\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }",
+ _("name"),
+ _("action"),
+ _("name"),
+ _("extension_name"),
+ _("name"),
+ _("column_name"),
+ _("new_column_name"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"),
+ _("name"),
+ _("role_name"),
+ _("new_tablespace"),
+ _("where action is one of:"),
+ _("column_name"),
+ _("integer"),
+ _("column_name"),
+ _("attribute_option"),
+ _("value"),
+ _("column_name"),
+ _("attribute_option"),
+ _("column_name"),
+ _("index_name"),
+ _("storage_parameter"),
+ _("value"),
+ _("storage_parameter"),
+ _("new_owner"));
+}
+
+static void
+sql_help_ALTER_OPERATOR(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } )\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "\n"
+ "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } )\n"
+ " SET SCHEMA %s\n"
+ "\n"
+ "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } )\n"
+ " SET ( { RESTRICT = { %s | NONE }\n"
+ " | JOIN = { %s | NONE }\n"
+ " } [, ... ] )",
+ _("name"),
+ _("left_type"),
+ _("right_type"),
+ _("new_owner"),
+ _("name"),
+ _("left_type"),
+ _("right_type"),
+ _("new_schema"),
+ _("name"),
+ _("left_type"),
+ _("right_type"),
+ _("res_proc"),
+ _("join_proc"));
+}
+
+static void
+sql_help_ALTER_OPERATOR_CLASS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER OPERATOR CLASS %s USING %s\n"
+ " RENAME TO %s\n"
+ "\n"
+ "ALTER OPERATOR CLASS %s USING %s\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "\n"
+ "ALTER OPERATOR CLASS %s USING %s\n"
+ " SET SCHEMA %s",
+ _("name"),
+ _("index_method"),
+ _("new_name"),
+ _("name"),
+ _("index_method"),
+ _("new_owner"),
+ _("name"),
+ _("index_method"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_OPERATOR_FAMILY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER OPERATOR FAMILY %s USING %s ADD\n"
+ " { OPERATOR %s %s ( %s, %s )\n"
+ " [ FOR SEARCH | FOR ORDER BY %s ]\n"
+ " | FUNCTION %s [ ( %s [ , %s ] ) ]\n"
+ " %s [ ( %s [, ...] ) ]\n"
+ " } [, ... ]\n"
+ "\n"
+ "ALTER OPERATOR FAMILY %s USING %s DROP\n"
+ " { OPERATOR %s ( %s [ , %s ] )\n"
+ " | FUNCTION %s ( %s [ , %s ] )\n"
+ " } [, ... ]\n"
+ "\n"
+ "ALTER OPERATOR FAMILY %s USING %s\n"
+ " RENAME TO %s\n"
+ "\n"
+ "ALTER OPERATOR FAMILY %s USING %s\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "\n"
+ "ALTER OPERATOR FAMILY %s USING %s\n"
+ " SET SCHEMA %s",
+ _("name"),
+ _("index_method"),
+ _("strategy_number"),
+ _("operator_name"),
+ _("op_type"),
+ _("op_type"),
+ _("sort_family_name"),
+ _("support_number"),
+ _("op_type"),
+ _("op_type"),
+ _("function_name"),
+ _("argument_type"),
+ _("name"),
+ _("index_method"),
+ _("strategy_number"),
+ _("op_type"),
+ _("op_type"),
+ _("support_number"),
+ _("op_type"),
+ _("op_type"),
+ _("name"),
+ _("index_method"),
+ _("new_name"),
+ _("name"),
+ _("index_method"),
+ _("new_owner"),
+ _("name"),
+ _("index_method"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_POLICY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER POLICY %s ON %s RENAME TO %s\n"
+ "\n"
+ "ALTER POLICY %s ON %s\n"
+ " [ TO { %s | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]\n"
+ " [ USING ( %s ) ]\n"
+ " [ WITH CHECK ( %s ) ]",
+ _("name"),
+ _("table_name"),
+ _("new_name"),
+ _("name"),
+ _("table_name"),
+ _("role_name"),
+ _("using_expression"),
+ _("check_expression"));
+}
+
+static void
+sql_help_ALTER_PROCEDURE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " %s [ ... ] [ RESTRICT ]\n"
+ "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " RENAME TO %s\n"
+ "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " SET SCHEMA %s\n"
+ "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " [ NO ] DEPENDS ON EXTENSION %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+ " SET %s { TO | = } { %s | DEFAULT }\n"
+ " SET %s FROM CURRENT\n"
+ " RESET %s\n"
+ " RESET ALL",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("action"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_name"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_owner"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_schema"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("extension_name"),
+ _("where action is one of:"),
+ _("configuration_parameter"),
+ _("value"),
+ _("configuration_parameter"),
+ _("configuration_parameter"));
+}
+
+static void
+sql_help_ALTER_PUBLICATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER PUBLICATION %s ADD TABLE [ ONLY ] %s [ * ] [, ...]\n"
+ "ALTER PUBLICATION %s SET TABLE [ ONLY ] %s [ * ] [, ...]\n"
+ "ALTER PUBLICATION %s DROP TABLE [ ONLY ] %s [ * ] [, ...]\n"
+ "ALTER PUBLICATION %s SET ( %s [= %s] [, ... ] )\n"
+ "ALTER PUBLICATION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER PUBLICATION %s RENAME TO %s",
+ _("name"),
+ _("table_name"),
+ _("name"),
+ _("table_name"),
+ _("name"),
+ _("table_name"),
+ _("name"),
+ _("publication_parameter"),
+ _("value"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"));
+}
+
+static void
+sql_help_ALTER_ROLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER ROLE %s [ WITH ] %s [ ... ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " SUPERUSER | NOSUPERUSER\n"
+ " | CREATEDB | NOCREATEDB\n"
+ " | CREATEROLE | NOCREATEROLE\n"
+ " | INHERIT | NOINHERIT\n"
+ " | LOGIN | NOLOGIN\n"
+ " | REPLICATION | NOREPLICATION\n"
+ " | BYPASSRLS | NOBYPASSRLS\n"
+ " | CONNECTION LIMIT %s\n"
+ " | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
+ " | VALID UNTIL '%s'\n"
+ "\n"
+ "ALTER ROLE %s RENAME TO %s\n"
+ "\n"
+ "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] SET %s { TO | = } { %s | DEFAULT }\n"
+ "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] SET %s FROM CURRENT\n"
+ "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] RESET %s\n"
+ "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] RESET ALL\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s\n"
+ " | CURRENT_USER\n"
+ " | SESSION_USER",
+ _("role_specification"),
+ _("option"),
+ _("where option can be:"),
+ _("connlimit"),
+ _("password"),
+ _("timestamp"),
+ _("name"),
+ _("new_name"),
+ _("role_specification"),
+ _("database_name"),
+ _("configuration_parameter"),
+ _("value"),
+ _("role_specification"),
+ _("database_name"),
+ _("configuration_parameter"),
+ _("role_specification"),
+ _("database_name"),
+ _("configuration_parameter"),
+ _("role_specification"),
+ _("database_name"),
+ _("where role_specification can be:"),
+ _("role_name"));
+}
+
+static void
+sql_help_ALTER_ROUTINE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " %s [ ... ] [ RESTRICT ]\n"
+ "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " RENAME TO %s\n"
+ "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " SET SCHEMA %s\n"
+ "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
+ " [ NO ] DEPENDS ON EXTENSION %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " IMMUTABLE | STABLE | VOLATILE\n"
+ " [ NOT ] LEAKPROOF\n"
+ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+ " PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
+ " COST %s\n"
+ " ROWS %s\n"
+ " SET %s { TO | = } { %s | DEFAULT }\n"
+ " SET %s FROM CURRENT\n"
+ " RESET %s\n"
+ " RESET ALL",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("action"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_name"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_owner"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("new_schema"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("extension_name"),
+ _("where action is one of:"),
+ _("execution_cost"),
+ _("result_rows"),
+ _("configuration_parameter"),
+ _("value"),
+ _("configuration_parameter"),
+ _("configuration_parameter"));
+}
+
+static void
+sql_help_ALTER_RULE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER RULE %s ON %s RENAME TO %s",
+ _("name"),
+ _("table_name"),
+ _("new_name"));
+}
+
+static void
+sql_help_ALTER_SCHEMA(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER SCHEMA %s RENAME TO %s\n"
+ "ALTER SCHEMA %s OWNER TO { %s | CURRENT_USER | SESSION_USER }",
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"));
+}
+
+static void
+sql_help_ALTER_SEQUENCE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER SEQUENCE [ IF EXISTS ] %s\n"
+ " [ AS %s ]\n"
+ " [ INCREMENT [ BY ] %s ]\n"
+ " [ MINVALUE %s | NO MINVALUE ] [ MAXVALUE %s | NO MAXVALUE ]\n"
+ " [ START [ WITH ] %s ]\n"
+ " [ RESTART [ [ WITH ] %s ] ]\n"
+ " [ CACHE %s ] [ [ NO ] CYCLE ]\n"
+ " [ OWNED BY { %s.%s | NONE } ]\n"
+ "ALTER SEQUENCE [ IF EXISTS ] %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER SEQUENCE [ IF EXISTS ] %s RENAME TO %s\n"
+ "ALTER SEQUENCE [ IF EXISTS ] %s SET SCHEMA %s",
+ _("name"),
+ _("data_type"),
+ _("increment"),
+ _("minvalue"),
+ _("maxvalue"),
+ _("start"),
+ _("restart"),
+ _("cache"),
+ _("table_name"),
+ _("column_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_SERVER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER SERVER %s [ VERSION '%s' ]\n"
+ " [ OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ] ) ]\n"
+ "ALTER SERVER %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER SERVER %s RENAME TO %s",
+ _("name"),
+ _("new_version"),
+ _("option"),
+ _("value"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"));
+}
+
+static void
+sql_help_ALTER_STATISTICS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER STATISTICS %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER STATISTICS %s RENAME TO %s\n"
+ "ALTER STATISTICS %s SET SCHEMA %s\n"
+ "ALTER STATISTICS %s SET STATISTICS %s",
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"),
+ _("name"),
+ _("new_target"));
+}
+
+static void
+sql_help_ALTER_SUBSCRIPTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER SUBSCRIPTION %s CONNECTION '%s'\n"
+ "ALTER SUBSCRIPTION %s SET PUBLICATION %s [, ...] [ WITH ( %s [= %s] [, ... ] ) ]\n"
+ "ALTER SUBSCRIPTION %s REFRESH PUBLICATION [ WITH ( %s [= %s] [, ... ] ) ]\n"
+ "ALTER SUBSCRIPTION %s ENABLE\n"
+ "ALTER SUBSCRIPTION %s DISABLE\n"
+ "ALTER SUBSCRIPTION %s SET ( %s [= %s] [, ... ] )\n"
+ "ALTER SUBSCRIPTION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER SUBSCRIPTION %s RENAME TO %s",
+ _("name"),
+ _("conninfo"),
+ _("name"),
+ _("publication_name"),
+ _("set_publication_option"),
+ _("value"),
+ _("name"),
+ _("refresh_option"),
+ _("value"),
+ _("name"),
+ _("name"),
+ _("name"),
+ _("subscription_parameter"),
+ _("value"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"));
+}
+
+static void
+sql_help_ALTER_SYSTEM(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER SYSTEM SET %s { TO | = } { %s | '%s' | DEFAULT }\n"
+ "\n"
+ "ALTER SYSTEM RESET %s\n"
+ "ALTER SYSTEM RESET ALL",
+ _("configuration_parameter"),
+ _("value"),
+ _("value"),
+ _("configuration_parameter"));
+}
+
+static void
+sql_help_ALTER_TABLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
+ " %s [, ... ]\n"
+ "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
+ " RENAME [ COLUMN ] %s TO %s\n"
+ "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
+ " RENAME CONSTRAINT %s TO %s\n"
+ "ALTER TABLE [ IF EXISTS ] %s\n"
+ " RENAME TO %s\n"
+ "ALTER TABLE [ IF EXISTS ] %s\n"
+ " SET SCHEMA %s\n"
+ "ALTER TABLE ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
+ " SET TABLESPACE %s [ NOWAIT ]\n"
+ "ALTER TABLE [ IF EXISTS ] %s\n"
+ " ATTACH PARTITION %s { FOR VALUES %s | DEFAULT }\n"
+ "ALTER TABLE [ IF EXISTS ] %s\n"
+ " DETACH PARTITION %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ADD [ COLUMN ] [ IF NOT EXISTS ] %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
+ " DROP [ COLUMN ] [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
+ " ALTER [ COLUMN ] %s [ SET DATA ] TYPE %s [ COLLATE %s ] [ USING %s ]\n"
+ " ALTER [ COLUMN ] %s SET DEFAULT %s\n"
+ " ALTER [ COLUMN ] %s DROP DEFAULT\n"
+ " ALTER [ COLUMN ] %s { SET | DROP } NOT NULL\n"
+ " ALTER [ COLUMN ] %s DROP EXPRESSION [ IF EXISTS ]\n"
+ " ALTER [ COLUMN ] %s ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ]\n"
+ " ALTER [ COLUMN ] %s { SET GENERATED { ALWAYS | BY DEFAULT } | SET %s | RESTART [ [ WITH ] %s ] } [...]\n"
+ " ALTER [ COLUMN ] %s DROP IDENTITY [ IF EXISTS ]\n"
+ " ALTER [ COLUMN ] %s SET STATISTICS %s\n"
+ " ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
+ " ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
+ " ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
+ " ADD %s [ NOT VALID ]\n"
+ " ADD %s\n"
+ " ALTER CONSTRAINT %s [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+ " VALIDATE CONSTRAINT %s\n"
+ " DROP CONSTRAINT [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
+ " DISABLE TRIGGER [ %s | ALL | USER ]\n"
+ " ENABLE TRIGGER [ %s | ALL | USER ]\n"
+ " ENABLE REPLICA TRIGGER %s\n"
+ " ENABLE ALWAYS TRIGGER %s\n"
+ " DISABLE RULE %s\n"
+ " ENABLE RULE %s\n"
+ " ENABLE REPLICA RULE %s\n"
+ " ENABLE ALWAYS RULE %s\n"
+ " DISABLE ROW LEVEL SECURITY\n"
+ " ENABLE ROW LEVEL SECURITY\n"
+ " FORCE ROW LEVEL SECURITY\n"
+ " NO FORCE ROW LEVEL SECURITY\n"
+ " CLUSTER ON %s\n"
+ " SET WITHOUT CLUSTER\n"
+ " SET WITHOUT OIDS\n"
+ " SET TABLESPACE %s\n"
+ " SET { LOGGED | UNLOGGED }\n"
+ " SET ( %s [= %s] [, ... ] )\n"
+ " RESET ( %s [, ... ] )\n"
+ " INHERIT %s\n"
+ " NO INHERIT %s\n"
+ " OF %s\n"
+ " NOT OF\n"
+ " OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ " REPLICA IDENTITY { DEFAULT | USING INDEX %s | FULL | NOTHING }\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "IN ( %s [, ...] ) |\n"
+ "FROM ( { %s | MINVALUE | MAXVALUE } [, ...] )\n"
+ " TO ( { %s | MINVALUE | MAXVALUE } [, ...] ) |\n"
+ "WITH ( MODULUS %s, REMAINDER %s )\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ CONSTRAINT %s ]\n"
+ "{ NOT NULL |\n"
+ " NULL |\n"
+ " CHECK ( %s ) [ NO INHERIT ] |\n"
+ " DEFAULT %s |\n"
+ " GENERATED ALWAYS AS ( %s ) STORED |\n"
+ " GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ] |\n"
+ " UNIQUE %s |\n"
+ " PRIMARY KEY %s |\n"
+ " REFERENCES %s [ ( %s ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
+ " [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
+ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ CONSTRAINT %s ]\n"
+ "{ CHECK ( %s ) [ NO INHERIT ] |\n"
+ " UNIQUE ( %s [, ... ] ) %s |\n"
+ " PRIMARY KEY ( %s [, ... ] ) %s |\n"
+ " EXCLUDE [ USING %s ] ( %s WITH %s [, ... ] ) %s [ WHERE ( %s ) ] |\n"
+ " FOREIGN KEY ( %s [, ... ] ) REFERENCES %s [ ( %s [, ... ] ) ]\n"
+ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
+ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " [ CONSTRAINT %s ]\n"
+ " { UNIQUE | PRIMARY KEY } USING INDEX %s\n"
+ " [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ INCLUDE ( %s [, ... ] ) ]\n"
+ "[ WITH ( %s [= %s] [, ... ] ) ]\n"
+ "[ USING INDEX TABLESPACE %s ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "{ %s | ( %s ) } [ %s ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]",
+ _("name"),
+ _("action"),
+ _("name"),
+ _("column_name"),
+ _("new_column_name"),
+ _("name"),
+ _("constraint_name"),
+ _("new_constraint_name"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"),
+ _("name"),
+ _("role_name"),
+ _("new_tablespace"),
+ _("name"),
+ _("partition_name"),
+ _("partition_bound_spec"),
+ _("name"),
+ _("partition_name"),
+ _("where action is one of:"),
+ _("column_name"),
+ _("data_type"),
+ _("collation"),
+ _("column_constraint"),
+ _("column_name"),
+ _("column_name"),
+ _("data_type"),
+ _("collation"),
+ _("expression"),
+ _("column_name"),
+ _("expression"),
+ _("column_name"),
+ _("column_name"),
+ _("column_name"),
+ _("column_name"),
+ _("sequence_options"),
+ _("column_name"),
+ _("sequence_option"),
+ _("restart"),
+ _("column_name"),
+ _("column_name"),
+ _("integer"),
+ _("column_name"),
+ _("attribute_option"),
+ _("value"),
+ _("column_name"),
+ _("attribute_option"),
+ _("column_name"),
+ _("table_constraint"),
+ _("table_constraint_using_index"),
+ _("constraint_name"),
+ _("constraint_name"),
+ _("constraint_name"),
+ _("trigger_name"),
+ _("trigger_name"),
+ _("trigger_name"),
+ _("trigger_name"),
+ _("rewrite_rule_name"),
+ _("rewrite_rule_name"),
+ _("rewrite_rule_name"),
+ _("rewrite_rule_name"),
+ _("index_name"),
+ _("new_tablespace"),
+ _("storage_parameter"),
+ _("value"),
+ _("storage_parameter"),
+ _("parent_table"),
+ _("parent_table"),
+ _("type_name"),
+ _("new_owner"),
+ _("index_name"),
+ _("and partition_bound_spec is:"),
+ _("partition_bound_expr"),
+ _("partition_bound_expr"),
+ _("partition_bound_expr"),
+ _("numeric_literal"),
+ _("numeric_literal"),
+ _("and column_constraint is:"),
+ _("constraint_name"),
+ _("expression"),
+ _("default_expr"),
+ _("generation_expr"),
+ _("sequence_options"),
+ _("index_parameters"),
+ _("index_parameters"),
+ _("reftable"),
+ _("refcolumn"),
+ _("referential_action"),
+ _("referential_action"),
+ _("and table_constraint is:"),
+ _("constraint_name"),
+ _("expression"),
+ _("column_name"),
+ _("index_parameters"),
+ _("column_name"),
+ _("index_parameters"),
+ _("index_method"),
+ _("exclude_element"),
+ _("operator"),
+ _("index_parameters"),
+ _("predicate"),
+ _("column_name"),
+ _("reftable"),
+ _("refcolumn"),
+ _("referential_action"),
+ _("referential_action"),
+ _("and table_constraint_using_index is:"),
+ _("constraint_name"),
+ _("index_name"),
+ _("index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"),
+ _("column_name"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("exclude_element in an EXCLUDE constraint is:"),
+ _("column_name"),
+ _("expression"),
+ _("opclass"));
+}
+
+static void
+sql_help_ALTER_TABLESPACE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TABLESPACE %s RENAME TO %s\n"
+ "ALTER TABLESPACE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER TABLESPACE %s SET ( %s = %s [, ... ] )\n"
+ "ALTER TABLESPACE %s RESET ( %s [, ... ] )",
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("tablespace_option"),
+ _("value"),
+ _("name"),
+ _("tablespace_option"));
+}
+
+static void
+sql_help_ALTER_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TEXT SEARCH CONFIGURATION %s\n"
+ " ADD MAPPING FOR %s [, ... ] WITH %s [, ... ]\n"
+ "ALTER TEXT SEARCH CONFIGURATION %s\n"
+ " ALTER MAPPING FOR %s [, ... ] WITH %s [, ... ]\n"
+ "ALTER TEXT SEARCH CONFIGURATION %s\n"
+ " ALTER MAPPING REPLACE %s WITH %s\n"
+ "ALTER TEXT SEARCH CONFIGURATION %s\n"
+ " ALTER MAPPING FOR %s [, ... ] REPLACE %s WITH %s\n"
+ "ALTER TEXT SEARCH CONFIGURATION %s\n"
+ " DROP MAPPING [ IF EXISTS ] FOR %s [, ... ]\n"
+ "ALTER TEXT SEARCH CONFIGURATION %s RENAME TO %s\n"
+ "ALTER TEXT SEARCH CONFIGURATION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER TEXT SEARCH CONFIGURATION %s SET SCHEMA %s",
+ _("name"),
+ _("token_type"),
+ _("dictionary_name"),
+ _("name"),
+ _("token_type"),
+ _("dictionary_name"),
+ _("name"),
+ _("old_dictionary"),
+ _("new_dictionary"),
+ _("name"),
+ _("token_type"),
+ _("old_dictionary"),
+ _("new_dictionary"),
+ _("name"),
+ _("token_type"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TEXT SEARCH DICTIONARY %s (\n"
+ " %s [ = %s ] [, ... ]\n"
+ ")\n"
+ "ALTER TEXT SEARCH DICTIONARY %s RENAME TO %s\n"
+ "ALTER TEXT SEARCH DICTIONARY %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER TEXT SEARCH DICTIONARY %s SET SCHEMA %s",
+ _("name"),
+ _("option"),
+ _("value"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_TEXT_SEARCH_PARSER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TEXT SEARCH PARSER %s RENAME TO %s\n"
+ "ALTER TEXT SEARCH PARSER %s SET SCHEMA %s",
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TEXT SEARCH TEMPLATE %s RENAME TO %s\n"
+ "ALTER TEXT SEARCH TEMPLATE %s SET SCHEMA %s",
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"));
+}
+
+static void
+sql_help_ALTER_TRIGGER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TRIGGER %s ON %s RENAME TO %s\n"
+ "ALTER TRIGGER %s ON %s [ NO ] DEPENDS ON EXTENSION %s",
+ _("name"),
+ _("table_name"),
+ _("new_name"),
+ _("name"),
+ _("table_name"),
+ _("extension_name"));
+}
+
+static void
+sql_help_ALTER_TYPE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER TYPE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER TYPE %s RENAME TO %s\n"
+ "ALTER TYPE %s SET SCHEMA %s\n"
+ "ALTER TYPE %s RENAME ATTRIBUTE %s TO %s [ CASCADE | RESTRICT ]\n"
+ "ALTER TYPE %s %s [, ... ]\n"
+ "ALTER TYPE %s ADD VALUE [ IF NOT EXISTS ] %s [ { BEFORE | AFTER } %s ]\n"
+ "ALTER TYPE %s RENAME VALUE %s TO %s\n"
+ "ALTER TYPE %s SET ( %s = %s [, ... ] )\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ADD ATTRIBUTE %s %s [ COLLATE %s ] [ CASCADE | RESTRICT ]\n"
+ " DROP ATTRIBUTE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]\n"
+ " ALTER ATTRIBUTE %s [ SET DATA ] TYPE %s [ COLLATE %s ] [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"),
+ _("name"),
+ _("attribute_name"),
+ _("new_attribute_name"),
+ _("name"),
+ _("action"),
+ _("name"),
+ _("new_enum_value"),
+ _("neighbor_enum_value"),
+ _("name"),
+ _("existing_enum_value"),
+ _("new_enum_value"),
+ _("name"),
+ _("property"),
+ _("value"),
+ _("where action is one of:"),
+ _("attribute_name"),
+ _("data_type"),
+ _("collation"),
+ _("attribute_name"),
+ _("attribute_name"),
+ _("data_type"),
+ _("collation"));
+}
+
+static void
+sql_help_ALTER_USER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER USER %s [ WITH ] %s [ ... ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " SUPERUSER | NOSUPERUSER\n"
+ " | CREATEDB | NOCREATEDB\n"
+ " | CREATEROLE | NOCREATEROLE\n"
+ " | INHERIT | NOINHERIT\n"
+ " | LOGIN | NOLOGIN\n"
+ " | REPLICATION | NOREPLICATION\n"
+ " | BYPASSRLS | NOBYPASSRLS\n"
+ " | CONNECTION LIMIT %s\n"
+ " | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
+ " | VALID UNTIL '%s'\n"
+ "\n"
+ "ALTER USER %s RENAME TO %s\n"
+ "\n"
+ "ALTER USER { %s | ALL } [ IN DATABASE %s ] SET %s { TO | = } { %s | DEFAULT }\n"
+ "ALTER USER { %s | ALL } [ IN DATABASE %s ] SET %s FROM CURRENT\n"
+ "ALTER USER { %s | ALL } [ IN DATABASE %s ] RESET %s\n"
+ "ALTER USER { %s | ALL } [ IN DATABASE %s ] RESET ALL\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s\n"
+ " | CURRENT_USER\n"
+ " | SESSION_USER",
+ _("role_specification"),
+ _("option"),
+ _("where option can be:"),
+ _("connlimit"),
+ _("password"),
+ _("timestamp"),
+ _("name"),
+ _("new_name"),
+ _("role_specification"),
+ _("database_name"),
+ _("configuration_parameter"),
+ _("value"),
+ _("role_specification"),
+ _("database_name"),
+ _("configuration_parameter"),
+ _("role_specification"),
+ _("database_name"),
+ _("configuration_parameter"),
+ _("role_specification"),
+ _("database_name"),
+ _("where role_specification can be:"),
+ _("role_name"));
+}
+
+static void
+sql_help_ALTER_USER_MAPPING(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER USER MAPPING FOR { %s | USER | CURRENT_USER | SESSION_USER | PUBLIC }\n"
+ " SERVER %s\n"
+ " OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ] )",
+ _("user_name"),
+ _("server_name"),
+ _("option"),
+ _("value"));
+}
+
+static void
+sql_help_ALTER_VIEW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ALTER VIEW [ IF EXISTS ] %s ALTER [ COLUMN ] %s SET DEFAULT %s\n"
+ "ALTER VIEW [ IF EXISTS ] %s ALTER [ COLUMN ] %s DROP DEFAULT\n"
+ "ALTER VIEW [ IF EXISTS ] %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
+ "ALTER VIEW [ IF EXISTS ] %s RENAME [ COLUMN ] %s TO %s\n"
+ "ALTER VIEW [ IF EXISTS ] %s RENAME TO %s\n"
+ "ALTER VIEW [ IF EXISTS ] %s SET SCHEMA %s\n"
+ "ALTER VIEW [ IF EXISTS ] %s SET ( %s [= %s] [, ... ] )\n"
+ "ALTER VIEW [ IF EXISTS ] %s RESET ( %s [, ... ] )",
+ _("name"),
+ _("column_name"),
+ _("expression"),
+ _("name"),
+ _("column_name"),
+ _("name"),
+ _("new_owner"),
+ _("name"),
+ _("column_name"),
+ _("new_column_name"),
+ _("name"),
+ _("new_name"),
+ _("name"),
+ _("new_schema"),
+ _("name"),
+ _("view_option_name"),
+ _("view_option_value"),
+ _("name"),
+ _("view_option_name"));
+}
+
+static void
+sql_help_ANALYZE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ANALYZE [ ( %s [, ...] ) ] [ %s [, ...] ]\n"
+ "ANALYZE [ VERBOSE ] [ %s [, ...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " VERBOSE [ %s ]\n"
+ " SKIP_LOCKED [ %s ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s [ ( %s [, ...] ) ]",
+ _("option"),
+ _("table_and_columns"),
+ _("table_and_columns"),
+ _("where option can be one of:"),
+ _("boolean"),
+ _("boolean"),
+ _("and table_and_columns is:"),
+ _("table_name"),
+ _("column_name"));
+}
+
+static void
+sql_help_BEGIN(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "BEGIN [ WORK | TRANSACTION ] [ %s [, ...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+ " READ WRITE | READ ONLY\n"
+ " [ NOT ] DEFERRABLE",
+ _("transaction_mode"),
+ _("where transaction_mode is one of:"));
+}
+
+static void
+sql_help_CALL(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CALL %s ( [ %s ] [, ...] )",
+ _("name"),
+ _("argument"));
+}
+
+static void
+sql_help_CHECKPOINT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CHECKPOINT");
+}
+
+static void
+sql_help_CLOSE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CLOSE { %s | ALL }",
+ _("name"));
+}
+
+static void
+sql_help_CLUSTER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CLUSTER [VERBOSE] %s [ USING %s ]\n"
+ "CLUSTER [VERBOSE]",
+ _("table_name"),
+ _("index_name"));
+}
+
+static void
+sql_help_COMMENT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "COMMENT ON\n"
+ "{\n"
+ " ACCESS METHOD %s |\n"
+ " AGGREGATE %s ( %s ) |\n"
+ " CAST (%s AS %s) |\n"
+ " COLLATION %s |\n"
+ " COLUMN %s.%s |\n"
+ " CONSTRAINT %s ON %s |\n"
+ " CONSTRAINT %s ON DOMAIN %s |\n"
+ " CONVERSION %s |\n"
+ " DATABASE %s |\n"
+ " DOMAIN %s |\n"
+ " EXTENSION %s |\n"
+ " EVENT TRIGGER %s |\n"
+ " FOREIGN DATA WRAPPER %s |\n"
+ " FOREIGN TABLE %s |\n"
+ " FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " INDEX %s |\n"
+ " LARGE OBJECT %s |\n"
+ " MATERIALIZED VIEW %s |\n"
+ " OPERATOR %s (%s, %s) |\n"
+ " OPERATOR CLASS %s USING %s |\n"
+ " OPERATOR FAMILY %s USING %s |\n"
+ " POLICY %s ON %s |\n"
+ " [ PROCEDURAL ] LANGUAGE %s |\n"
+ " PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " PUBLICATION %s |\n"
+ " ROLE %s |\n"
+ " ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " RULE %s ON %s |\n"
+ " SCHEMA %s |\n"
+ " SEQUENCE %s |\n"
+ " SERVER %s |\n"
+ " STATISTICS %s |\n"
+ " SUBSCRIPTION %s |\n"
+ " TABLE %s |\n"
+ " TABLESPACE %s |\n"
+ " TEXT SEARCH CONFIGURATION %s |\n"
+ " TEXT SEARCH DICTIONARY %s |\n"
+ " TEXT SEARCH PARSER %s |\n"
+ " TEXT SEARCH TEMPLATE %s |\n"
+ " TRANSFORM FOR %s LANGUAGE %s |\n"
+ " TRIGGER %s ON %s |\n"
+ " TYPE %s |\n"
+ " VIEW %s\n"
+ "} IS '%s'\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "* |\n"
+ "[ %s ] [ %s ] %s [ , ... ] |\n"
+ "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
+ _("object_name"),
+ _("aggregate_name"),
+ _("aggregate_signature"),
+ _("source_type"),
+ _("target_type"),
+ _("object_name"),
+ _("relation_name"),
+ _("column_name"),
+ _("constraint_name"),
+ _("table_name"),
+ _("constraint_name"),
+ _("domain_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("function_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("object_name"),
+ _("large_object_oid"),
+ _("object_name"),
+ _("operator_name"),
+ _("left_type"),
+ _("right_type"),
+ _("object_name"),
+ _("index_method"),
+ _("object_name"),
+ _("index_method"),
+ _("policy_name"),
+ _("table_name"),
+ _("object_name"),
+ _("procedure_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("object_name"),
+ _("object_name"),
+ _("routine_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("rule_name"),
+ _("table_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("type_name"),
+ _("lang_name"),
+ _("trigger_name"),
+ _("table_name"),
+ _("object_name"),
+ _("object_name"),
+ _("text"),
+ _("where aggregate_signature is:"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_COMMIT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "COMMIT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
+}
+
+static void
+sql_help_COMMIT_PREPARED(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "COMMIT PREPARED %s",
+ _("transaction_id"));
+}
+
+static void
+sql_help_COPY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "COPY %s [ ( %s [, ...] ) ]\n"
+ " FROM { '%s' | PROGRAM '%s' | STDIN }\n"
+ " [ [ WITH ] ( %s [, ...] ) ]\n"
+ " [ WHERE %s ]\n"
+ "\n"
+ "COPY { %s [ ( %s [, ...] ) ] | ( %s ) }\n"
+ " TO { '%s' | PROGRAM '%s' | STDOUT }\n"
+ " [ [ WITH ] ( %s [, ...] ) ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " FORMAT %s\n"
+ " FREEZE [ %s ]\n"
+ " DELIMITER '%s'\n"
+ " NULL '%s'\n"
+ " HEADER [ %s ]\n"
+ " QUOTE '%s'\n"
+ " ESCAPE '%s'\n"
+ " FORCE_QUOTE { ( %s [, ...] ) | * }\n"
+ " FORCE_NOT_NULL ( %s [, ...] )\n"
+ " FORCE_NULL ( %s [, ...] )\n"
+ " ENCODING '%s'",
+ _("table_name"),
+ _("column_name"),
+ _("filename"),
+ _("command"),
+ _("option"),
+ _("condition"),
+ _("table_name"),
+ _("column_name"),
+ _("query"),
+ _("filename"),
+ _("command"),
+ _("option"),
+ _("where option can be one of:"),
+ _("format_name"),
+ _("boolean"),
+ _("delimiter_character"),
+ _("null_string"),
+ _("boolean"),
+ _("quote_character"),
+ _("escape_character"),
+ _("column_name"),
+ _("column_name"),
+ _("column_name"),
+ _("encoding_name"));
+}
+
+static void
+sql_help_CREATE_ACCESS_METHOD(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE ACCESS METHOD %s\n"
+ " TYPE %s\n"
+ " HANDLER %s",
+ _("name"),
+ _("access_method_type"),
+ _("handler_function"));
+}
+
+static void
+sql_help_CREATE_AGGREGATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ OR REPLACE ] AGGREGATE %s ( [ %s ] [ %s ] %s [ , ... ] ) (\n"
+ " SFUNC = %s,\n"
+ " STYPE = %s\n"
+ " [ , SSPACE = %s ]\n"
+ " [ , FINALFUNC = %s ]\n"
+ " [ , FINALFUNC_EXTRA ]\n"
+ " [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
+ " [ , COMBINEFUNC = %s ]\n"
+ " [ , SERIALFUNC = %s ]\n"
+ " [ , DESERIALFUNC = %s ]\n"
+ " [ , INITCOND = %s ]\n"
+ " [ , MSFUNC = %s ]\n"
+ " [ , MINVFUNC = %s ]\n"
+ " [ , MSTYPE = %s ]\n"
+ " [ , MSSPACE = %s ]\n"
+ " [ , MFINALFUNC = %s ]\n"
+ " [ , MFINALFUNC_EXTRA ]\n"
+ " [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
+ " [ , MINITCOND = %s ]\n"
+ " [ , SORTOP = %s ]\n"
+ " [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]\n"
+ ")\n"
+ "\n"
+ "CREATE [ OR REPLACE ] AGGREGATE %s ( [ [ %s ] [ %s ] %s [ , ... ] ]\n"
+ " ORDER BY [ %s ] [ %s ] %s [ , ... ] ) (\n"
+ " SFUNC = %s,\n"
+ " STYPE = %s\n"
+ " [ , SSPACE = %s ]\n"
+ " [ , FINALFUNC = %s ]\n"
+ " [ , FINALFUNC_EXTRA ]\n"
+ " [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
+ " [ , INITCOND = %s ]\n"
+ " [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]\n"
+ " [ , HYPOTHETICAL ]\n"
+ ")\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "CREATE [ OR REPLACE ] AGGREGATE %s (\n"
+ " BASETYPE = %s,\n"
+ " SFUNC = %s,\n"
+ " STYPE = %s\n"
+ " [ , SSPACE = %s ]\n"
+ " [ , FINALFUNC = %s ]\n"
+ " [ , FINALFUNC_EXTRA ]\n"
+ " [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
+ " [ , COMBINEFUNC = %s ]\n"
+ " [ , SERIALFUNC = %s ]\n"
+ " [ , DESERIALFUNC = %s ]\n"
+ " [ , INITCOND = %s ]\n"
+ " [ , MSFUNC = %s ]\n"
+ " [ , MINVFUNC = %s ]\n"
+ " [ , MSTYPE = %s ]\n"
+ " [ , MSSPACE = %s ]\n"
+ " [ , MFINALFUNC = %s ]\n"
+ " [ , MFINALFUNC_EXTRA ]\n"
+ " [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
+ " [ , MINITCOND = %s ]\n"
+ " [ , SORTOP = %s ]\n"
+ ")",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("arg_data_type"),
+ _("sfunc"),
+ _("state_data_type"),
+ _("state_data_size"),
+ _("ffunc"),
+ _("combinefunc"),
+ _("serialfunc"),
+ _("deserialfunc"),
+ _("initial_condition"),
+ _("msfunc"),
+ _("minvfunc"),
+ _("mstate_data_type"),
+ _("mstate_data_size"),
+ _("mffunc"),
+ _("minitial_condition"),
+ _("sort_operator"),
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("arg_data_type"),
+ _("argmode"),
+ _("argname"),
+ _("arg_data_type"),
+ _("sfunc"),
+ _("state_data_type"),
+ _("state_data_size"),
+ _("ffunc"),
+ _("initial_condition"),
+ _("or the old syntax"),
+ _("name"),
+ _("base_type"),
+ _("sfunc"),
+ _("state_data_type"),
+ _("state_data_size"),
+ _("ffunc"),
+ _("combinefunc"),
+ _("serialfunc"),
+ _("deserialfunc"),
+ _("initial_condition"),
+ _("msfunc"),
+ _("minvfunc"),
+ _("mstate_data_type"),
+ _("mstate_data_size"),
+ _("mffunc"),
+ _("minitial_condition"),
+ _("sort_operator"));
+}
+
+static void
+sql_help_CREATE_CAST(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE CAST (%s AS %s)\n"
+ " WITH FUNCTION %s [ (%s [, ...]) ]\n"
+ " [ AS ASSIGNMENT | AS IMPLICIT ]\n"
+ "\n"
+ "CREATE CAST (%s AS %s)\n"
+ " WITHOUT FUNCTION\n"
+ " [ AS ASSIGNMENT | AS IMPLICIT ]\n"
+ "\n"
+ "CREATE CAST (%s AS %s)\n"
+ " WITH INOUT\n"
+ " [ AS ASSIGNMENT | AS IMPLICIT ]",
+ _("source_type"),
+ _("target_type"),
+ _("function_name"),
+ _("argument_type"),
+ _("source_type"),
+ _("target_type"),
+ _("source_type"),
+ _("target_type"));
+}
+
+static void
+sql_help_CREATE_COLLATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE COLLATION [ IF NOT EXISTS ] %s (\n"
+ " [ LOCALE = %s, ]\n"
+ " [ LC_COLLATE = %s, ]\n"
+ " [ LC_CTYPE = %s, ]\n"
+ " [ PROVIDER = %s, ]\n"
+ " [ DETERMINISTIC = %s, ]\n"
+ " [ VERSION = %s ]\n"
+ ")\n"
+ "CREATE COLLATION [ IF NOT EXISTS ] %s FROM %s",
+ _("name"),
+ _("locale"),
+ _("lc_collate"),
+ _("lc_ctype"),
+ _("provider"),
+ _("boolean"),
+ _("version"),
+ _("name"),
+ _("existing_collation"));
+}
+
+static void
+sql_help_CREATE_CONVERSION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ DEFAULT ] CONVERSION %s\n"
+ " FOR %s TO %s FROM %s",
+ _("name"),
+ _("source_encoding"),
+ _("dest_encoding"),
+ _("function_name"));
+}
+
+static void
+sql_help_CREATE_DATABASE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE DATABASE %s\n"
+ " [ [ WITH ] [ OWNER [=] %s ]\n"
+ " [ TEMPLATE [=] %s ]\n"
+ " [ ENCODING [=] %s ]\n"
+ " [ LOCALE [=] %s ]\n"
+ " [ LC_COLLATE [=] %s ]\n"
+ " [ LC_CTYPE [=] %s ]\n"
+ " [ TABLESPACE [=] %s ]\n"
+ " [ ALLOW_CONNECTIONS [=] %s ]\n"
+ " [ CONNECTION LIMIT [=] %s ]\n"
+ " [ IS_TEMPLATE [=] %s ] ]",
+ _("name"),
+ _("user_name"),
+ _("template"),
+ _("encoding"),
+ _("locale"),
+ _("lc_collate"),
+ _("lc_ctype"),
+ _("tablespace_name"),
+ _("allowconn"),
+ _("connlimit"),
+ _("istemplate"));
+}
+
+static void
+sql_help_CREATE_DOMAIN(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE DOMAIN %s [ AS ] %s\n"
+ " [ COLLATE %s ]\n"
+ " [ DEFAULT %s ]\n"
+ " [ %s [ ... ] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ CONSTRAINT %s ]\n"
+ "{ NOT NULL | NULL | CHECK (%s) }",
+ _("name"),
+ _("data_type"),
+ _("collation"),
+ _("expression"),
+ _("constraint"),
+ _("where constraint is:"),
+ _("constraint_name"),
+ _("expression"));
+}
+
+static void
+sql_help_CREATE_EVENT_TRIGGER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE EVENT TRIGGER %s\n"
+ " ON %s\n"
+ " [ WHEN %s IN (filter_value [, ... ]) [ AND ... ] ]\n"
+ " EXECUTE { FUNCTION | PROCEDURE } %s()",
+ _("name"),
+ _("event"),
+ _("filter_variable"),
+ _("function_name"));
+}
+
+static void
+sql_help_CREATE_EXTENSION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE EXTENSION [ IF NOT EXISTS ] %s\n"
+ " [ WITH ] [ SCHEMA %s ]\n"
+ " [ VERSION %s ]\n"
+ " [ CASCADE ]",
+ _("extension_name"),
+ _("schema_name"),
+ _("version"));
+}
+
+static void
+sql_help_CREATE_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE FOREIGN DATA WRAPPER %s\n"
+ " [ HANDLER %s | NO HANDLER ]\n"
+ " [ VALIDATOR %s | NO VALIDATOR ]\n"
+ " [ OPTIONS ( %s '%s' [, ... ] ) ]",
+ _("name"),
+ _("handler_function"),
+ _("validator_function"),
+ _("option"),
+ _("value"));
+}
+
+static void
+sql_help_CREATE_FOREIGN_TABLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE FOREIGN TABLE [ IF NOT EXISTS ] %s ( [\n"
+ " { %s %s [ OPTIONS ( %s '%s' [, ... ] ) ] [ COLLATE %s ] [ %s [ ... ] ]\n"
+ " | %s }\n"
+ " [, ... ]\n"
+ "] )\n"
+ "[ INHERITS ( %s [, ... ] ) ]\n"
+ " SERVER %s\n"
+ "[ OPTIONS ( %s '%s' [, ... ] ) ]\n"
+ "\n"
+ "CREATE FOREIGN TABLE [ IF NOT EXISTS ] %s\n"
+ " PARTITION OF %s [ (\n"
+ " { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
+ " | %s }\n"
+ " [, ... ]\n"
+ ") ] %s\n"
+ " SERVER %s\n"
+ "[ OPTIONS ( %s '%s' [, ... ] ) ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ CONSTRAINT %s ]\n"
+ "{ NOT NULL |\n"
+ " NULL |\n"
+ " CHECK ( %s ) [ NO INHERIT ] |\n"
+ " DEFAULT %s |\n"
+ " GENERATED ALWAYS AS ( %s ) STORED }\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ CONSTRAINT %s ]\n"
+ "CHECK ( %s ) [ NO INHERIT ]",
+ _("table_name"),
+ _("column_name"),
+ _("data_type"),
+ _("option"),
+ _("value"),
+ _("collation"),
+ _("column_constraint"),
+ _("table_constraint"),
+ _("parent_table"),
+ _("server_name"),
+ _("option"),
+ _("value"),
+ _("table_name"),
+ _("parent_table"),
+ _("column_name"),
+ _("column_constraint"),
+ _("table_constraint"),
+ _("partition_bound_spec"),
+ _("server_name"),
+ _("option"),
+ _("value"),
+ _("where column_constraint is:"),
+ _("constraint_name"),
+ _("expression"),
+ _("default_expr"),
+ _("generation_expr"),
+ _("and table_constraint is:"),
+ _("constraint_name"),
+ _("expression"));
+}
+
+static void
+sql_help_CREATE_FUNCTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ OR REPLACE ] FUNCTION\n"
+ " %s ( [ [ %s ] [ %s ] %s [ { DEFAULT | = } %s ] [, ...] ] )\n"
+ " [ RETURNS %s\n"
+ " | RETURNS TABLE ( %s %s [, ...] ) ]\n"
+ " { LANGUAGE %s\n"
+ " | TRANSFORM { FOR TYPE %s } [, ... ]\n"
+ " | WINDOW\n"
+ " | { IMMUTABLE | STABLE | VOLATILE }\n"
+ " | [ NOT ] LEAKPROOF\n"
+ " | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }\n"
+ " | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }\n"
+ " | PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
+ " | COST %s\n"
+ " | ROWS %s\n"
+ " | SUPPORT %s\n"
+ " | SET %s { TO %s | = %s | FROM CURRENT }\n"
+ " | AS '%s'\n"
+ " | AS '%s', '%s'\n"
+ " } ...",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("default_expr"),
+ _("rettype"),
+ _("column_name"),
+ _("column_type"),
+ _("lang_name"),
+ _("type_name"),
+ _("execution_cost"),
+ _("result_rows"),
+ _("support_function"),
+ _("configuration_parameter"),
+ _("value"),
+ _("value"),
+ _("definition"),
+ _("obj_file"),
+ _("link_symbol"));
+}
+
+static void
+sql_help_CREATE_GROUP(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE GROUP %s [ [ WITH ] %s [ ... ] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " SUPERUSER | NOSUPERUSER\n"
+ " | CREATEDB | NOCREATEDB\n"
+ " | CREATEROLE | NOCREATEROLE\n"
+ " | INHERIT | NOINHERIT\n"
+ " | LOGIN | NOLOGIN\n"
+ " | REPLICATION | NOREPLICATION\n"
+ " | BYPASSRLS | NOBYPASSRLS\n"
+ " | CONNECTION LIMIT %s\n"
+ " | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
+ " | VALID UNTIL '%s'\n"
+ " | IN ROLE %s [, ...]\n"
+ " | IN GROUP %s [, ...]\n"
+ " | ROLE %s [, ...]\n"
+ " | ADMIN %s [, ...]\n"
+ " | USER %s [, ...]\n"
+ " | SYSID %s",
+ _("name"),
+ _("option"),
+ _("where option can be:"),
+ _("connlimit"),
+ _("password"),
+ _("timestamp"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("uid"));
+}
+
+static void
+sql_help_CREATE_INDEX(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] %s ] ON [ ONLY ] %s [ USING %s ]\n"
+ " ( { %s | ( %s ) } [ COLLATE %s ] [ %s [ ( %s = %s [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n"
+ " [ INCLUDE ( %s [, ...] ) ]\n"
+ " [ WITH ( %s [= %s] [, ... ] ) ]\n"
+ " [ TABLESPACE %s ]\n"
+ " [ WHERE %s ]",
+ _("name"),
+ _("table_name"),
+ _("method"),
+ _("column_name"),
+ _("expression"),
+ _("collation"),
+ _("opclass"),
+ _("opclass_parameter"),
+ _("value"),
+ _("column_name"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("predicate"));
+}
+
+static void
+sql_help_CREATE_LANGUAGE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE %s\n"
+ " HANDLER %s [ INLINE %s ] [ VALIDATOR %s ]\n"
+ "CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE %s",
+ _("name"),
+ _("call_handler"),
+ _("inline_handler"),
+ _("valfunction"),
+ _("name"));
+}
+
+static void
+sql_help_CREATE_MATERIALIZED_VIEW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] %s\n"
+ " [ (%s [, ...] ) ]\n"
+ " [ USING %s ]\n"
+ " [ WITH ( %s [= %s] [, ... ] ) ]\n"
+ " [ TABLESPACE %s ]\n"
+ " AS %s\n"
+ " [ WITH [ NO ] DATA ]",
+ _("table_name"),
+ _("column_name"),
+ _("method"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("query"));
+}
+
+static void
+sql_help_CREATE_OPERATOR(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE OPERATOR %s (\n"
+ " {FUNCTION|PROCEDURE} = %s\n"
+ " [, LEFTARG = %s ] [, RIGHTARG = %s ]\n"
+ " [, COMMUTATOR = %s ] [, NEGATOR = %s ]\n"
+ " [, RESTRICT = %s ] [, JOIN = %s ]\n"
+ " [, HASHES ] [, MERGES ]\n"
+ ")",
+ _("name"),
+ _("function_name"),
+ _("left_type"),
+ _("right_type"),
+ _("com_op"),
+ _("neg_op"),
+ _("res_proc"),
+ _("join_proc"));
+}
+
+static void
+sql_help_CREATE_OPERATOR_CLASS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE OPERATOR CLASS %s [ DEFAULT ] FOR TYPE %s\n"
+ " USING %s [ FAMILY %s ] AS\n"
+ " { OPERATOR %s %s [ ( %s, %s ) ] [ FOR SEARCH | FOR ORDER BY %s ]\n"
+ " | FUNCTION %s [ ( %s [ , %s ] ) ] %s ( %s [, ...] )\n"
+ " | STORAGE %s\n"
+ " } [, ... ]",
+ _("name"),
+ _("data_type"),
+ _("index_method"),
+ _("family_name"),
+ _("strategy_number"),
+ _("operator_name"),
+ _("op_type"),
+ _("op_type"),
+ _("sort_family_name"),
+ _("support_number"),
+ _("op_type"),
+ _("op_type"),
+ _("function_name"),
+ _("argument_type"),
+ _("storage_type"));
+}
+
+static void
+sql_help_CREATE_OPERATOR_FAMILY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE OPERATOR FAMILY %s USING %s",
+ _("name"),
+ _("index_method"));
+}
+
+static void
+sql_help_CREATE_POLICY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE POLICY %s ON %s\n"
+ " [ AS { PERMISSIVE | RESTRICTIVE } ]\n"
+ " [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]\n"
+ " [ TO { %s | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]\n"
+ " [ USING ( %s ) ]\n"
+ " [ WITH CHECK ( %s ) ]",
+ _("name"),
+ _("table_name"),
+ _("role_name"),
+ _("using_expression"),
+ _("check_expression"));
+}
+
+static void
+sql_help_CREATE_PROCEDURE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ OR REPLACE ] PROCEDURE\n"
+ " %s ( [ [ %s ] [ %s ] %s [ { DEFAULT | = } %s ] [, ...] ] )\n"
+ " { LANGUAGE %s\n"
+ " | TRANSFORM { FOR TYPE %s } [, ... ]\n"
+ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
+ " | SET %s { TO %s | = %s | FROM CURRENT }\n"
+ " | AS '%s'\n"
+ " | AS '%s', '%s'\n"
+ " } ...",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("default_expr"),
+ _("lang_name"),
+ _("type_name"),
+ _("configuration_parameter"),
+ _("value"),
+ _("value"),
+ _("definition"),
+ _("obj_file"),
+ _("link_symbol"));
+}
+
+static void
+sql_help_CREATE_PUBLICATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE PUBLICATION %s\n"
+ " [ FOR TABLE [ ONLY ] %s [ * ] [, ...]\n"
+ " | FOR ALL TABLES ]\n"
+ " [ WITH ( %s [= %s] [, ... ] ) ]",
+ _("name"),
+ _("table_name"),
+ _("publication_parameter"),
+ _("value"));
+}
+
+static void
+sql_help_CREATE_ROLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE ROLE %s [ [ WITH ] %s [ ... ] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " SUPERUSER | NOSUPERUSER\n"
+ " | CREATEDB | NOCREATEDB\n"
+ " | CREATEROLE | NOCREATEROLE\n"
+ " | INHERIT | NOINHERIT\n"
+ " | LOGIN | NOLOGIN\n"
+ " | REPLICATION | NOREPLICATION\n"
+ " | BYPASSRLS | NOBYPASSRLS\n"
+ " | CONNECTION LIMIT %s\n"
+ " | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
+ " | VALID UNTIL '%s'\n"
+ " | IN ROLE %s [, ...]\n"
+ " | IN GROUP %s [, ...]\n"
+ " | ROLE %s [, ...]\n"
+ " | ADMIN %s [, ...]\n"
+ " | USER %s [, ...]\n"
+ " | SYSID %s",
+ _("name"),
+ _("option"),
+ _("where option can be:"),
+ _("connlimit"),
+ _("password"),
+ _("timestamp"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("uid"));
+}
+
+static void
+sql_help_CREATE_RULE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ OR REPLACE ] RULE %s AS ON %s\n"
+ " TO %s [ WHERE %s ]\n"
+ " DO [ ALSO | INSTEAD ] { NOTHING | %s | ( %s ; %s ... ) }\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " SELECT | INSERT | UPDATE | DELETE",
+ _("name"),
+ _("event"),
+ _("table_name"),
+ _("condition"),
+ _("command"),
+ _("command"),
+ _("command"),
+ _("where event can be one of:"));
+}
+
+static void
+sql_help_CREATE_SCHEMA(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE SCHEMA %s [ AUTHORIZATION %s ] [ %s [ ... ] ]\n"
+ "CREATE SCHEMA AUTHORIZATION %s [ %s [ ... ] ]\n"
+ "CREATE SCHEMA IF NOT EXISTS %s [ AUTHORIZATION %s ]\n"
+ "CREATE SCHEMA IF NOT EXISTS AUTHORIZATION %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s\n"
+ " | CURRENT_USER\n"
+ " | SESSION_USER",
+ _("schema_name"),
+ _("role_specification"),
+ _("schema_element"),
+ _("role_specification"),
+ _("schema_element"),
+ _("schema_name"),
+ _("role_specification"),
+ _("role_specification"),
+ _("where role_specification can be:"),
+ _("user_name"));
+}
+
+static void
+sql_help_CREATE_SEQUENCE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] %s\n"
+ " [ AS %s ]\n"
+ " [ INCREMENT [ BY ] %s ]\n"
+ " [ MINVALUE %s | NO MINVALUE ] [ MAXVALUE %s | NO MAXVALUE ]\n"
+ " [ START [ WITH ] %s ] [ CACHE %s ] [ [ NO ] CYCLE ]\n"
+ " [ OWNED BY { %s.%s | NONE } ]",
+ _("name"),
+ _("data_type"),
+ _("increment"),
+ _("minvalue"),
+ _("maxvalue"),
+ _("start"),
+ _("cache"),
+ _("table_name"),
+ _("column_name"));
+}
+
+static void
+sql_help_CREATE_SERVER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE SERVER [ IF NOT EXISTS ] %s [ TYPE '%s' ] [ VERSION '%s' ]\n"
+ " FOREIGN DATA WRAPPER %s\n"
+ " [ OPTIONS ( %s '%s' [, ... ] ) ]",
+ _("server_name"),
+ _("server_type"),
+ _("server_version"),
+ _("fdw_name"),
+ _("option"),
+ _("value"));
+}
+
+static void
+sql_help_CREATE_STATISTICS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE STATISTICS [ IF NOT EXISTS ] %s\n"
+ " [ ( %s [, ... ] ) ]\n"
+ " ON %s, %s [, ...]\n"
+ " FROM %s",
+ _("statistics_name"),
+ _("statistics_kind"),
+ _("column_name"),
+ _("column_name"),
+ _("table_name"));
+}
+
+static void
+sql_help_CREATE_SUBSCRIPTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE SUBSCRIPTION %s\n"
+ " CONNECTION '%s'\n"
+ " PUBLICATION %s [, ...]\n"
+ " [ WITH ( %s [= %s] [, ... ] ) ]",
+ _("subscription_name"),
+ _("conninfo"),
+ _("publication_name"),
+ _("subscription_parameter"),
+ _("value"));
+}
+
+static void
+sql_help_CREATE_TABLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s ( [\n"
+ " { %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
+ " | %s\n"
+ " | LIKE %s [ %s ... ] }\n"
+ " [, ... ]\n"
+ "] )\n"
+ "[ INHERITS ( %s [, ... ] ) ]\n"
+ "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
+ "[ USING %s ]\n"
+ "[ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
+ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+ "[ TABLESPACE %s ]\n"
+ "\n"
+ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
+ " OF %s [ (\n"
+ " { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
+ " | %s }\n"
+ " [, ... ]\n"
+ ") ]\n"
+ "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
+ "[ USING %s ]\n"
+ "[ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
+ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+ "[ TABLESPACE %s ]\n"
+ "\n"
+ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
+ " PARTITION OF %s [ (\n"
+ " { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
+ " | %s }\n"
+ " [, ... ]\n"
+ ") ] { FOR VALUES %s | DEFAULT }\n"
+ "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
+ "[ USING %s ]\n"
+ "[ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
+ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+ "[ TABLESPACE %s ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ CONSTRAINT %s ]\n"
+ "{ NOT NULL |\n"
+ " NULL |\n"
+ " CHECK ( %s ) [ NO INHERIT ] |\n"
+ " DEFAULT %s |\n"
+ " GENERATED ALWAYS AS ( %s ) STORED |\n"
+ " GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ] |\n"
+ " UNIQUE %s |\n"
+ " PRIMARY KEY %s |\n"
+ " REFERENCES %s [ ( %s ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
+ " [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
+ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ CONSTRAINT %s ]\n"
+ "{ CHECK ( %s ) [ NO INHERIT ] |\n"
+ " UNIQUE ( %s [, ... ] ) %s |\n"
+ " PRIMARY KEY ( %s [, ... ] ) %s |\n"
+ " EXCLUDE [ USING %s ] ( %s WITH %s [, ... ] ) %s [ WHERE ( %s ) ] |\n"
+ " FOREIGN KEY ( %s [, ... ] ) REFERENCES %s [ ( %s [, ... ] ) ]\n"
+ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
+ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "IN ( %s [, ...] ) |\n"
+ "FROM ( { %s | MINVALUE | MAXVALUE } [, ...] )\n"
+ " TO ( { %s | MINVALUE | MAXVALUE } [, ...] ) |\n"
+ "WITH ( MODULUS %s, REMAINDER %s )\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "[ INCLUDE ( %s [, ... ] ) ]\n"
+ "[ WITH ( %s [= %s] [, ... ] ) ]\n"
+ "[ USING INDEX TABLESPACE %s ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "{ %s | ( %s ) } [ %s ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]",
+ _("table_name"),
+ _("column_name"),
+ _("data_type"),
+ _("collation"),
+ _("column_constraint"),
+ _("table_constraint"),
+ _("source_table"),
+ _("like_option"),
+ _("parent_table"),
+ _("column_name"),
+ _("expression"),
+ _("collation"),
+ _("opclass"),
+ _("method"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("table_name"),
+ _("type_name"),
+ _("column_name"),
+ _("column_constraint"),
+ _("table_constraint"),
+ _("column_name"),
+ _("expression"),
+ _("collation"),
+ _("opclass"),
+ _("method"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("table_name"),
+ _("parent_table"),
+ _("column_name"),
+ _("column_constraint"),
+ _("table_constraint"),
+ _("partition_bound_spec"),
+ _("column_name"),
+ _("expression"),
+ _("collation"),
+ _("opclass"),
+ _("method"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("where column_constraint is:"),
+ _("constraint_name"),
+ _("expression"),
+ _("default_expr"),
+ _("generation_expr"),
+ _("sequence_options"),
+ _("index_parameters"),
+ _("index_parameters"),
+ _("reftable"),
+ _("refcolumn"),
+ _("referential_action"),
+ _("referential_action"),
+ _("and table_constraint is:"),
+ _("constraint_name"),
+ _("expression"),
+ _("column_name"),
+ _("index_parameters"),
+ _("column_name"),
+ _("index_parameters"),
+ _("index_method"),
+ _("exclude_element"),
+ _("operator"),
+ _("index_parameters"),
+ _("predicate"),
+ _("column_name"),
+ _("reftable"),
+ _("refcolumn"),
+ _("referential_action"),
+ _("referential_action"),
+ _("and like_option is:"),
+ _("and partition_bound_spec is:"),
+ _("partition_bound_expr"),
+ _("partition_bound_expr"),
+ _("partition_bound_expr"),
+ _("numeric_literal"),
+ _("numeric_literal"),
+ _("index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"),
+ _("column_name"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("exclude_element in an EXCLUDE constraint is:"),
+ _("column_name"),
+ _("expression"),
+ _("opclass"));
+}
+
+static void
+sql_help_CREATE_TABLE_AS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
+ " [ (%s [, ...] ) ]\n"
+ " [ USING %s ]\n"
+ " [ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
+ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
+ " [ TABLESPACE %s ]\n"
+ " AS %s\n"
+ " [ WITH [ NO ] DATA ]",
+ _("table_name"),
+ _("column_name"),
+ _("method"),
+ _("storage_parameter"),
+ _("value"),
+ _("tablespace_name"),
+ _("query"));
+}
+
+static void
+sql_help_CREATE_TABLESPACE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE TABLESPACE %s\n"
+ " [ OWNER { %s | CURRENT_USER | SESSION_USER } ]\n"
+ " LOCATION '%s'\n"
+ " [ WITH ( %s = %s [, ... ] ) ]",
+ _("tablespace_name"),
+ _("new_owner"),
+ _("directory"),
+ _("tablespace_option"),
+ _("value"));
+}
+
+static void
+sql_help_CREATE_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE TEXT SEARCH CONFIGURATION %s (\n"
+ " PARSER = %s |\n"
+ " COPY = %s\n"
+ ")",
+ _("name"),
+ _("parser_name"),
+ _("source_config"));
+}
+
+static void
+sql_help_CREATE_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE TEXT SEARCH DICTIONARY %s (\n"
+ " TEMPLATE = %s\n"
+ " [, %s = %s [, ... ]]\n"
+ ")",
+ _("name"),
+ _("template"),
+ _("option"),
+ _("value"));
+}
+
+static void
+sql_help_CREATE_TEXT_SEARCH_PARSER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE TEXT SEARCH PARSER %s (\n"
+ " START = %s ,\n"
+ " GETTOKEN = %s ,\n"
+ " END = %s ,\n"
+ " LEXTYPES = %s\n"
+ " [, HEADLINE = %s ]\n"
+ ")",
+ _("name"),
+ _("start_function"),
+ _("gettoken_function"),
+ _("end_function"),
+ _("lextypes_function"),
+ _("headline_function"));
+}
+
+static void
+sql_help_CREATE_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE TEXT SEARCH TEMPLATE %s (\n"
+ " [ INIT = %s , ]\n"
+ " LEXIZE = %s\n"
+ ")",
+ _("name"),
+ _("init_function"),
+ _("lexize_function"));
+}
+
+static void
+sql_help_CREATE_TRANSFORM(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ OR REPLACE ] TRANSFORM FOR %s LANGUAGE %s (\n"
+ " FROM SQL WITH FUNCTION %s [ (%s [, ...]) ],\n"
+ " TO SQL WITH FUNCTION %s [ (%s [, ...]) ]\n"
+ ");",
+ _("type_name"),
+ _("lang_name"),
+ _("from_sql_function_name"),
+ _("argument_type"),
+ _("to_sql_function_name"),
+ _("argument_type"));
+}
+
+static void
+sql_help_CREATE_TRIGGER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ CONSTRAINT ] TRIGGER %s { BEFORE | AFTER | INSTEAD OF } { %s [ OR ... ] }\n"
+ " ON %s\n"
+ " [ FROM %s ]\n"
+ " [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]\n"
+ " [ REFERENCING { { OLD | NEW } TABLE [ AS ] %s } [ ... ] ]\n"
+ " [ FOR [ EACH ] { ROW | STATEMENT } ]\n"
+ " [ WHEN ( %s ) ]\n"
+ " EXECUTE { FUNCTION | PROCEDURE } %s ( %s )\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " INSERT\n"
+ " UPDATE [ OF %s [, ... ] ]\n"
+ " DELETE\n"
+ " TRUNCATE",
+ _("name"),
+ _("event"),
+ _("table_name"),
+ _("referenced_table_name"),
+ _("transition_relation_name"),
+ _("condition"),
+ _("function_name"),
+ _("arguments"),
+ _("where event can be one of:"),
+ _("column_name"));
+}
+
+static void
+sql_help_CREATE_TYPE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE TYPE %s AS\n"
+ " ( [ %s %s [ COLLATE %s ] [, ... ] ] )\n"
+ "\n"
+ "CREATE TYPE %s AS ENUM\n"
+ " ( [ '%s' [, ... ] ] )\n"
+ "\n"
+ "CREATE TYPE %s AS RANGE (\n"
+ " SUBTYPE = %s\n"
+ " [ , SUBTYPE_OPCLASS = %s ]\n"
+ " [ , COLLATION = %s ]\n"
+ " [ , CANONICAL = %s ]\n"
+ " [ , SUBTYPE_DIFF = %s ]\n"
+ ")\n"
+ "\n"
+ "CREATE TYPE %s (\n"
+ " INPUT = %s,\n"
+ " OUTPUT = %s\n"
+ " [ , RECEIVE = %s ]\n"
+ " [ , SEND = %s ]\n"
+ " [ , TYPMOD_IN = %s ]\n"
+ " [ , TYPMOD_OUT = %s ]\n"
+ " [ , ANALYZE = %s ]\n"
+ " [ , INTERNALLENGTH = { %s | VARIABLE } ]\n"
+ " [ , PASSEDBYVALUE ]\n"
+ " [ , ALIGNMENT = %s ]\n"
+ " [ , STORAGE = %s ]\n"
+ " [ , LIKE = %s ]\n"
+ " [ , CATEGORY = %s ]\n"
+ " [ , PREFERRED = %s ]\n"
+ " [ , DEFAULT = %s ]\n"
+ " [ , ELEMENT = %s ]\n"
+ " [ , DELIMITER = %s ]\n"
+ " [ , COLLATABLE = %s ]\n"
+ ")\n"
+ "\n"
+ "CREATE TYPE %s",
+ _("name"),
+ _("attribute_name"),
+ _("data_type"),
+ _("collation"),
+ _("name"),
+ _("label"),
+ _("name"),
+ _("subtype"),
+ _("subtype_operator_class"),
+ _("collation"),
+ _("canonical_function"),
+ _("subtype_diff_function"),
+ _("name"),
+ _("input_function"),
+ _("output_function"),
+ _("receive_function"),
+ _("send_function"),
+ _("type_modifier_input_function"),
+ _("type_modifier_output_function"),
+ _("analyze_function"),
+ _("internallength"),
+ _("alignment"),
+ _("storage"),
+ _("like_type"),
+ _("category"),
+ _("preferred"),
+ _("default"),
+ _("element"),
+ _("delimiter"),
+ _("collatable"),
+ _("name"));
+}
+
+static void
+sql_help_CREATE_USER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE USER %s [ [ WITH ] %s [ ... ] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " SUPERUSER | NOSUPERUSER\n"
+ " | CREATEDB | NOCREATEDB\n"
+ " | CREATEROLE | NOCREATEROLE\n"
+ " | INHERIT | NOINHERIT\n"
+ " | LOGIN | NOLOGIN\n"
+ " | REPLICATION | NOREPLICATION\n"
+ " | BYPASSRLS | NOBYPASSRLS\n"
+ " | CONNECTION LIMIT %s\n"
+ " | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
+ " | VALID UNTIL '%s'\n"
+ " | IN ROLE %s [, ...]\n"
+ " | IN GROUP %s [, ...]\n"
+ " | ROLE %s [, ...]\n"
+ " | ADMIN %s [, ...]\n"
+ " | USER %s [, ...]\n"
+ " | SYSID %s",
+ _("name"),
+ _("option"),
+ _("where option can be:"),
+ _("connlimit"),
+ _("password"),
+ _("timestamp"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("role_name"),
+ _("uid"));
+}
+
+static void
+sql_help_CREATE_USER_MAPPING(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE USER MAPPING [ IF NOT EXISTS ] FOR { %s | USER | CURRENT_USER | PUBLIC }\n"
+ " SERVER %s\n"
+ " [ OPTIONS ( %s '%s' [ , ... ] ) ]",
+ _("user_name"),
+ _("server_name"),
+ _("option"),
+ _("value"));
+}
+
+static void
+sql_help_CREATE_VIEW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW %s [ ( %s [, ...] ) ]\n"
+ " [ WITH ( %s [= %s] [, ... ] ) ]\n"
+ " AS %s\n"
+ " [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]",
+ _("name"),
+ _("column_name"),
+ _("view_option_name"),
+ _("view_option_value"),
+ _("query"));
+}
+
+static void
+sql_help_DEALLOCATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DEALLOCATE [ PREPARE ] { %s | ALL }",
+ _("name"));
+}
+
+static void
+sql_help_DECLARE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DECLARE %s [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n"
+ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR %s",
+ _("name"),
+ _("query"));
+}
+
+static void
+sql_help_DELETE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
+ "DELETE FROM [ ONLY ] %s [ * ] [ [ AS ] %s ]\n"
+ " [ USING %s [, ...] ]\n"
+ " [ WHERE %s | WHERE CURRENT OF %s ]\n"
+ " [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]",
+ _("with_query"),
+ _("table_name"),
+ _("alias"),
+ _("from_item"),
+ _("condition"),
+ _("cursor_name"),
+ _("output_expression"),
+ _("output_name"));
+}
+
+static void
+sql_help_DISCARD(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }");
+}
+
+static void
+sql_help_DO(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DO [ LANGUAGE %s ] %s",
+ _("lang_name"),
+ _("code"));
+}
+
+static void
+sql_help_DROP_ACCESS_METHOD(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP ACCESS METHOD [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_AGGREGATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP AGGREGATE [ IF EXISTS ] %s ( %s ) [, ...] [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "* |\n"
+ "[ %s ] [ %s ] %s [ , ... ] |\n"
+ "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
+ _("name"),
+ _("aggregate_signature"),
+ _("where aggregate_signature is:"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_DROP_CAST(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP CAST [ IF EXISTS ] (%s AS %s) [ CASCADE | RESTRICT ]",
+ _("source_type"),
+ _("target_type"));
+}
+
+static void
+sql_help_DROP_COLLATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP COLLATION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_CONVERSION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP CONVERSION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_DATABASE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP DATABASE [ IF EXISTS ] %s [ [ WITH ] ( %s [, ...] ) ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " FORCE",
+ _("name"),
+ _("option"),
+ _("where option can be:"));
+}
+
+static void
+sql_help_DROP_DOMAIN(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP DOMAIN [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_EVENT_TRIGGER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP EVENT TRIGGER [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_EXTENSION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP EXTENSION [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_FOREIGN_TABLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP FOREIGN TABLE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_FUNCTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP FUNCTION [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
+ " [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_DROP_GROUP(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP GROUP [ IF EXISTS ] %s [, ...]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_INDEX(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_LANGUAGE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_MATERIALIZED_VIEW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP MATERIALIZED VIEW [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_OPERATOR(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP OPERATOR [ IF EXISTS ] %s ( { %s | NONE } , { %s | NONE } ) [, ...] [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("left_type"),
+ _("right_type"));
+}
+
+static void
+sql_help_DROP_OPERATOR_CLASS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP OPERATOR CLASS [ IF EXISTS ] %s USING %s [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("index_method"));
+}
+
+static void
+sql_help_DROP_OPERATOR_FAMILY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP OPERATOR FAMILY [ IF EXISTS ] %s USING %s [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("index_method"));
+}
+
+static void
+sql_help_DROP_OWNED(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP OWNED BY { %s | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_POLICY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP POLICY [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("table_name"));
+}
+
+static void
+sql_help_DROP_PROCEDURE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP PROCEDURE [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
+ " [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_DROP_PUBLICATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP PUBLICATION [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_ROLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP ROLE [ IF EXISTS ] %s [, ...]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_ROUTINE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP ROUTINE [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
+ " [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_DROP_RULE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP RULE [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("table_name"));
+}
+
+static void
+sql_help_DROP_SCHEMA(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP SCHEMA [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_SEQUENCE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP SEQUENCE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_SERVER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP SERVER [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_STATISTICS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP STATISTICS [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_SUBSCRIPTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP SUBSCRIPTION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_TABLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TABLE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_TABLESPACE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TABLESPACE [ IF EXISTS ] %s",
+ _("name"));
+}
+
+static void
+sql_help_DROP_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_TEXT_SEARCH_PARSER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TEXT SEARCH PARSER [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_TRANSFORM(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TRANSFORM [ IF EXISTS ] FOR %s LANGUAGE %s [ CASCADE | RESTRICT ]",
+ _("type_name"),
+ _("lang_name"));
+}
+
+static void
+sql_help_DROP_TRIGGER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TRIGGER [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
+ _("name"),
+ _("table_name"));
+}
+
+static void
+sql_help_DROP_TYPE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP TYPE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_USER(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP USER [ IF EXISTS ] %s [, ...]",
+ _("name"));
+}
+
+static void
+sql_help_DROP_USER_MAPPING(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP USER MAPPING [ IF EXISTS ] FOR { %s | USER | CURRENT_USER | PUBLIC } SERVER %s",
+ _("user_name"),
+ _("server_name"));
+}
+
+static void
+sql_help_DROP_VIEW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "DROP VIEW [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_END(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "END [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
+}
+
+static void
+sql_help_EXECUTE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "EXECUTE %s [ ( %s [, ...] ) ]",
+ _("name"),
+ _("parameter"));
+}
+
+static void
+sql_help_EXPLAIN(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "EXPLAIN [ ( %s [, ...] ) ] %s\n"
+ "EXPLAIN [ ANALYZE ] [ VERBOSE ] %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ANALYZE [ %s ]\n"
+ " VERBOSE [ %s ]\n"
+ " COSTS [ %s ]\n"
+ " SETTINGS [ %s ]\n"
+ " BUFFERS [ %s ]\n"
+ " WAL [ %s ]\n"
+ " TIMING [ %s ]\n"
+ " SUMMARY [ %s ]\n"
+ " FORMAT { TEXT | XML | JSON | YAML }",
+ _("option"),
+ _("statement"),
+ _("statement"),
+ _("where option can be one of:"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"));
+}
+
+static void
+sql_help_FETCH(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "FETCH [ %s [ FROM | IN ] ] %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " NEXT\n"
+ " PRIOR\n"
+ " FIRST\n"
+ " LAST\n"
+ " ABSOLUTE %s\n"
+ " RELATIVE %s\n"
+ " %s\n"
+ " ALL\n"
+ " FORWARD\n"
+ " FORWARD %s\n"
+ " FORWARD ALL\n"
+ " BACKWARD\n"
+ " BACKWARD %s\n"
+ " BACKWARD ALL",
+ _("direction"),
+ _("cursor_name"),
+ _("where direction can be empty or one of:"),
+ _("count"),
+ _("count"),
+ _("count"),
+ _("count"),
+ _("count"));
+}
+
+static void
+sql_help_GRANT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON { [ TABLE ] %s [, ...]\n"
+ " | ALL TABLES IN SCHEMA %s [, ...] }\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n"
+ " [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n"
+ " ON [ TABLE ] %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { { USAGE | SELECT | UPDATE }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON { SEQUENCE %s [, ...]\n"
+ " | ALL SEQUENCES IN SCHEMA %s [, ...] }\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON DATABASE %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON DOMAIN %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON FOREIGN DATA WRAPPER %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON FOREIGN SERVER %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
+ " ON { { FUNCTION | PROCEDURE | ROUTINE } %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
+ " | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA %s [, ...] }\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON LANGUAGE %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON LARGE OBJECT %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON SCHEMA %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n"
+ " ON TABLESPACE %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON TYPE %s [, ...]\n"
+ " TO %s [, ...] [ WITH GRANT OPTION ]\n"
+ "\n"
+ "GRANT %s [, ...] TO %s [, ...]\n"
+ " [ WITH ADMIN OPTION ]\n"
+ " [ GRANTED BY %s ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " [ GROUP ] %s\n"
+ " | PUBLIC\n"
+ " | CURRENT_USER\n"
+ " | SESSION_USER",
+ _("table_name"),
+ _("schema_name"),
+ _("role_specification"),
+ _("column_name"),
+ _("column_name"),
+ _("table_name"),
+ _("role_specification"),
+ _("sequence_name"),
+ _("schema_name"),
+ _("role_specification"),
+ _("database_name"),
+ _("role_specification"),
+ _("domain_name"),
+ _("role_specification"),
+ _("fdw_name"),
+ _("role_specification"),
+ _("server_name"),
+ _("role_specification"),
+ _("routine_name"),
+ _("argmode"),
+ _("arg_name"),
+ _("arg_type"),
+ _("schema_name"),
+ _("role_specification"),
+ _("lang_name"),
+ _("role_specification"),
+ _("loid"),
+ _("role_specification"),
+ _("schema_name"),
+ _("role_specification"),
+ _("tablespace_name"),
+ _("role_specification"),
+ _("type_name"),
+ _("role_specification"),
+ _("role_name"),
+ _("role_specification"),
+ _("role_specification"),
+ _("where role_specification can be:"),
+ _("role_name"));
+}
+
+static void
+sql_help_IMPORT_FOREIGN_SCHEMA(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "IMPORT FOREIGN SCHEMA %s\n"
+ " [ { LIMIT TO | EXCEPT } ( %s [, ...] ) ]\n"
+ " FROM SERVER %s\n"
+ " INTO %s\n"
+ " [ OPTIONS ( %s '%s' [, ... ] ) ]",
+ _("remote_schema"),
+ _("table_name"),
+ _("server_name"),
+ _("local_schema"),
+ _("option"),
+ _("value"));
+}
+
+static void
+sql_help_INSERT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
+ "INSERT INTO %s [ AS %s ] [ ( %s [, ...] ) ]\n"
+ " [ OVERRIDING { SYSTEM | USER } VALUE ]\n"
+ " { DEFAULT VALUES | VALUES ( { %s | DEFAULT } [, ...] ) [, ...] | %s }\n"
+ " [ ON CONFLICT [ %s ] %s ]\n"
+ " [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ...] ) [ WHERE %s ]\n"
+ " ON CONSTRAINT %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " DO NOTHING\n"
+ " DO UPDATE SET { %s = { %s | DEFAULT } |\n"
+ " ( %s [, ...] ) = [ ROW ] ( { %s | DEFAULT } [, ...] ) |\n"
+ " ( %s [, ...] ) = ( %s )\n"
+ " } [, ...]\n"
+ " [ WHERE %s ]",
+ _("with_query"),
+ _("table_name"),
+ _("alias"),
+ _("column_name"),
+ _("expression"),
+ _("query"),
+ _("conflict_target"),
+ _("conflict_action"),
+ _("output_expression"),
+ _("output_name"),
+ _("where conflict_target can be one of:"),
+ _("index_column_name"),
+ _("index_expression"),
+ _("collation"),
+ _("opclass"),
+ _("index_predicate"),
+ _("constraint_name"),
+ _("and conflict_action is one of:"),
+ _("column_name"),
+ _("expression"),
+ _("column_name"),
+ _("expression"),
+ _("column_name"),
+ _("sub-SELECT"),
+ _("condition"));
+}
+
+static void
+sql_help_LISTEN(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "LISTEN %s",
+ _("channel"));
+}
+
+static void
+sql_help_LOAD(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "LOAD '%s'",
+ _("filename"));
+}
+
+static void
+sql_help_LOCK(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "LOCK [ TABLE ] [ ONLY ] %s [ * ] [, ...] [ IN %s MODE ] [ NOWAIT ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
+ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE",
+ _("name"),
+ _("lockmode"),
+ _("where lockmode is one of:"));
+}
+
+static void
+sql_help_MOVE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "MOVE [ %s [ FROM | IN ] ] %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " NEXT\n"
+ " PRIOR\n"
+ " FIRST\n"
+ " LAST\n"
+ " ABSOLUTE %s\n"
+ " RELATIVE %s\n"
+ " %s\n"
+ " ALL\n"
+ " FORWARD\n"
+ " FORWARD %s\n"
+ " FORWARD ALL\n"
+ " BACKWARD\n"
+ " BACKWARD %s\n"
+ " BACKWARD ALL",
+ _("direction"),
+ _("cursor_name"),
+ _("where direction can be empty or one of:"),
+ _("count"),
+ _("count"),
+ _("count"),
+ _("count"),
+ _("count"));
+}
+
+static void
+sql_help_NOTIFY(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "NOTIFY %s [ , %s ]",
+ _("channel"),
+ _("payload"));
+}
+
+static void
+sql_help_PREPARE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "PREPARE %s [ ( %s [, ...] ) ] AS %s",
+ _("name"),
+ _("data_type"),
+ _("statement"));
+}
+
+static void
+sql_help_PREPARE_TRANSACTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "PREPARE TRANSACTION %s",
+ _("transaction_id"));
+}
+
+static void
+sql_help_REASSIGN_OWNED(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "REASSIGN OWNED BY { %s | CURRENT_USER | SESSION_USER } [, ...]\n"
+ " TO { %s | CURRENT_USER | SESSION_USER }",
+ _("old_role"),
+ _("new_role"));
+}
+
+static void
+sql_help_REFRESH_MATERIALIZED_VIEW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] %s\n"
+ " [ WITH [ NO ] DATA ]",
+ _("name"));
+}
+
+static void
+sql_help_REINDEX(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "REINDEX [ ( %s [, ...] ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } [ CONCURRENTLY ] %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " VERBOSE",
+ _("option"),
+ _("name"),
+ _("where option can be one of:"));
+}
+
+static void
+sql_help_RELEASE_SAVEPOINT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "RELEASE [ SAVEPOINT ] %s",
+ _("savepoint_name"));
+}
+
+static void
+sql_help_RESET(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "RESET %s\n"
+ "RESET ALL",
+ _("configuration_parameter"));
+}
+
+static void
+sql_help_REVOKE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON { [ TABLE ] %s [, ...]\n"
+ " | ALL TABLES IN SCHEMA %s [, ...] }\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n"
+ " [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n"
+ " ON [ TABLE ] %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { USAGE | SELECT | UPDATE }\n"
+ " [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON { SEQUENCE %s [, ...]\n"
+ " | ALL SEQUENCES IN SCHEMA %s [, ...] }\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON DATABASE %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON DOMAIN %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON FOREIGN DATA WRAPPER %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON FOREIGN SERVER %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { EXECUTE | ALL [ PRIVILEGES ] }\n"
+ " ON { { FUNCTION | PROCEDURE | ROUTINE } %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
+ " | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA %s [, ...] }\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON LANGUAGE %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON LARGE OBJECT %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
+ " ON SCHEMA %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { CREATE | ALL [ PRIVILEGES ] }\n"
+ " ON TABLESPACE %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ GRANT OPTION FOR ]\n"
+ " { USAGE | ALL [ PRIVILEGES ] }\n"
+ " ON TYPE %s [, ...]\n"
+ " FROM %s [, ...]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "REVOKE [ ADMIN OPTION FOR ]\n"
+ " %s [, ...] FROM %s [, ...]\n"
+ " [ GRANTED BY %s ]\n"
+ " [ CASCADE | RESTRICT ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " [ GROUP ] %s\n"
+ " | PUBLIC\n"
+ " | CURRENT_USER\n"
+ " | SESSION_USER",
+ _("table_name"),
+ _("schema_name"),
+ _("role_specification"),
+ _("column_name"),
+ _("column_name"),
+ _("table_name"),
+ _("role_specification"),
+ _("sequence_name"),
+ _("schema_name"),
+ _("role_specification"),
+ _("database_name"),
+ _("role_specification"),
+ _("domain_name"),
+ _("role_specification"),
+ _("fdw_name"),
+ _("role_specification"),
+ _("server_name"),
+ _("role_specification"),
+ _("function_name"),
+ _("argmode"),
+ _("arg_name"),
+ _("arg_type"),
+ _("schema_name"),
+ _("role_specification"),
+ _("lang_name"),
+ _("role_specification"),
+ _("loid"),
+ _("role_specification"),
+ _("schema_name"),
+ _("role_specification"),
+ _("tablespace_name"),
+ _("role_specification"),
+ _("type_name"),
+ _("role_specification"),
+ _("role_name"),
+ _("role_specification"),
+ _("role_specification"),
+ _("where role_specification can be:"),
+ _("role_name"));
+}
+
+static void
+sql_help_ROLLBACK(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ROLLBACK [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
+}
+
+static void
+sql_help_ROLLBACK_PREPARED(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ROLLBACK PREPARED %s",
+ _("transaction_id"));
+}
+
+static void
+sql_help_ROLLBACK_TO_SAVEPOINT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] %s",
+ _("savepoint_name"));
+}
+
+static void
+sql_help_SAVEPOINT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SAVEPOINT %s",
+ _("savepoint_name"));
+}
+
+static void
+sql_help_SECURITY_LABEL(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SECURITY LABEL [ FOR %s ] ON\n"
+ "{\n"
+ " TABLE %s |\n"
+ " COLUMN %s.%s |\n"
+ " AGGREGATE %s ( %s ) |\n"
+ " DATABASE %s |\n"
+ " DOMAIN %s |\n"
+ " EVENT TRIGGER %s |\n"
+ " FOREIGN TABLE %s\n"
+ " FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " LARGE OBJECT %s |\n"
+ " MATERIALIZED VIEW %s |\n"
+ " [ PROCEDURAL ] LANGUAGE %s |\n"
+ " PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " PUBLICATION %s |\n"
+ " ROLE %s |\n"
+ " ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
+ " SCHEMA %s |\n"
+ " SEQUENCE %s |\n"
+ " SUBSCRIPTION %s |\n"
+ " TABLESPACE %s |\n"
+ " TYPE %s |\n"
+ " VIEW %s\n"
+ "} IS '%s'\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "* |\n"
+ "[ %s ] [ %s ] %s [ , ... ] |\n"
+ "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
+ _("provider"),
+ _("object_name"),
+ _("table_name"),
+ _("column_name"),
+ _("aggregate_name"),
+ _("aggregate_signature"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("function_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("large_object_oid"),
+ _("object_name"),
+ _("object_name"),
+ _("procedure_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("object_name"),
+ _("object_name"),
+ _("routine_name"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("object_name"),
+ _("label"),
+ _("where aggregate_signature is:"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"),
+ _("argmode"),
+ _("argname"),
+ _("argtype"));
+}
+
+static void
+sql_help_SELECT(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
+ "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
+ " [ * | %s [ [ AS ] %s ] [, ...] ]\n"
+ " [ FROM %s [, ...] ]\n"
+ " [ WHERE %s ]\n"
+ " [ GROUP BY %s [, ...] ]\n"
+ " [ HAVING %s ]\n"
+ " [ WINDOW %s AS ( %s ) [, ...] ]\n"
+ " [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
+ " [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+ " [ LIMIT { %s | ALL } ]\n"
+ " [ OFFSET %s [ ROW | ROWS ] ]\n"
+ " [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } { ONLY | WITH TIES } ]\n"
+ " [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
+ " [ LATERAL ] ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
+ " %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] )\n"
+ " [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
+ " [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
+ " [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ( )\n"
+ " %s\n"
+ " ( %s [, ...] )\n"
+ " ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
+ " CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
+ " GROUPING SETS ( %s [, ...] )\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s [ ( %s [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( %s | %s | %s | %s | %s )\n"
+ "\n"
+ "TABLE [ ONLY ] %s [ * ]",
+ _("with_query"),
+ _("expression"),
+ _("expression"),
+ _("output_name"),
+ _("from_item"),
+ _("condition"),
+ _("grouping_element"),
+ _("condition"),
+ _("window_name"),
+ _("window_definition"),
+ _("select"),
+ _("expression"),
+ _("operator"),
+ _("count"),
+ _("start"),
+ _("count"),
+ _("table_name"),
+ _("where from_item can be one of:"),
+ _("table_name"),
+ _("alias"),
+ _("column_alias"),
+ _("sampling_method"),
+ _("argument"),
+ _("seed"),
+ _("select"),
+ _("alias"),
+ _("column_alias"),
+ _("with_query_name"),
+ _("alias"),
+ _("column_alias"),
+ _("function_name"),
+ _("argument"),
+ _("alias"),
+ _("column_alias"),
+ _("function_name"),
+ _("argument"),
+ _("alias"),
+ _("column_definition"),
+ _("function_name"),
+ _("argument"),
+ _("column_definition"),
+ _("function_name"),
+ _("argument"),
+ _("column_definition"),
+ _("alias"),
+ _("column_alias"),
+ _("from_item"),
+ _("join_type"),
+ _("from_item"),
+ _("join_condition"),
+ _("join_column"),
+ _("and grouping_element can be one of:"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("grouping_element"),
+ _("and with_query is:"),
+ _("with_query_name"),
+ _("column_name"),
+ _("select"),
+ _("values"),
+ _("insert"),
+ _("update"),
+ _("delete"),
+ _("table_name"));
+}
+
+static void
+sql_help_SELECT_INTO(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
+ "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
+ " * | %s [ [ AS ] %s ] [, ...]\n"
+ " INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] %s\n"
+ " [ FROM %s [, ...] ]\n"
+ " [ WHERE %s ]\n"
+ " [ GROUP BY %s [, ...] ]\n"
+ " [ HAVING %s ]\n"
+ " [ WINDOW %s AS ( %s ) [, ...] ]\n"
+ " [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
+ " [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+ " [ LIMIT { %s | ALL } ]\n"
+ " [ OFFSET %s [ ROW | ROWS ] ]\n"
+ " [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]\n"
+ " [ FOR { UPDATE | SHARE } [ OF %s [, ...] ] [ NOWAIT ] [...] ]",
+ _("with_query"),
+ _("expression"),
+ _("expression"),
+ _("output_name"),
+ _("new_table"),
+ _("from_item"),
+ _("condition"),
+ _("expression"),
+ _("condition"),
+ _("window_name"),
+ _("window_definition"),
+ _("select"),
+ _("expression"),
+ _("operator"),
+ _("count"),
+ _("start"),
+ _("count"),
+ _("table_name"));
+}
+
+static void
+sql_help_SET(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SET [ SESSION | LOCAL ] %s { TO | = } { %s | '%s' | DEFAULT }\n"
+ "SET [ SESSION | LOCAL ] TIME ZONE { %s | LOCAL | DEFAULT }",
+ _("configuration_parameter"),
+ _("value"),
+ _("value"),
+ _("timezone"));
+}
+
+static void
+sql_help_SET_CONSTRAINTS(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SET CONSTRAINTS { ALL | %s [, ...] } { DEFERRED | IMMEDIATE }",
+ _("name"));
+}
+
+static void
+sql_help_SET_ROLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SET [ SESSION | LOCAL ] ROLE %s\n"
+ "SET [ SESSION | LOCAL ] ROLE NONE\n"
+ "RESET ROLE",
+ _("role_name"));
+}
+
+static void
+sql_help_SET_SESSION_AUTHORIZATION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION %s\n"
+ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n"
+ "RESET SESSION AUTHORIZATION",
+ _("user_name"));
+}
+
+static void
+sql_help_SET_TRANSACTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SET TRANSACTION %s [, ...]\n"
+ "SET TRANSACTION SNAPSHOT %s\n"
+ "SET SESSION CHARACTERISTICS AS TRANSACTION %s [, ...]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+ " READ WRITE | READ ONLY\n"
+ " [ NOT ] DEFERRABLE",
+ _("transaction_mode"),
+ _("snapshot_id"),
+ _("transaction_mode"),
+ _("where transaction_mode is one of:"));
+}
+
+static void
+sql_help_SHOW(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "SHOW %s\n"
+ "SHOW ALL",
+ _("name"));
+}
+
+static void
+sql_help_START_TRANSACTION(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "START TRANSACTION [ %s [, ...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
+ " READ WRITE | READ ONLY\n"
+ " [ NOT ] DEFERRABLE",
+ _("transaction_mode"),
+ _("where transaction_mode is one of:"));
+}
+
+static void
+sql_help_TABLE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
+ "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
+ " [ * | %s [ [ AS ] %s ] [, ...] ]\n"
+ " [ FROM %s [, ...] ]\n"
+ " [ WHERE %s ]\n"
+ " [ GROUP BY %s [, ...] ]\n"
+ " [ HAVING %s ]\n"
+ " [ WINDOW %s AS ( %s ) [, ...] ]\n"
+ " [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
+ " [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+ " [ LIMIT { %s | ALL } ]\n"
+ " [ OFFSET %s [ ROW | ROWS ] ]\n"
+ " [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } { ONLY | WITH TIES } ]\n"
+ " [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
+ " [ LATERAL ] ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
+ " %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] )\n"
+ " [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
+ " [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
+ " [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ( )\n"
+ " %s\n"
+ " ( %s [, ...] )\n"
+ " ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
+ " CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
+ " GROUPING SETS ( %s [, ...] )\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s [ ( %s [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( %s | %s | %s | %s | %s )\n"
+ "\n"
+ "TABLE [ ONLY ] %s [ * ]",
+ _("with_query"),
+ _("expression"),
+ _("expression"),
+ _("output_name"),
+ _("from_item"),
+ _("condition"),
+ _("grouping_element"),
+ _("condition"),
+ _("window_name"),
+ _("window_definition"),
+ _("select"),
+ _("expression"),
+ _("operator"),
+ _("count"),
+ _("start"),
+ _("count"),
+ _("table_name"),
+ _("where from_item can be one of:"),
+ _("table_name"),
+ _("alias"),
+ _("column_alias"),
+ _("sampling_method"),
+ _("argument"),
+ _("seed"),
+ _("select"),
+ _("alias"),
+ _("column_alias"),
+ _("with_query_name"),
+ _("alias"),
+ _("column_alias"),
+ _("function_name"),
+ _("argument"),
+ _("alias"),
+ _("column_alias"),
+ _("function_name"),
+ _("argument"),
+ _("alias"),
+ _("column_definition"),
+ _("function_name"),
+ _("argument"),
+ _("column_definition"),
+ _("function_name"),
+ _("argument"),
+ _("column_definition"),
+ _("alias"),
+ _("column_alias"),
+ _("from_item"),
+ _("join_type"),
+ _("from_item"),
+ _("join_condition"),
+ _("join_column"),
+ _("and grouping_element can be one of:"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("grouping_element"),
+ _("and with_query is:"),
+ _("with_query_name"),
+ _("column_name"),
+ _("select"),
+ _("values"),
+ _("insert"),
+ _("update"),
+ _("delete"),
+ _("table_name"));
+}
+
+static void
+sql_help_TRUNCATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "TRUNCATE [ TABLE ] [ ONLY ] %s [ * ] [, ... ]\n"
+ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]",
+ _("name"));
+}
+
+static void
+sql_help_UNLISTEN(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "UNLISTEN { %s | * }",
+ _("channel"));
+}
+
+static void
+sql_help_UPDATE(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
+ "UPDATE [ ONLY ] %s [ * ] [ [ AS ] %s ]\n"
+ " SET { %s = { %s | DEFAULT } |\n"
+ " ( %s [, ...] ) = [ ROW ] ( { %s | DEFAULT } [, ...] ) |\n"
+ " ( %s [, ...] ) = ( %s )\n"
+ " } [, ...]\n"
+ " [ FROM %s [, ...] ]\n"
+ " [ WHERE %s | WHERE CURRENT OF %s ]\n"
+ " [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]",
+ _("with_query"),
+ _("table_name"),
+ _("alias"),
+ _("column_name"),
+ _("expression"),
+ _("column_name"),
+ _("expression"),
+ _("column_name"),
+ _("sub-SELECT"),
+ _("from_item"),
+ _("condition"),
+ _("cursor_name"),
+ _("output_expression"),
+ _("output_name"));
+}
+
+static void
+sql_help_VACUUM(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "VACUUM [ ( %s [, ...] ) ] [ %s [, ...] ]\n"
+ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ %s [, ...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " FULL [ %s ]\n"
+ " FREEZE [ %s ]\n"
+ " VERBOSE [ %s ]\n"
+ " ANALYZE [ %s ]\n"
+ " DISABLE_PAGE_SKIPPING [ %s ]\n"
+ " SKIP_LOCKED [ %s ]\n"
+ " INDEX_CLEANUP [ %s ]\n"
+ " TRUNCATE [ %s ]\n"
+ " PARALLEL %s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s [ ( %s [, ...] ) ]",
+ _("option"),
+ _("table_and_columns"),
+ _("table_and_columns"),
+ _("where option can be one of:"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("boolean"),
+ _("integer"),
+ _("and table_and_columns is:"),
+ _("table_name"),
+ _("column_name"));
+}
+
+static void
+sql_help_VALUES(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "VALUES ( %s [, ...] ) [, ...]\n"
+ " [ ORDER BY %s [ ASC | DESC | USING %s ] [, ...] ]\n"
+ " [ LIMIT { %s | ALL } ]\n"
+ " [ OFFSET %s [ ROW | ROWS ] ]\n"
+ " [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]",
+ _("expression"),
+ _("sort_expression"),
+ _("operator"),
+ _("count"),
+ _("start"),
+ _("count"));
+}
+
+static void
+sql_help_WITH(PQExpBuffer buf)
+{
+ appendPQExpBuffer(buf,
+ "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
+ "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
+ " [ * | %s [ [ AS ] %s ] [, ...] ]\n"
+ " [ FROM %s [, ...] ]\n"
+ " [ WHERE %s ]\n"
+ " [ GROUP BY %s [, ...] ]\n"
+ " [ HAVING %s ]\n"
+ " [ WINDOW %s AS ( %s ) [, ...] ]\n"
+ " [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
+ " [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
+ " [ LIMIT { %s | ALL } ]\n"
+ " [ OFFSET %s [ ROW | ROWS ] ]\n"
+ " [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } { ONLY | WITH TIES } ]\n"
+ " [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
+ " [ LATERAL ] ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
+ " %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] )\n"
+ " [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
+ " [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
+ " [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
+ " [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
+ " %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " ( )\n"
+ " %s\n"
+ " ( %s [, ...] )\n"
+ " ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
+ " CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
+ " GROUPING SETS ( %s [, ...] )\n"
+ "\n"
+ "%s\n"
+ "\n"
+ " %s [ ( %s [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( %s | %s | %s | %s | %s )\n"
+ "\n"
+ "TABLE [ ONLY ] %s [ * ]",
+ _("with_query"),
+ _("expression"),
+ _("expression"),
+ _("output_name"),
+ _("from_item"),
+ _("condition"),
+ _("grouping_element"),
+ _("condition"),
+ _("window_name"),
+ _("window_definition"),
+ _("select"),
+ _("expression"),
+ _("operator"),
+ _("count"),
+ _("start"),
+ _("count"),
+ _("table_name"),
+ _("where from_item can be one of:"),
+ _("table_name"),
+ _("alias"),
+ _("column_alias"),
+ _("sampling_method"),
+ _("argument"),
+ _("seed"),
+ _("select"),
+ _("alias"),
+ _("column_alias"),
+ _("with_query_name"),
+ _("alias"),
+ _("column_alias"),
+ _("function_name"),
+ _("argument"),
+ _("alias"),
+ _("column_alias"),
+ _("function_name"),
+ _("argument"),
+ _("alias"),
+ _("column_definition"),
+ _("function_name"),
+ _("argument"),
+ _("column_definition"),
+ _("function_name"),
+ _("argument"),
+ _("column_definition"),
+ _("alias"),
+ _("column_alias"),
+ _("from_item"),
+ _("join_type"),
+ _("from_item"),
+ _("join_condition"),
+ _("join_column"),
+ _("and grouping_element can be one of:"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("expression"),
+ _("grouping_element"),
+ _("and with_query is:"),
+ _("with_query_name"),
+ _("column_name"),
+ _("select"),
+ _("values"),
+ _("insert"),
+ _("update"),
+ _("delete"),
+ _("table_name"));
+}
+
+
+const struct _helpStruct QL_HELP[] = {
+ { "ABORT",
+ N_("abort the current transaction"),
+ "sql-abort",
+ sql_help_ABORT,
+ 0 },
+
+ { "ALTER AGGREGATE",
+ N_("change the definition of an aggregate function"),
+ "sql-alteraggregate",
+ sql_help_ALTER_AGGREGATE,
+ 9 },
+
+ { "ALTER COLLATION",
+ N_("change the definition of a collation"),
+ "sql-altercollation",
+ sql_help_ALTER_COLLATION,
+ 4 },
+
+ { "ALTER CONVERSION",
+ N_("change the definition of a conversion"),
+ "sql-alterconversion",
+ sql_help_ALTER_CONVERSION,
+ 2 },
+
+ { "ALTER DATABASE",
+ N_("change a database"),
+ "sql-alterdatabase",
+ sql_help_ALTER_DATABASE,
+ 17 },
+
+ { "ALTER DEFAULT PRIVILEGES",
+ N_("define default access privileges"),
+ "sql-alterdefaultprivileges",
+ sql_help_ALTER_DEFAULT_PRIVILEGES,
+ 59 },
+
+ { "ALTER DOMAIN",
+ N_("change the definition of a domain"),
+ "sql-alterdomain",
+ sql_help_ALTER_DOMAIN,
+ 17 },
+
+ { "ALTER EVENT TRIGGER",
+ N_("change the definition of an event trigger"),
+ "sql-altereventtrigger",
+ sql_help_ALTER_EVENT_TRIGGER,
+ 3 },
+
+ { "ALTER EXTENSION",
+ N_("change the definition of an extension"),
+ "sql-alterextension",
+ sql_help_ALTER_EXTENSION,
+ 40 },
+
+ { "ALTER FOREIGN DATA WRAPPER",
+ N_("change the definition of a foreign-data wrapper"),
+ "sql-alterforeigndatawrapper",
+ sql_help_ALTER_FOREIGN_DATA_WRAPPER,
+ 5 },
+
+ { "ALTER FOREIGN TABLE",
+ N_("change the definition of a foreign table"),
+ "sql-alterforeigntable",
+ sql_help_ALTER_FOREIGN_TABLE,
+ 33 },
+
+ { "ALTER FUNCTION",
+ N_("change the definition of a function"),
+ "sql-alterfunction",
+ sql_help_ALTER_FUNCTION,
+ 24 },
+
+ { "ALTER GROUP",
+ N_("change role name or membership"),
+ "sql-altergroup",
+ sql_help_ALTER_GROUP,
+ 9 },
+
+ { "ALTER INDEX",
+ N_("change the definition of an index"),
+ "sql-alterindex",
+ sql_help_ALTER_INDEX,
+ 9 },
+
+ { "ALTER LANGUAGE",
+ N_("change the definition of a procedural language"),
+ "sql-alterlanguage",
+ sql_help_ALTER_LANGUAGE,
+ 1 },
+
+ { "ALTER LARGE OBJECT",
+ N_("change the definition of a large object"),
+ "sql-alterlargeobject",
+ sql_help_ALTER_LARGE_OBJECT,
+ 0 },
+
+ { "ALTER MATERIALIZED VIEW",
+ N_("change the definition of a materialized view"),
+ "sql-altermaterializedview",
+ sql_help_ALTER_MATERIALIZED_VIEW,
+ 23 },
+
+ { "ALTER OPERATOR",
+ N_("change the definition of an operator"),
+ "sql-alteroperator",
+ sql_help_ALTER_OPERATOR,
+ 9 },
+
+ { "ALTER OPERATOR CLASS",
+ N_("change the definition of an operator class"),
+ "sql-alteropclass",
+ sql_help_ALTER_OPERATOR_CLASS,
+ 7 },
+
+ { "ALTER OPERATOR FAMILY",
+ N_("change the definition of an operator family"),
+ "sql-alteropfamily",
+ sql_help_ALTER_OPERATOR_FAMILY,
+ 19 },
+
+ { "ALTER POLICY",
+ N_("change the definition of a row level security policy"),
+ "sql-alterpolicy",
+ sql_help_ALTER_POLICY,
+ 5 },
+
+ { "ALTER PROCEDURE",
+ N_("change the definition of a procedure"),
+ "sql-alterprocedure",
+ sql_help_ALTER_PROCEDURE,
+ 17 },
+
+ { "ALTER PUBLICATION",
+ N_("change the definition of a publication"),
+ "sql-alterpublication",
+ sql_help_ALTER_PUBLICATION,
+ 5 },
+
+ { "ALTER ROLE",
+ N_("change a database role"),
+ "sql-alterrole",
+ sql_help_ALTER_ROLE,
+ 26 },
+
+ { "ALTER ROUTINE",
+ N_("change the definition of a routine"),
+ "sql-alterroutine",
+ sql_help_ALTER_ROUTINE,
+ 22 },
+
+ { "ALTER RULE",
+ N_("change the definition of a rule"),
+ "sql-alterrule",
+ sql_help_ALTER_RULE,
+ 0 },
+
+ { "ALTER SCHEMA",
+ N_("change the definition of a schema"),
+ "sql-alterschema",
+ sql_help_ALTER_SCHEMA,
+ 1 },
+
+ { "ALTER SEQUENCE",
+ N_("change the definition of a sequence generator"),
+ "sql-altersequence",
+ sql_help_ALTER_SEQUENCE,
+ 10 },
+
+ { "ALTER SERVER",
+ N_("change the definition of a foreign server"),
+ "sql-alterserver",
+ sql_help_ALTER_SERVER,
+ 3 },
+
+ { "ALTER STATISTICS",
+ N_("change the definition of an extended statistics object"),
+ "sql-alterstatistics",
+ sql_help_ALTER_STATISTICS,
+ 3 },
+
+ { "ALTER SUBSCRIPTION",
+ N_("change the definition of a subscription"),
+ "sql-altersubscription",
+ sql_help_ALTER_SUBSCRIPTION,
+ 7 },
+
+ { "ALTER SYSTEM",
+ N_("change a server configuration parameter"),
+ "sql-altersystem",
+ sql_help_ALTER_SYSTEM,
+ 3 },
+
+ { "ALTER TABLE",
+ N_("change the definition of a table"),
+ "sql-altertable",
+ sql_help_ALTER_TABLE,
+ 111 },
+
+ { "ALTER TABLESPACE",
+ N_("change the definition of a tablespace"),
+ "sql-altertablespace",
+ sql_help_ALTER_TABLESPACE,
+ 3 },
+
+ { "ALTER TEXT SEARCH CONFIGURATION",
+ N_("change the definition of a text search configuration"),
+ "sql-altertsconfig",
+ sql_help_ALTER_TEXT_SEARCH_CONFIGURATION,
+ 12 },
+
+ { "ALTER TEXT SEARCH DICTIONARY",
+ N_("change the definition of a text search dictionary"),
+ "sql-altertsdictionary",
+ sql_help_ALTER_TEXT_SEARCH_DICTIONARY,
+ 5 },
+
+ { "ALTER TEXT SEARCH PARSER",
+ N_("change the definition of a text search parser"),
+ "sql-altertsparser",
+ sql_help_ALTER_TEXT_SEARCH_PARSER,
+ 1 },
+
+ { "ALTER TEXT SEARCH TEMPLATE",
+ N_("change the definition of a text search template"),
+ "sql-altertstemplate",
+ sql_help_ALTER_TEXT_SEARCH_TEMPLATE,
+ 1 },
+
+ { "ALTER TRIGGER",
+ N_("change the definition of a trigger"),
+ "sql-altertrigger",
+ sql_help_ALTER_TRIGGER,
+ 1 },
+
+ { "ALTER TYPE",
+ N_("change the definition of a type"),
+ "sql-altertype",
+ sql_help_ALTER_TYPE,
+ 13 },
+
+ { "ALTER USER",
+ N_("change a database role"),
+ "sql-alteruser",
+ sql_help_ALTER_USER,
+ 26 },
+
+ { "ALTER USER MAPPING",
+ N_("change the definition of a user mapping"),
+ "sql-alterusermapping",
+ sql_help_ALTER_USER_MAPPING,
+ 2 },
+
+ { "ALTER VIEW",
+ N_("change the definition of a view"),
+ "sql-alterview",
+ sql_help_ALTER_VIEW,
+ 7 },
+
+ { "ANALYZE",
+ N_("collect statistics about a database"),
+ "sql-analyze",
+ sql_help_ANALYZE,
+ 10 },
+
+ { "BEGIN",
+ N_("start a transaction block"),
+ "sql-begin",
+ sql_help_BEGIN,
+ 6 },
+
+ { "CALL",
+ N_("invoke a procedure"),
+ "sql-call",
+ sql_help_CALL,
+ 0 },
+
+ { "CHECKPOINT",
+ N_("force a write-ahead log checkpoint"),
+ "sql-checkpoint",
+ sql_help_CHECKPOINT,
+ 0 },
+
+ { "CLOSE",
+ N_("close a cursor"),
+ "sql-close",
+ sql_help_CLOSE,
+ 0 },
+
+ { "CLUSTER",
+ N_("cluster a table according to an index"),
+ "sql-cluster",
+ sql_help_CLUSTER,
+ 1 },
+
+ { "COMMENT",
+ N_("define or change the comment of an object"),
+ "sql-comment",
+ sql_help_COMMENT,
+ 51 },
+
+ { "COMMIT",
+ N_("commit the current transaction"),
+ "sql-commit",
+ sql_help_COMMIT,
+ 0 },
+
+ { "COMMIT PREPARED",
+ N_("commit a transaction that was earlier prepared for two-phase commit"),
+ "sql-commit-prepared",
+ sql_help_COMMIT_PREPARED,
+ 0 },
+
+ { "COPY",
+ N_("copy data between a file and a table"),
+ "sql-copy",
+ sql_help_COPY,
+ 21 },
+
+ { "CREATE ACCESS METHOD",
+ N_("define a new access method"),
+ "sql-create-access-method",
+ sql_help_CREATE_ACCESS_METHOD,
+ 2 },
+
+ { "CREATE AGGREGATE",
+ N_("define a new aggregate function"),
+ "sql-createaggregate",
+ sql_help_CREATE_AGGREGATE,
+ 59 },
+
+ { "CREATE CAST",
+ N_("define a new cast"),
+ "sql-createcast",
+ sql_help_CREATE_CAST,
+ 10 },
+
+ { "CREATE COLLATION",
+ N_("define a new collation"),
+ "sql-createcollation",
+ sql_help_CREATE_COLLATION,
+ 8 },
+
+ { "CREATE CONVERSION",
+ N_("define a new encoding conversion"),
+ "sql-createconversion",
+ sql_help_CREATE_CONVERSION,
+ 1 },
+
+ { "CREATE DATABASE",
+ N_("create a new database"),
+ "sql-createdatabase",
+ sql_help_CREATE_DATABASE,
+ 10 },
+
+ { "CREATE DOMAIN",
+ N_("define a new domain"),
+ "sql-createdomain",
+ sql_help_CREATE_DOMAIN,
+ 8 },
+
+ { "CREATE EVENT TRIGGER",
+ N_("define a new event trigger"),
+ "sql-createeventtrigger",
+ sql_help_CREATE_EVENT_TRIGGER,
+ 3 },
+
+ { "CREATE EXTENSION",
+ N_("install an extension"),
+ "sql-createextension",
+ sql_help_CREATE_EXTENSION,
+ 3 },
+
+ { "CREATE FOREIGN DATA WRAPPER",
+ N_("define a new foreign-data wrapper"),
+ "sql-createforeigndatawrapper",
+ sql_help_CREATE_FOREIGN_DATA_WRAPPER,
+ 3 },
+
+ { "CREATE FOREIGN TABLE",
+ N_("define a new foreign table"),
+ "sql-createforeigntable",
+ sql_help_CREATE_FOREIGN_TABLE,
+ 30 },
+
+ { "CREATE FUNCTION",
+ N_("define a new function"),
+ "sql-createfunction",
+ sql_help_CREATE_FUNCTION,
+ 18 },
+
+ { "CREATE GROUP",
+ N_("define a new database role"),
+ "sql-creategroup",
+ sql_help_CREATE_GROUP,
+ 19 },
+
+ { "CREATE INDEX",
+ N_("define a new index"),
+ "sql-createindex",
+ sql_help_CREATE_INDEX,
+ 5 },
+
+ { "CREATE LANGUAGE",
+ N_("define a new procedural language"),
+ "sql-createlanguage",
+ sql_help_CREATE_LANGUAGE,
+ 2 },
+
+ { "CREATE MATERIALIZED VIEW",
+ N_("define a new materialized view"),
+ "sql-creatematerializedview",
+ sql_help_CREATE_MATERIALIZED_VIEW,
+ 6 },
+
+ { "CREATE OPERATOR",
+ N_("define a new operator"),
+ "sql-createoperator",
+ sql_help_CREATE_OPERATOR,
+ 6 },
+
+ { "CREATE OPERATOR CLASS",
+ N_("define a new operator class"),
+ "sql-createopclass",
+ sql_help_CREATE_OPERATOR_CLASS,
+ 5 },
+
+ { "CREATE OPERATOR FAMILY",
+ N_("define a new operator family"),
+ "sql-createopfamily",
+ sql_help_CREATE_OPERATOR_FAMILY,
+ 0 },
+
+ { "CREATE POLICY",
+ N_("define a new row level security policy for a table"),
+ "sql-createpolicy",
+ sql_help_CREATE_POLICY,
+ 5 },
+
+ { "CREATE PROCEDURE",
+ N_("define a new procedure"),
+ "sql-createprocedure",
+ sql_help_CREATE_PROCEDURE,
+ 8 },
+
+ { "CREATE PUBLICATION",
+ N_("define a new publication"),
+ "sql-createpublication",
+ sql_help_CREATE_PUBLICATION,
+ 3 },
+
+ { "CREATE ROLE",
+ N_("define a new database role"),
+ "sql-createrole",
+ sql_help_CREATE_ROLE,
+ 19 },
+
+ { "CREATE RULE",
+ N_("define a new rewrite rule"),
+ "sql-createrule",
+ sql_help_CREATE_RULE,
+ 6 },
+
+ { "CREATE SCHEMA",
+ N_("define a new schema"),
+ "sql-createschema",
+ sql_help_CREATE_SCHEMA,
+ 9 },
+
+ { "CREATE SEQUENCE",
+ N_("define a new sequence generator"),
+ "sql-createsequence",
+ sql_help_CREATE_SEQUENCE,
+ 5 },
+
+ { "CREATE SERVER",
+ N_("define a new foreign server"),
+ "sql-createserver",
+ sql_help_CREATE_SERVER,
+ 2 },
+
+ { "CREATE STATISTICS",
+ N_("define extended statistics"),
+ "sql-createstatistics",
+ sql_help_CREATE_STATISTICS,
+ 3 },
+
+ { "CREATE SUBSCRIPTION",
+ N_("define a new subscription"),
+ "sql-createsubscription",
+ sql_help_CREATE_SUBSCRIPTION,
+ 3 },
+
+ { "CREATE TABLE",
+ N_("define a new table"),
+ "sql-createtable",
+ sql_help_CREATE_TABLE,
+ 83 },
+
+ { "CREATE TABLE AS",
+ N_("define a new table from the results of a query"),
+ "sql-createtableas",
+ sql_help_CREATE_TABLE_AS,
+ 7 },
+
+ { "CREATE TABLESPACE",
+ N_("define a new tablespace"),
+ "sql-createtablespace",
+ sql_help_CREATE_TABLESPACE,
+ 3 },
+
+ { "CREATE TEXT SEARCH CONFIGURATION",
+ N_("define a new text search configuration"),
+ "sql-createtsconfig",
+ sql_help_CREATE_TEXT_SEARCH_CONFIGURATION,
+ 3 },
+
+ { "CREATE TEXT SEARCH DICTIONARY",
+ N_("define a new text search dictionary"),
+ "sql-createtsdictionary",
+ sql_help_CREATE_TEXT_SEARCH_DICTIONARY,
+ 3 },
+
+ { "CREATE TEXT SEARCH PARSER",
+ N_("define a new text search parser"),
+ "sql-createtsparser",
+ sql_help_CREATE_TEXT_SEARCH_PARSER,
+ 6 },
+
+ { "CREATE TEXT SEARCH TEMPLATE",
+ N_("define a new text search template"),
+ "sql-createtstemplate",
+ sql_help_CREATE_TEXT_SEARCH_TEMPLATE,
+ 3 },
+
+ { "CREATE TRANSFORM",
+ N_("define a new transform"),
+ "sql-createtransform",
+ sql_help_CREATE_TRANSFORM,
+ 3 },
+
+ { "CREATE TRIGGER",
+ N_("define a new trigger"),
+ "sql-createtrigger",
+ sql_help_CREATE_TRIGGER,
+ 14 },
+
+ { "CREATE TYPE",
+ N_("define a new data type"),
+ "sql-createtype",
+ sql_help_CREATE_TYPE,
+ 35 },
+
+ { "CREATE USER",
+ N_("define a new database role"),
+ "sql-createuser",
+ sql_help_CREATE_USER,
+ 19 },
+
+ { "CREATE USER MAPPING",
+ N_("define a new mapping of a user to a foreign server"),
+ "sql-createusermapping",
+ sql_help_CREATE_USER_MAPPING,
+ 2 },
+
+ { "CREATE VIEW",
+ N_("define a new view"),
+ "sql-createview",
+ sql_help_CREATE_VIEW,
+ 3 },
+
+ { "DEALLOCATE",
+ N_("deallocate a prepared statement"),
+ "sql-deallocate",
+ sql_help_DEALLOCATE,
+ 0 },
+
+ { "DECLARE",
+ N_("define a cursor"),
+ "sql-declare",
+ sql_help_DECLARE,
+ 1 },
+
+ { "DELETE",
+ N_("delete rows of a table"),
+ "sql-delete",
+ sql_help_DELETE,
+ 4 },
+
+ { "DISCARD",
+ N_("discard session state"),
+ "sql-discard",
+ sql_help_DISCARD,
+ 0 },
+
+ { "DO",
+ N_("execute an anonymous code block"),
+ "sql-do",
+ sql_help_DO,
+ 0 },
+
+ { "DROP ACCESS METHOD",
+ N_("remove an access method"),
+ "sql-drop-access-method",
+ sql_help_DROP_ACCESS_METHOD,
+ 0 },
+
+ { "DROP AGGREGATE",
+ N_("remove an aggregate function"),
+ "sql-dropaggregate",
+ sql_help_DROP_AGGREGATE,
+ 6 },
+
+ { "DROP CAST",
+ N_("remove a cast"),
+ "sql-dropcast",
+ sql_help_DROP_CAST,
+ 0 },
+
+ { "DROP COLLATION",
+ N_("remove a collation"),
+ "sql-dropcollation",
+ sql_help_DROP_COLLATION,
+ 0 },
+
+ { "DROP CONVERSION",
+ N_("remove a conversion"),
+ "sql-dropconversion",
+ sql_help_DROP_CONVERSION,
+ 0 },
+
+ { "DROP DATABASE",
+ N_("remove a database"),
+ "sql-dropdatabase",
+ sql_help_DROP_DATABASE,
+ 4 },
+
+ { "DROP DOMAIN",
+ N_("remove a domain"),
+ "sql-dropdomain",
+ sql_help_DROP_DOMAIN,
+ 0 },
+
+ { "DROP EVENT TRIGGER",
+ N_("remove an event trigger"),
+ "sql-dropeventtrigger",
+ sql_help_DROP_EVENT_TRIGGER,
+ 0 },
+
+ { "DROP EXTENSION",
+ N_("remove an extension"),
+ "sql-dropextension",
+ sql_help_DROP_EXTENSION,
+ 0 },
+
+ { "DROP FOREIGN DATA WRAPPER",
+ N_("remove a foreign-data wrapper"),
+ "sql-dropforeigndatawrapper",
+ sql_help_DROP_FOREIGN_DATA_WRAPPER,
+ 0 },
+
+ { "DROP FOREIGN TABLE",
+ N_("remove a foreign table"),
+ "sql-dropforeigntable",
+ sql_help_DROP_FOREIGN_TABLE,
+ 0 },
+
+ { "DROP FUNCTION",
+ N_("remove a function"),
+ "sql-dropfunction",
+ sql_help_DROP_FUNCTION,
+ 1 },
+
+ { "DROP GROUP",
+ N_("remove a database role"),
+ "sql-dropgroup",
+ sql_help_DROP_GROUP,
+ 0 },
+
+ { "DROP INDEX",
+ N_("remove an index"),
+ "sql-dropindex",
+ sql_help_DROP_INDEX,
+ 0 },
+
+ { "DROP LANGUAGE",
+ N_("remove a procedural language"),
+ "sql-droplanguage",
+ sql_help_DROP_LANGUAGE,
+ 0 },
+
+ { "DROP MATERIALIZED VIEW",
+ N_("remove a materialized view"),
+ "sql-dropmaterializedview",
+ sql_help_DROP_MATERIALIZED_VIEW,
+ 0 },
+
+ { "DROP OPERATOR",
+ N_("remove an operator"),
+ "sql-dropoperator",
+ sql_help_DROP_OPERATOR,
+ 0 },
+
+ { "DROP OPERATOR CLASS",
+ N_("remove an operator class"),
+ "sql-dropopclass",
+ sql_help_DROP_OPERATOR_CLASS,
+ 0 },
+
+ { "DROP OPERATOR FAMILY",
+ N_("remove an operator family"),
+ "sql-dropopfamily",
+ sql_help_DROP_OPERATOR_FAMILY,
+ 0 },
+
+ { "DROP OWNED",
+ N_("remove database objects owned by a database role"),
+ "sql-drop-owned",
+ sql_help_DROP_OWNED,
+ 0 },
+
+ { "DROP POLICY",
+ N_("remove a row level security policy from a table"),
+ "sql-droppolicy",
+ sql_help_DROP_POLICY,
+ 0 },
+
+ { "DROP PROCEDURE",
+ N_("remove a procedure"),
+ "sql-dropprocedure",
+ sql_help_DROP_PROCEDURE,
+ 1 },
+
+ { "DROP PUBLICATION",
+ N_("remove a publication"),
+ "sql-droppublication",
+ sql_help_DROP_PUBLICATION,
+ 0 },
+
+ { "DROP ROLE",
+ N_("remove a database role"),
+ "sql-droprole",
+ sql_help_DROP_ROLE,
+ 0 },
+
+ { "DROP ROUTINE",
+ N_("remove a routine"),
+ "sql-droproutine",
+ sql_help_DROP_ROUTINE,
+ 1 },
+
+ { "DROP RULE",
+ N_("remove a rewrite rule"),
+ "sql-droprule",
+ sql_help_DROP_RULE,
+ 0 },
+
+ { "DROP SCHEMA",
+ N_("remove a schema"),
+ "sql-dropschema",
+ sql_help_DROP_SCHEMA,
+ 0 },
+
+ { "DROP SEQUENCE",
+ N_("remove a sequence"),
+ "sql-dropsequence",
+ sql_help_DROP_SEQUENCE,
+ 0 },
+
+ { "DROP SERVER",
+ N_("remove a foreign server descriptor"),
+ "sql-dropserver",
+ sql_help_DROP_SERVER,
+ 0 },
+
+ { "DROP STATISTICS",
+ N_("remove extended statistics"),
+ "sql-dropstatistics",
+ sql_help_DROP_STATISTICS,
+ 0 },
+
+ { "DROP SUBSCRIPTION",
+ N_("remove a subscription"),
+ "sql-dropsubscription",
+ sql_help_DROP_SUBSCRIPTION,
+ 0 },
+
+ { "DROP TABLE",
+ N_("remove a table"),
+ "sql-droptable",
+ sql_help_DROP_TABLE,
+ 0 },
+
+ { "DROP TABLESPACE",
+ N_("remove a tablespace"),
+ "sql-droptablespace",
+ sql_help_DROP_TABLESPACE,
+ 0 },
+
+ { "DROP TEXT SEARCH CONFIGURATION",
+ N_("remove a text search configuration"),
+ "sql-droptsconfig",
+ sql_help_DROP_TEXT_SEARCH_CONFIGURATION,
+ 0 },
+
+ { "DROP TEXT SEARCH DICTIONARY",
+ N_("remove a text search dictionary"),
+ "sql-droptsdictionary",
+ sql_help_DROP_TEXT_SEARCH_DICTIONARY,
+ 0 },
+
+ { "DROP TEXT SEARCH PARSER",
+ N_("remove a text search parser"),
+ "sql-droptsparser",
+ sql_help_DROP_TEXT_SEARCH_PARSER,
+ 0 },
+
+ { "DROP TEXT SEARCH TEMPLATE",
+ N_("remove a text search template"),
+ "sql-droptstemplate",
+ sql_help_DROP_TEXT_SEARCH_TEMPLATE,
+ 0 },
+
+ { "DROP TRANSFORM",
+ N_("remove a transform"),
+ "sql-droptransform",
+ sql_help_DROP_TRANSFORM,
+ 0 },
+
+ { "DROP TRIGGER",
+ N_("remove a trigger"),
+ "sql-droptrigger",
+ sql_help_DROP_TRIGGER,
+ 0 },
+
+ { "DROP TYPE",
+ N_("remove a data type"),
+ "sql-droptype",
+ sql_help_DROP_TYPE,
+ 0 },
+
+ { "DROP USER",
+ N_("remove a database role"),
+ "sql-dropuser",
+ sql_help_DROP_USER,
+ 0 },
+
+ { "DROP USER MAPPING",
+ N_("remove a user mapping for a foreign server"),
+ "sql-dropusermapping",
+ sql_help_DROP_USER_MAPPING,
+ 0 },
+
+ { "DROP VIEW",
+ N_("remove a view"),
+ "sql-dropview",
+ sql_help_DROP_VIEW,
+ 0 },
+
+ { "END",
+ N_("commit the current transaction"),
+ "sql-end",
+ sql_help_END,
+ 0 },
+
+ { "EXECUTE",
+ N_("execute a prepared statement"),
+ "sql-execute",
+ sql_help_EXECUTE,
+ 0 },
+
+ { "EXPLAIN",
+ N_("show the execution plan of a statement"),
+ "sql-explain",
+ sql_help_EXPLAIN,
+ 13 },
+
+ { "FETCH",
+ N_("retrieve rows from a query using a cursor"),
+ "sql-fetch",
+ sql_help_FETCH,
+ 17 },
+
+ { "GRANT",
+ N_("define access privileges"),
+ "sql-grant",
+ sql_help_GRANT,
+ 67 },
+
+ { "IMPORT FOREIGN SCHEMA",
+ N_("import table definitions from a foreign server"),
+ "sql-importforeignschema",
+ sql_help_IMPORT_FOREIGN_SCHEMA,
+ 4 },
+
+ { "INSERT",
+ N_("create new rows in a table"),
+ "sql-insert",
+ sql_help_INSERT,
+ 19 },
+
+ { "LISTEN",
+ N_("listen for a notification"),
+ "sql-listen",
+ sql_help_LISTEN,
+ 0 },
+
+ { "LOAD",
+ N_("load a shared library file"),
+ "sql-load",
+ sql_help_LOAD,
+ 0 },
+
+ { "LOCK",
+ N_("lock a table"),
+ "sql-lock",
+ sql_help_LOCK,
+ 5 },
+
+ { "MOVE",
+ N_("position a cursor"),
+ "sql-move",
+ sql_help_MOVE,
+ 17 },
+
+ { "NOTIFY",
+ N_("generate a notification"),
+ "sql-notify",
+ sql_help_NOTIFY,
+ 0 },
+
+ { "PREPARE",
+ N_("prepare a statement for execution"),
+ "sql-prepare",
+ sql_help_PREPARE,
+ 0 },
+
+ { "PREPARE TRANSACTION",
+ N_("prepare the current transaction for two-phase commit"),
+ "sql-prepare-transaction",
+ sql_help_PREPARE_TRANSACTION,
+ 0 },
+
+ { "REASSIGN OWNED",
+ N_("change the ownership of database objects owned by a database role"),
+ "sql-reassign-owned",
+ sql_help_REASSIGN_OWNED,
+ 1 },
+
+ { "REFRESH MATERIALIZED VIEW",
+ N_("replace the contents of a materialized view"),
+ "sql-refreshmaterializedview",
+ sql_help_REFRESH_MATERIALIZED_VIEW,
+ 1 },
+
+ { "REINDEX",
+ N_("rebuild indexes"),
+ "sql-reindex",
+ sql_help_REINDEX,
+ 4 },
+
+ { "RELEASE SAVEPOINT",
+ N_("destroy a previously defined savepoint"),
+ "sql-release-savepoint",
+ sql_help_RELEASE_SAVEPOINT,
+ 0 },
+
+ { "RESET",
+ N_("restore the value of a run-time parameter to the default value"),
+ "sql-reset",
+ sql_help_RESET,
+ 1 },
+
+ { "REVOKE",
+ N_("remove access privileges"),
+ "sql-revoke",
+ sql_help_REVOKE,
+ 94 },
+
+ { "ROLLBACK",
+ N_("abort the current transaction"),
+ "sql-rollback",
+ sql_help_ROLLBACK,
+ 0 },
+
+ { "ROLLBACK PREPARED",
+ N_("cancel a transaction that was earlier prepared for two-phase commit"),
+ "sql-rollback-prepared",
+ sql_help_ROLLBACK_PREPARED,
+ 0 },
+
+ { "ROLLBACK TO SAVEPOINT",
+ N_("roll back to a savepoint"),
+ "sql-rollback-to",
+ sql_help_ROLLBACK_TO_SAVEPOINT,
+ 0 },
+
+ { "SAVEPOINT",
+ N_("define a new savepoint within the current transaction"),
+ "sql-savepoint",
+ sql_help_SAVEPOINT,
+ 0 },
+
+ { "SECURITY LABEL",
+ N_("define or change a security label applied to an object"),
+ "sql-security-label",
+ sql_help_SECURITY_LABEL,
+ 29 },
+
+ { "SELECT",
+ N_("retrieve rows from a table or view"),
+ "sql-select",
+ sql_help_SELECT,
+ 42 },
+
+ { "SELECT INTO",
+ N_("define a new table from the results of a query"),
+ "sql-selectinto",
+ sql_help_SELECT_INTO,
+ 14 },
+
+ { "SET",
+ N_("change a run-time parameter"),
+ "sql-set",
+ sql_help_SET,
+ 1 },
+
+ { "SET CONSTRAINTS",
+ N_("set constraint check timing for the current transaction"),
+ "sql-set-constraints",
+ sql_help_SET_CONSTRAINTS,
+ 0 },
+
+ { "SET ROLE",
+ N_("set the current user identifier of the current session"),
+ "sql-set-role",
+ sql_help_SET_ROLE,
+ 2 },
+
+ { "SET SESSION AUTHORIZATION",
+ N_("set the session user identifier and the current user identifier of the current session"),
+ "sql-set-session-authorization",
+ sql_help_SET_SESSION_AUTHORIZATION,
+ 2 },
+
+ { "SET TRANSACTION",
+ N_("set the characteristics of the current transaction"),
+ "sql-set-transaction",
+ sql_help_SET_TRANSACTION,
+ 8 },
+
+ { "SHOW",
+ N_("show the value of a run-time parameter"),
+ "sql-show",
+ sql_help_SHOW,
+ 1 },
+
+ { "START TRANSACTION",
+ N_("start a transaction block"),
+ "sql-start-transaction",
+ sql_help_START_TRANSACTION,
+ 6 },
+
+ { "TABLE",
+ N_("retrieve rows from a table or view"),
+ "sql-select",
+ sql_help_TABLE,
+ 42 },
+
+ { "TRUNCATE",
+ N_("empty a table or set of tables"),
+ "sql-truncate",
+ sql_help_TRUNCATE,
+ 1 },
+
+ { "UNLISTEN",
+ N_("stop listening for a notification"),
+ "sql-unlisten",
+ sql_help_UNLISTEN,
+ 0 },
+
+ { "UPDATE",
+ N_("update rows of a table"),
+ "sql-update",
+ sql_help_UPDATE,
+ 8 },
+
+ { "VACUUM",
+ N_("garbage-collect and optionally analyze a database"),
+ "sql-vacuum",
+ sql_help_VACUUM,
+ 17 },
+
+ { "VALUES",
+ N_("compute a set of rows"),
+ "sql-values",
+ sql_help_VALUES,
+ 4 },
+
+ { "WITH",
+ N_("retrieve rows from a table or view"),
+ "sql-select",
+ sql_help_WITH,
+ 42 },
+
+
+ { NULL, NULL, NULL } /* End of list marker */
+};
diff --git a/src/bin/psql/sql_help.h b/src/bin/psql/sql_help.h
new file mode 100644
index 0000000..159b672
--- /dev/null
+++ b/src/bin/psql/sql_help.h
@@ -0,0 +1,29 @@
+/*
+ * *** Do not change this file by hand. It is automatically
+ * *** generated from the DocBook documentation.
+ *
+ * generated by src/bin/psql/create_help.pl
+ *
+ */
+
+#ifndef SQL_HELP_H
+#define SQL_HELP_H
+
+#include "pqexpbuffer.h"
+
+struct _helpStruct
+{
+ const char *cmd; /* the command name */
+ const char *help; /* the help associated with it */
+ const char *docbook_id; /* DocBook XML id (for generating URL) */
+ void (*syntaxfunc)(PQExpBuffer); /* function that prints the syntax associated with it */
+ int nl_count; /* number of newlines in syntax (for pager) */
+};
+
+extern const struct _helpStruct QL_HELP[];
+
+#define QL_HELP_COUNT 184 /* number of help items */
+#define QL_MAX_CMD_LEN 32 /* largest strlen(cmd) */
+
+
+#endif /* SQL_HELP_H */
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
new file mode 100644
index 0000000..392b96e
--- /dev/null
+++ b/src/bin/psql/startup.c
@@ -0,0 +1,1231 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/startup.c
+ */
+#include "postgres_fe.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#else /* WIN32 */
+#include <io.h>
+#include <win32.h>
+#endif /* WIN32 */
+
+#include "command.h"
+#include "common.h"
+#include "common/logging.h"
+#include "describe.h"
+#include "fe_utils/print.h"
+#include "getopt_long.h"
+#include "help.h"
+#include "input.h"
+#include "mainloop.h"
+#include "settings.h"
+
+/*
+ * Global psql options
+ */
+PsqlSettings pset;
+
+#ifndef WIN32
+#define SYSPSQLRC "psqlrc"
+#define PSQLRC ".psqlrc"
+#else
+#define SYSPSQLRC "psqlrc"
+#define PSQLRC "psqlrc.conf"
+#endif
+
+/*
+ * Structures to pass information between the option parsing routine
+ * and the main function
+ */
+enum _actions
+{
+ ACT_SINGLE_QUERY,
+ ACT_SINGLE_SLASH,
+ ACT_FILE
+};
+
+typedef struct SimpleActionListCell
+{
+ struct SimpleActionListCell *next;
+ enum _actions action;
+ char *val;
+} SimpleActionListCell;
+
+typedef struct SimpleActionList
+{
+ SimpleActionListCell *head;
+ SimpleActionListCell *tail;
+} SimpleActionList;
+
+struct adhoc_opts
+{
+ char *dbname;
+ char *host;
+ char *port;
+ char *username;
+ char *logfilename;
+ bool no_readline;
+ bool no_psqlrc;
+ bool single_txn;
+ bool list_dbs;
+ SimpleActionList actions;
+};
+
+static void parse_psql_options(int argc, char *argv[],
+ struct adhoc_opts *options);
+static void simple_action_list_append(SimpleActionList *list,
+ enum _actions action, const char *val);
+static void process_psqlrc(char *argv0);
+static void process_psqlrc_file(char *filename);
+static void showVersion(void);
+static void EstablishVariableSpace(void);
+
+#define NOPAGER 0
+
+static void
+log_pre_callback(void)
+{
+ if (pset.queryFout && pset.queryFout != stdout)
+ fflush(pset.queryFout);
+}
+
+static void
+log_locus_callback(const char **filename, uint64 *lineno)
+{
+ if (pset.inputfile)
+ {
+ *filename = pset.inputfile;
+ *lineno = pset.lineno;
+ }
+ else
+ {
+ *filename = NULL;
+ *lineno = 0;
+ }
+}
+
+/*
+ *
+ * main
+ *
+ */
+int
+main(int argc, char *argv[])
+{
+ struct adhoc_opts options;
+ int successResult;
+ bool have_password = false;
+ char password[100];
+ bool new_pass;
+
+ pg_logging_init(argv[0]);
+ pg_logging_set_pre_callback(log_pre_callback);
+ pg_logging_set_locus_callback(log_locus_callback);
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("psql"));
+
+ if (argc > 1)
+ {
+ if ((strcmp(argv[1], "-?") == 0) || (argc == 2 && (strcmp(argv[1], "--help") == 0)))
+ {
+ usage(NOPAGER);
+ exit(EXIT_SUCCESS);
+ }
+ if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
+ {
+ showVersion();
+ exit(EXIT_SUCCESS);
+ }
+ }
+
+ pset.progname = get_progname(argv[0]);
+
+ pset.db = NULL;
+ setDecimalLocale();
+ pset.encoding = PQenv2encoding();
+ pset.queryFout = stdout;
+ pset.queryFoutPipe = false;
+ pset.copyStream = NULL;
+ pset.last_error_result = NULL;
+ pset.cur_cmd_source = stdin;
+ pset.cur_cmd_interactive = false;
+
+ /* We rely on unmentioned fields of pset.popt to start out 0/false/NULL */
+ pset.popt.topt.format = PRINT_ALIGNED;
+ pset.popt.topt.border = 1;
+ pset.popt.topt.pager = 1;
+ pset.popt.topt.pager_min_lines = 0;
+ pset.popt.topt.start_table = true;
+ pset.popt.topt.stop_table = true;
+ pset.popt.topt.default_footer = true;
+
+ pset.popt.topt.csvFieldSep[0] = DEFAULT_CSV_FIELD_SEP;
+ pset.popt.topt.csvFieldSep[1] = '\0';
+
+ pset.popt.topt.unicode_border_linestyle = UNICODE_LINESTYLE_SINGLE;
+ pset.popt.topt.unicode_column_linestyle = UNICODE_LINESTYLE_SINGLE;
+ pset.popt.topt.unicode_header_linestyle = UNICODE_LINESTYLE_SINGLE;
+
+ refresh_utf8format(&(pset.popt.topt));
+
+ /* We must get COLUMNS here before readline() sets it */
+ pset.popt.topt.env_columns = getenv("COLUMNS") ? atoi(getenv("COLUMNS")) : 0;
+
+ pset.notty = (!isatty(fileno(stdin)) || !isatty(fileno(stdout)));
+
+ pset.getPassword = TRI_DEFAULT;
+
+ EstablishVariableSpace();
+
+ /* Create variables showing psql version number */
+ SetVariable(pset.vars, "VERSION", PG_VERSION_STR);
+ SetVariable(pset.vars, "VERSION_NAME", PG_VERSION);
+ SetVariable(pset.vars, "VERSION_NUM", CppAsString2(PG_VERSION_NUM));
+
+ /* Initialize variables for last error */
+ SetVariable(pset.vars, "LAST_ERROR_MESSAGE", "");
+ SetVariable(pset.vars, "LAST_ERROR_SQLSTATE", "00000");
+
+ /* Default values for variables (that don't match the result of \unset) */
+ SetVariableBool(pset.vars, "AUTOCOMMIT");
+ SetVariable(pset.vars, "PROMPT1", DEFAULT_PROMPT1);
+ SetVariable(pset.vars, "PROMPT2", DEFAULT_PROMPT2);
+ SetVariable(pset.vars, "PROMPT3", DEFAULT_PROMPT3);
+
+ parse_psql_options(argc, argv, &options);
+
+ /*
+ * If no action was specified and we're in non-interactive mode, treat it
+ * as if the user had specified "-f -". This lets single-transaction mode
+ * work in this case.
+ */
+ if (options.actions.head == NULL && pset.notty)
+ simple_action_list_append(&options.actions, ACT_FILE, NULL);
+
+ /* Bail out if -1 was specified but will be ignored. */
+ if (options.single_txn && options.actions.head == NULL)
+ {
+ pg_log_fatal("-1 can only be used in non-interactive mode");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!pset.popt.topt.fieldSep.separator &&
+ !pset.popt.topt.fieldSep.separator_zero)
+ {
+ pset.popt.topt.fieldSep.separator = pg_strdup(DEFAULT_FIELD_SEP);
+ pset.popt.topt.fieldSep.separator_zero = false;
+ }
+ if (!pset.popt.topt.recordSep.separator &&
+ !pset.popt.topt.recordSep.separator_zero)
+ {
+ pset.popt.topt.recordSep.separator = pg_strdup(DEFAULT_RECORD_SEP);
+ pset.popt.topt.recordSep.separator_zero = false;
+ }
+
+ if (pset.getPassword == TRI_YES)
+ {
+ /*
+ * We can't be sure yet of the username that will be used, so don't
+ * offer a potentially wrong one. Typical uses of this option are
+ * noninteractive anyway.
+ */
+ simple_prompt("Password: ", password, sizeof(password), false);
+ have_password = true;
+ }
+
+ /* loop until we have a password if requested by backend */
+ do
+ {
+#define PARAMS_ARRAY_SIZE 8
+ const char **keywords = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*keywords));
+ const char **values = pg_malloc(PARAMS_ARRAY_SIZE * sizeof(*values));
+
+ keywords[0] = "host";
+ values[0] = options.host;
+ keywords[1] = "port";
+ values[1] = options.port;
+ keywords[2] = "user";
+ values[2] = options.username;
+ keywords[3] = "password";
+ values[3] = have_password ? password : NULL;
+ keywords[4] = "dbname"; /* see do_connect() */
+ values[4] = (options.list_dbs && options.dbname == NULL) ?
+ "postgres" : options.dbname;
+ keywords[5] = "fallback_application_name";
+ values[5] = pset.progname;
+ keywords[6] = "client_encoding";
+ values[6] = (pset.notty || getenv("PGCLIENTENCODING")) ? NULL : "auto";
+ keywords[7] = NULL;
+ values[7] = NULL;
+
+ new_pass = false;
+ pset.db = PQconnectdbParams(keywords, values, true);
+ free(keywords);
+ free(values);
+
+ if (PQstatus(pset.db) == CONNECTION_BAD &&
+ PQconnectionNeedsPassword(pset.db) &&
+ !have_password &&
+ pset.getPassword != TRI_NO)
+ {
+ /*
+ * Before closing the old PGconn, extract the user name that was
+ * actually connected with --- it might've come out of a URI or
+ * connstring "database name" rather than options.username.
+ */
+ const char *realusername = PQuser(pset.db);
+ char *password_prompt;
+
+ if (realusername && realusername[0])
+ password_prompt = psprintf(_("Password for user %s: "),
+ realusername);
+ else
+ password_prompt = pg_strdup(_("Password: "));
+ PQfinish(pset.db);
+
+ simple_prompt(password_prompt, password, sizeof(password), false);
+ free(password_prompt);
+ have_password = true;
+ new_pass = true;
+ }
+ } while (new_pass);
+
+ if (PQstatus(pset.db) == CONNECTION_BAD)
+ {
+ pg_log_error("%s", PQerrorMessage(pset.db));
+ PQfinish(pset.db);
+ exit(EXIT_BADCONN);
+ }
+
+ psql_setup_cancel_handler();
+
+ PQsetNoticeProcessor(pset.db, NoticeProcessor, NULL);
+
+ SyncVariables();
+
+ if (options.list_dbs)
+ {
+ int success;
+
+ if (!options.no_psqlrc)
+ process_psqlrc(argv[0]);
+
+ success = listAllDbs(NULL, false);
+ PQfinish(pset.db);
+ exit(success ? EXIT_SUCCESS : EXIT_FAILURE);
+ }
+
+ if (options.logfilename)
+ {
+ pset.logfile = fopen(options.logfilename, "a");
+ if (!pset.logfile)
+ {
+ pg_log_fatal("could not open log file \"%s\": %m",
+ options.logfilename);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ if (!options.no_psqlrc)
+ process_psqlrc(argv[0]);
+
+ /*
+ * If any actions were given by user, process them in the order in which
+ * they were specified. Note single_txn is only effective in this mode.
+ */
+ if (options.actions.head != NULL)
+ {
+ PGresult *res;
+ SimpleActionListCell *cell;
+
+ successResult = EXIT_SUCCESS; /* silence compiler */
+
+ if (options.single_txn)
+ {
+ if ((res = PSQLexec("BEGIN")) == NULL)
+ {
+ if (pset.on_error_stop)
+ {
+ successResult = EXIT_USER;
+ goto error;
+ }
+ }
+ else
+ PQclear(res);
+ }
+
+ for (cell = options.actions.head; cell; cell = cell->next)
+ {
+ if (cell->action == ACT_SINGLE_QUERY)
+ {
+ pg_logging_config(PG_LOG_FLAG_TERSE);
+
+ if (pset.echo == PSQL_ECHO_ALL)
+ puts(cell->val);
+
+ successResult = SendQuery(cell->val)
+ ? EXIT_SUCCESS : EXIT_FAILURE;
+ }
+ else if (cell->action == ACT_SINGLE_SLASH)
+ {
+ PsqlScanState scan_state;
+ ConditionalStack cond_stack;
+
+ pg_logging_config(PG_LOG_FLAG_TERSE);
+
+ if (pset.echo == PSQL_ECHO_ALL)
+ puts(cell->val);
+
+ scan_state = psql_scan_create(&psqlscan_callbacks);
+ psql_scan_setup(scan_state,
+ cell->val, strlen(cell->val),
+ pset.encoding, standard_strings());
+ cond_stack = conditional_stack_create();
+ psql_scan_set_passthrough(scan_state, (void *) cond_stack);
+
+ successResult = HandleSlashCmds(scan_state,
+ cond_stack,
+ NULL,
+ NULL) != PSQL_CMD_ERROR
+ ? EXIT_SUCCESS : EXIT_FAILURE;
+
+ psql_scan_destroy(scan_state);
+ conditional_stack_destroy(cond_stack);
+ }
+ else if (cell->action == ACT_FILE)
+ {
+ successResult = process_file(cell->val, false);
+ }
+ else
+ {
+ /* should never come here */
+ Assert(false);
+ }
+
+ if (successResult != EXIT_SUCCESS && pset.on_error_stop)
+ break;
+ }
+
+ if (options.single_txn)
+ {
+ if ((res = PSQLexec("COMMIT")) == NULL)
+ {
+ if (pset.on_error_stop)
+ {
+ successResult = EXIT_USER;
+ goto error;
+ }
+ }
+ else
+ PQclear(res);
+ }
+
+error:
+ ;
+ }
+
+ /*
+ * or otherwise enter interactive main loop
+ */
+ else
+ {
+ pg_logging_config(PG_LOG_FLAG_TERSE);
+ connection_warnings(true);
+ if (!pset.quiet)
+ printf(_("Type \"help\" for help.\n\n"));
+ initializeInput(options.no_readline ? 0 : 1);
+ successResult = MainLoop(stdin);
+ }
+
+ /* clean up */
+ if (pset.logfile)
+ fclose(pset.logfile);
+ PQfinish(pset.db);
+ setQFout(NULL);
+
+ return successResult;
+}
+
+
+/*
+ * Parse command line options
+ */
+
+static void
+parse_psql_options(int argc, char *argv[], struct adhoc_opts *options)
+{
+ static struct option long_options[] =
+ {
+ {"echo-all", no_argument, NULL, 'a'},
+ {"no-align", no_argument, NULL, 'A'},
+ {"command", required_argument, NULL, 'c'},
+ {"dbname", required_argument, NULL, 'd'},
+ {"echo-queries", no_argument, NULL, 'e'},
+ {"echo-errors", no_argument, NULL, 'b'},
+ {"echo-hidden", no_argument, NULL, 'E'},
+ {"file", required_argument, NULL, 'f'},
+ {"field-separator", required_argument, NULL, 'F'},
+ {"field-separator-zero", no_argument, NULL, 'z'},
+ {"host", required_argument, NULL, 'h'},
+ {"html", no_argument, NULL, 'H'},
+ {"list", no_argument, NULL, 'l'},
+ {"log-file", required_argument, NULL, 'L'},
+ {"no-readline", no_argument, NULL, 'n'},
+ {"single-transaction", no_argument, NULL, '1'},
+ {"output", required_argument, NULL, 'o'},
+ {"port", required_argument, NULL, 'p'},
+ {"pset", required_argument, NULL, 'P'},
+ {"quiet", no_argument, NULL, 'q'},
+ {"record-separator", required_argument, NULL, 'R'},
+ {"record-separator-zero", no_argument, NULL, '0'},
+ {"single-step", no_argument, NULL, 's'},
+ {"single-line", no_argument, NULL, 'S'},
+ {"tuples-only", no_argument, NULL, 't'},
+ {"table-attr", required_argument, NULL, 'T'},
+ {"username", required_argument, NULL, 'U'},
+ {"set", required_argument, NULL, 'v'},
+ {"variable", required_argument, NULL, 'v'},
+ {"version", no_argument, NULL, 'V'},
+ {"no-password", no_argument, NULL, 'w'},
+ {"password", no_argument, NULL, 'W'},
+ {"expanded", no_argument, NULL, 'x'},
+ {"no-psqlrc", no_argument, NULL, 'X'},
+ {"help", optional_argument, NULL, 1},
+ {"csv", no_argument, NULL, 2},
+ {NULL, 0, NULL, 0}
+ };
+
+ int optindex;
+ int c;
+
+ memset(options, 0, sizeof *options);
+
+ while ((c = getopt_long(argc, argv, "aAbc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VwWxXz?01",
+ long_options, &optindex)) != -1)
+ {
+ switch (c)
+ {
+ case 'a':
+ SetVariable(pset.vars, "ECHO", "all");
+ break;
+ case 'A':
+ pset.popt.topt.format = PRINT_UNALIGNED;
+ break;
+ case 'b':
+ SetVariable(pset.vars, "ECHO", "errors");
+ break;
+ case 'c':
+ if (optarg[0] == '\\')
+ simple_action_list_append(&options->actions,
+ ACT_SINGLE_SLASH,
+ optarg + 1);
+ else
+ simple_action_list_append(&options->actions,
+ ACT_SINGLE_QUERY,
+ optarg);
+ break;
+ case 'd':
+ options->dbname = pg_strdup(optarg);
+ break;
+ case 'e':
+ SetVariable(pset.vars, "ECHO", "queries");
+ break;
+ case 'E':
+ SetVariableBool(pset.vars, "ECHO_HIDDEN");
+ break;
+ case 'f':
+ simple_action_list_append(&options->actions,
+ ACT_FILE,
+ optarg);
+ break;
+ case 'F':
+ pset.popt.topt.fieldSep.separator = pg_strdup(optarg);
+ pset.popt.topt.fieldSep.separator_zero = false;
+ break;
+ case 'h':
+ options->host = pg_strdup(optarg);
+ break;
+ case 'H':
+ pset.popt.topt.format = PRINT_HTML;
+ break;
+ case 'l':
+ options->list_dbs = true;
+ break;
+ case 'L':
+ options->logfilename = pg_strdup(optarg);
+ break;
+ case 'n':
+ options->no_readline = true;
+ break;
+ case 'o':
+ if (!setQFout(optarg))
+ exit(EXIT_FAILURE);
+ break;
+ case 'p':
+ options->port = pg_strdup(optarg);
+ break;
+ case 'P':
+ {
+ char *value;
+ char *equal_loc;
+ bool result;
+
+ value = pg_strdup(optarg);
+ equal_loc = strchr(value, '=');
+ if (!equal_loc)
+ result = do_pset(value, NULL, &pset.popt, true);
+ else
+ {
+ *equal_loc = '\0';
+ result = do_pset(value, equal_loc + 1, &pset.popt, true);
+ }
+
+ if (!result)
+ {
+ pg_log_fatal("could not set printing parameter \"%s\"", value);
+ exit(EXIT_FAILURE);
+ }
+
+ free(value);
+ break;
+ }
+ case 'q':
+ SetVariableBool(pset.vars, "QUIET");
+ break;
+ case 'R':
+ pset.popt.topt.recordSep.separator = pg_strdup(optarg);
+ pset.popt.topt.recordSep.separator_zero = false;
+ break;
+ case 's':
+ SetVariableBool(pset.vars, "SINGLESTEP");
+ break;
+ case 'S':
+ SetVariableBool(pset.vars, "SINGLELINE");
+ break;
+ case 't':
+ pset.popt.topt.tuples_only = true;
+ break;
+ case 'T':
+ pset.popt.topt.tableAttr = pg_strdup(optarg);
+ break;
+ case 'U':
+ options->username = pg_strdup(optarg);
+ break;
+ case 'v':
+ {
+ char *value;
+ char *equal_loc;
+
+ value = pg_strdup(optarg);
+ equal_loc = strchr(value, '=');
+ if (!equal_loc)
+ {
+ if (!DeleteVariable(pset.vars, value))
+ exit(EXIT_FAILURE); /* error already printed */
+ }
+ else
+ {
+ *equal_loc = '\0';
+ if (!SetVariable(pset.vars, value, equal_loc + 1))
+ exit(EXIT_FAILURE); /* error already printed */
+ }
+
+ free(value);
+ break;
+ }
+ case 'V':
+ showVersion();
+ exit(EXIT_SUCCESS);
+ case 'w':
+ pset.getPassword = TRI_NO;
+ break;
+ case 'W':
+ pset.getPassword = TRI_YES;
+ break;
+ case 'x':
+ pset.popt.topt.expanded = true;
+ break;
+ case 'X':
+ options->no_psqlrc = true;
+ break;
+ case 'z':
+ pset.popt.topt.fieldSep.separator_zero = true;
+ break;
+ case '0':
+ pset.popt.topt.recordSep.separator_zero = true;
+ break;
+ case '1':
+ options->single_txn = true;
+ break;
+ case '?':
+ if (optind <= argc &&
+ strcmp(argv[optind - 1], "-?") == 0)
+ {
+ /* actual help option given */
+ usage(NOPAGER);
+ exit(EXIT_SUCCESS);
+ }
+ else
+ {
+ /* getopt error (unknown option or missing argument) */
+ goto unknown_option;
+ }
+ break;
+ case 1:
+ {
+ if (!optarg || strcmp(optarg, "options") == 0)
+ usage(NOPAGER);
+ else if (optarg && strcmp(optarg, "commands") == 0)
+ slashUsage(NOPAGER);
+ else if (optarg && strcmp(optarg, "variables") == 0)
+ helpVariables(NOPAGER);
+ else
+ goto unknown_option;
+
+ exit(EXIT_SUCCESS);
+ }
+ break;
+ case 2:
+ pset.popt.topt.format = PRINT_CSV;
+ break;
+ default:
+ unknown_option:
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
+ pset.progname);
+ exit(EXIT_FAILURE);
+ break;
+ }
+ }
+
+ /*
+ * if we still have arguments, use it as the database name and username
+ */
+ while (argc - optind >= 1)
+ {
+ if (!options->dbname)
+ options->dbname = argv[optind];
+ else if (!options->username)
+ options->username = argv[optind];
+ else if (!pset.quiet)
+ pg_log_warning("extra command-line argument \"%s\" ignored",
+ argv[optind]);
+
+ optind++;
+ }
+}
+
+
+/*
+ * Append a new item to the end of the SimpleActionList.
+ * Note that "val" is copied if it's not NULL.
+ */
+static void
+simple_action_list_append(SimpleActionList *list,
+ enum _actions action, const char *val)
+{
+ SimpleActionListCell *cell;
+
+ cell = (SimpleActionListCell *) pg_malloc(sizeof(SimpleActionListCell));
+
+ cell->next = NULL;
+ cell->action = action;
+ if (val)
+ cell->val = pg_strdup(val);
+ else
+ cell->val = NULL;
+
+ if (list->tail)
+ list->tail->next = cell;
+ else
+ list->head = cell;
+ list->tail = cell;
+}
+
+
+/*
+ * Load .psqlrc file, if found.
+ */
+static void
+process_psqlrc(char *argv0)
+{
+ char home[MAXPGPATH];
+ char rc_file[MAXPGPATH];
+ char my_exec_path[MAXPGPATH];
+ char etc_path[MAXPGPATH];
+ char *envrc = getenv("PSQLRC");
+
+ if (find_my_exec(argv0, my_exec_path) < 0)
+ {
+ pg_log_fatal("could not find own program executable");
+ exit(EXIT_FAILURE);
+ }
+
+ get_etc_path(my_exec_path, etc_path);
+
+ snprintf(rc_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC);
+ process_psqlrc_file(rc_file);
+
+ if (envrc != NULL && strlen(envrc) > 0)
+ {
+ /* might need to free() this */
+ char *envrc_alloc = pstrdup(envrc);
+
+ expand_tilde(&envrc_alloc);
+ process_psqlrc_file(envrc_alloc);
+ }
+ else if (get_home_path(home))
+ {
+ snprintf(rc_file, MAXPGPATH, "%s/%s", home, PSQLRC);
+ process_psqlrc_file(rc_file);
+ }
+}
+
+
+
+static void
+process_psqlrc_file(char *filename)
+{
+ char *psqlrc_minor,
+ *psqlrc_major;
+
+#if defined(WIN32) && (!defined(__MINGW32__))
+#define R_OK 4
+#endif
+
+ psqlrc_minor = psprintf("%s-%s", filename, PG_VERSION);
+ psqlrc_major = psprintf("%s-%s", filename, PG_MAJORVERSION);
+
+ /* check for minor version first, then major, then no version */
+ if (access(psqlrc_minor, R_OK) == 0)
+ (void) process_file(psqlrc_minor, false);
+ else if (access(psqlrc_major, R_OK) == 0)
+ (void) process_file(psqlrc_major, false);
+ else if (access(filename, R_OK) == 0)
+ (void) process_file(filename, false);
+
+ free(psqlrc_minor);
+ free(psqlrc_major);
+}
+
+
+
+/* showVersion
+ *
+ * This output format is intended to match GNU standards.
+ */
+static void
+showVersion(void)
+{
+ puts("psql (PostgreSQL) " PG_VERSION);
+}
+
+
+
+/*
+ * Substitute hooks and assign hooks for psql variables.
+ *
+ * This isn't an amazingly good place for them, but neither is anywhere else.
+ *
+ * By policy, every special variable that controls any psql behavior should
+ * have one or both hooks, even if they're just no-ops. This ensures that
+ * the variable will remain present in variables.c's list even when unset,
+ * which ensures that it's known to tab completion.
+ */
+
+static char *
+bool_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ {
+ /* "\unset FOO" becomes "\set FOO off" */
+ newval = pg_strdup("off");
+ }
+ else if (newval[0] == '\0')
+ {
+ /* "\set FOO" becomes "\set FOO on" */
+ pg_free(newval);
+ newval = pg_strdup("on");
+ }
+ return newval;
+}
+
+static bool
+autocommit_hook(const char *newval)
+{
+ return ParseVariableBool(newval, "AUTOCOMMIT", &pset.autocommit);
+}
+
+static bool
+on_error_stop_hook(const char *newval)
+{
+ return ParseVariableBool(newval, "ON_ERROR_STOP", &pset.on_error_stop);
+}
+
+static bool
+quiet_hook(const char *newval)
+{
+ return ParseVariableBool(newval, "QUIET", &pset.quiet);
+}
+
+static bool
+singleline_hook(const char *newval)
+{
+ return ParseVariableBool(newval, "SINGLELINE", &pset.singleline);
+}
+
+static bool
+singlestep_hook(const char *newval)
+{
+ return ParseVariableBool(newval, "SINGLESTEP", &pset.singlestep);
+}
+
+static char *
+fetch_count_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ newval = pg_strdup("0");
+ return newval;
+}
+
+static bool
+fetch_count_hook(const char *newval)
+{
+ return ParseVariableNum(newval, "FETCH_COUNT", &pset.fetch_count);
+}
+
+static bool
+histfile_hook(const char *newval)
+{
+ /*
+ * Someday we might try to validate the filename, but for now, this is
+ * just a placeholder to ensure HISTFILE is known to tab completion.
+ */
+ return true;
+}
+
+static char *
+histsize_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ newval = pg_strdup("500");
+ return newval;
+}
+
+static bool
+histsize_hook(const char *newval)
+{
+ return ParseVariableNum(newval, "HISTSIZE", &pset.histsize);
+}
+
+static char *
+ignoreeof_substitute_hook(char *newval)
+{
+ int dummy;
+
+ /*
+ * This tries to mimic the behavior of bash, to wit "If set, the value is
+ * the number of consecutive EOF characters which must be typed as the
+ * first characters on an input line before bash exits. If the variable
+ * exists but does not have a numeric value, or has no value, the default
+ * value is 10. If it does not exist, EOF signifies the end of input to
+ * the shell." Unlike bash, however, we insist on the stored value
+ * actually being a valid integer.
+ */
+ if (newval == NULL)
+ newval = pg_strdup("0");
+ else if (!ParseVariableNum(newval, NULL, &dummy))
+ newval = pg_strdup("10");
+ return newval;
+}
+
+static bool
+ignoreeof_hook(const char *newval)
+{
+ return ParseVariableNum(newval, "IGNOREEOF", &pset.ignoreeof);
+}
+
+static char *
+echo_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ newval = pg_strdup("none");
+ return newval;
+}
+
+static bool
+echo_hook(const char *newval)
+{
+ Assert(newval != NULL); /* else substitute hook messed up */
+ if (pg_strcasecmp(newval, "queries") == 0)
+ pset.echo = PSQL_ECHO_QUERIES;
+ else if (pg_strcasecmp(newval, "errors") == 0)
+ pset.echo = PSQL_ECHO_ERRORS;
+ else if (pg_strcasecmp(newval, "all") == 0)
+ pset.echo = PSQL_ECHO_ALL;
+ else if (pg_strcasecmp(newval, "none") == 0)
+ pset.echo = PSQL_ECHO_NONE;
+ else
+ {
+ PsqlVarEnumError("ECHO", newval, "none, errors, queries, all");
+ return false;
+ }
+ return true;
+}
+
+static bool
+echo_hidden_hook(const char *newval)
+{
+ Assert(newval != NULL); /* else substitute hook messed up */
+ if (pg_strcasecmp(newval, "noexec") == 0)
+ pset.echo_hidden = PSQL_ECHO_HIDDEN_NOEXEC;
+ else
+ {
+ bool on_off;
+
+ if (ParseVariableBool(newval, NULL, &on_off))
+ pset.echo_hidden = on_off ? PSQL_ECHO_HIDDEN_ON : PSQL_ECHO_HIDDEN_OFF;
+ else
+ {
+ PsqlVarEnumError("ECHO_HIDDEN", newval, "on, off, noexec");
+ return false;
+ }
+ }
+ return true;
+}
+
+static bool
+on_error_rollback_hook(const char *newval)
+{
+ Assert(newval != NULL); /* else substitute hook messed up */
+ if (pg_strcasecmp(newval, "interactive") == 0)
+ pset.on_error_rollback = PSQL_ERROR_ROLLBACK_INTERACTIVE;
+ else
+ {
+ bool on_off;
+
+ if (ParseVariableBool(newval, NULL, &on_off))
+ pset.on_error_rollback = on_off ? PSQL_ERROR_ROLLBACK_ON : PSQL_ERROR_ROLLBACK_OFF;
+ else
+ {
+ PsqlVarEnumError("ON_ERROR_ROLLBACK", newval, "on, off, interactive");
+ return false;
+ }
+ }
+ return true;
+}
+
+static char *
+comp_keyword_case_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ newval = pg_strdup("preserve-upper");
+ return newval;
+}
+
+static bool
+comp_keyword_case_hook(const char *newval)
+{
+ Assert(newval != NULL); /* else substitute hook messed up */
+ if (pg_strcasecmp(newval, "preserve-upper") == 0)
+ pset.comp_case = PSQL_COMP_CASE_PRESERVE_UPPER;
+ else if (pg_strcasecmp(newval, "preserve-lower") == 0)
+ pset.comp_case = PSQL_COMP_CASE_PRESERVE_LOWER;
+ else if (pg_strcasecmp(newval, "upper") == 0)
+ pset.comp_case = PSQL_COMP_CASE_UPPER;
+ else if (pg_strcasecmp(newval, "lower") == 0)
+ pset.comp_case = PSQL_COMP_CASE_LOWER;
+ else
+ {
+ PsqlVarEnumError("COMP_KEYWORD_CASE", newval,
+ "lower, upper, preserve-lower, preserve-upper");
+ return false;
+ }
+ return true;
+}
+
+static char *
+histcontrol_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ newval = pg_strdup("none");
+ return newval;
+}
+
+static bool
+histcontrol_hook(const char *newval)
+{
+ Assert(newval != NULL); /* else substitute hook messed up */
+ if (pg_strcasecmp(newval, "ignorespace") == 0)
+ pset.histcontrol = hctl_ignorespace;
+ else if (pg_strcasecmp(newval, "ignoredups") == 0)
+ pset.histcontrol = hctl_ignoredups;
+ else if (pg_strcasecmp(newval, "ignoreboth") == 0)
+ pset.histcontrol = hctl_ignoreboth;
+ else if (pg_strcasecmp(newval, "none") == 0)
+ pset.histcontrol = hctl_none;
+ else
+ {
+ PsqlVarEnumError("HISTCONTROL", newval,
+ "none, ignorespace, ignoredups, ignoreboth");
+ return false;
+ }
+ return true;
+}
+
+static bool
+prompt1_hook(const char *newval)
+{
+ pset.prompt1 = newval ? newval : "";
+ return true;
+}
+
+static bool
+prompt2_hook(const char *newval)
+{
+ pset.prompt2 = newval ? newval : "";
+ return true;
+}
+
+static bool
+prompt3_hook(const char *newval)
+{
+ pset.prompt3 = newval ? newval : "";
+ return true;
+}
+
+static char *
+verbosity_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ newval = pg_strdup("default");
+ return newval;
+}
+
+static bool
+verbosity_hook(const char *newval)
+{
+ Assert(newval != NULL); /* else substitute hook messed up */
+ if (pg_strcasecmp(newval, "default") == 0)
+ pset.verbosity = PQERRORS_DEFAULT;
+ else if (pg_strcasecmp(newval, "verbose") == 0)
+ pset.verbosity = PQERRORS_VERBOSE;
+ else if (pg_strcasecmp(newval, "terse") == 0)
+ pset.verbosity = PQERRORS_TERSE;
+ else if (pg_strcasecmp(newval, "sqlstate") == 0)
+ pset.verbosity = PQERRORS_SQLSTATE;
+ else
+ {
+ PsqlVarEnumError("VERBOSITY", newval, "default, verbose, terse, sqlstate");
+ return false;
+ }
+
+ if (pset.db)
+ PQsetErrorVerbosity(pset.db, pset.verbosity);
+ return true;
+}
+
+static char *
+show_context_substitute_hook(char *newval)
+{
+ if (newval == NULL)
+ newval = pg_strdup("errors");
+ return newval;
+}
+
+static bool
+show_context_hook(const char *newval)
+{
+ Assert(newval != NULL); /* else substitute hook messed up */
+ if (pg_strcasecmp(newval, "never") == 0)
+ pset.show_context = PQSHOW_CONTEXT_NEVER;
+ else if (pg_strcasecmp(newval, "errors") == 0)
+ pset.show_context = PQSHOW_CONTEXT_ERRORS;
+ else if (pg_strcasecmp(newval, "always") == 0)
+ pset.show_context = PQSHOW_CONTEXT_ALWAYS;
+ else
+ {
+ PsqlVarEnumError("SHOW_CONTEXT", newval, "never, errors, always");
+ return false;
+ }
+
+ if (pset.db)
+ PQsetErrorContextVisibility(pset.db, pset.show_context);
+ return true;
+}
+
+static bool
+hide_tableam_hook(const char *newval)
+{
+ return ParseVariableBool(newval, "HIDE_TABLEAM", &pset.hide_tableam);
+}
+
+static void
+EstablishVariableSpace(void)
+{
+ pset.vars = CreateVariableSpace();
+
+ SetVariableHooks(pset.vars, "AUTOCOMMIT",
+ bool_substitute_hook,
+ autocommit_hook);
+ SetVariableHooks(pset.vars, "ON_ERROR_STOP",
+ bool_substitute_hook,
+ on_error_stop_hook);
+ SetVariableHooks(pset.vars, "QUIET",
+ bool_substitute_hook,
+ quiet_hook);
+ SetVariableHooks(pset.vars, "SINGLELINE",
+ bool_substitute_hook,
+ singleline_hook);
+ SetVariableHooks(pset.vars, "SINGLESTEP",
+ bool_substitute_hook,
+ singlestep_hook);
+ SetVariableHooks(pset.vars, "FETCH_COUNT",
+ fetch_count_substitute_hook,
+ fetch_count_hook);
+ SetVariableHooks(pset.vars, "HISTFILE",
+ NULL,
+ histfile_hook);
+ SetVariableHooks(pset.vars, "HISTSIZE",
+ histsize_substitute_hook,
+ histsize_hook);
+ SetVariableHooks(pset.vars, "IGNOREEOF",
+ ignoreeof_substitute_hook,
+ ignoreeof_hook);
+ SetVariableHooks(pset.vars, "ECHO",
+ echo_substitute_hook,
+ echo_hook);
+ SetVariableHooks(pset.vars, "ECHO_HIDDEN",
+ bool_substitute_hook,
+ echo_hidden_hook);
+ SetVariableHooks(pset.vars, "ON_ERROR_ROLLBACK",
+ bool_substitute_hook,
+ on_error_rollback_hook);
+ SetVariableHooks(pset.vars, "COMP_KEYWORD_CASE",
+ comp_keyword_case_substitute_hook,
+ comp_keyword_case_hook);
+ SetVariableHooks(pset.vars, "HISTCONTROL",
+ histcontrol_substitute_hook,
+ histcontrol_hook);
+ SetVariableHooks(pset.vars, "PROMPT1",
+ NULL,
+ prompt1_hook);
+ SetVariableHooks(pset.vars, "PROMPT2",
+ NULL,
+ prompt2_hook);
+ SetVariableHooks(pset.vars, "PROMPT3",
+ NULL,
+ prompt3_hook);
+ SetVariableHooks(pset.vars, "VERBOSITY",
+ verbosity_substitute_hook,
+ verbosity_hook);
+ SetVariableHooks(pset.vars, "SHOW_CONTEXT",
+ show_context_substitute_hook,
+ show_context_hook);
+ SetVariableHooks(pset.vars, "HIDE_TABLEAM",
+ bool_substitute_hook,
+ hide_tableam_hook);
+}
diff --git a/src/bin/psql/stringutils.c b/src/bin/psql/stringutils.c
new file mode 100644
index 0000000..c96b2fe
--- /dev/null
+++ b/src/bin/psql/stringutils.c
@@ -0,0 +1,344 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/stringutils.c
+ */
+#include "postgres_fe.h"
+
+#include <ctype.h>
+
+#include "common.h"
+#include "stringutils.h"
+
+#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e))
+
+
+/*
+ * Replacement for strtok() (a.k.a. poor man's flex)
+ *
+ * Splits a string into tokens, returning one token per call, then NULL
+ * when no more tokens exist in the given string.
+ *
+ * The calling convention is similar to that of strtok, but with more
+ * frammishes.
+ *
+ * s - string to parse, if NULL continue parsing the last string
+ * whitespace - set of whitespace characters that separate tokens
+ * delim - set of non-whitespace separator characters (or NULL)
+ * quote - set of characters that can quote a token (NULL if none)
+ * escape - character that can quote quotes (0 if none)
+ * e_strings - if true, treat E'...' syntax as a valid token
+ * del_quotes - if true, strip quotes from the returned token, else return
+ * it exactly as found in the string
+ * encoding - the active character-set encoding
+ *
+ * Characters in 'delim', if any, will be returned as single-character
+ * tokens unless part of a quoted token.
+ *
+ * Double occurrences of the quoting character are always taken to represent
+ * a single quote character in the data. If escape isn't 0, then escape
+ * followed by anything (except \0) is a data character too.
+ *
+ * The combination of e_strings and del_quotes both true is not currently
+ * handled. This could be fixed but it's not needed anywhere at the moment.
+ *
+ * Note that the string s is _not_ overwritten in this implementation.
+ *
+ * NB: it's okay to vary delim, quote, and escape from one call to the
+ * next on a single source string, but changing whitespace is a bad idea
+ * since you might lose data.
+ */
+char *
+strtokx(const char *s,
+ const char *whitespace,
+ const char *delim,
+ const char *quote,
+ char escape,
+ bool e_strings,
+ bool del_quotes,
+ int encoding)
+{
+ static char *storage = NULL; /* store the local copy of the users
+ * string here */
+ static char *string = NULL; /* pointer into storage where to continue on
+ * next call */
+
+ /* variously abused variables: */
+ unsigned int offset;
+ char *start;
+ char *p;
+
+ if (s)
+ {
+ free(storage);
+
+ /*
+ * We may need extra space to insert delimiter nulls for adjacent
+ * tokens. 2X the space is a gross overestimate, but it's unlikely
+ * that this code will be used on huge strings anyway.
+ */
+ storage = pg_malloc(2 * strlen(s) + 1);
+ strcpy(storage, s);
+ string = storage;
+ }
+
+ if (!storage)
+ return NULL;
+
+ /* skip leading whitespace */
+ offset = strspn(string, whitespace);
+ start = &string[offset];
+
+ /* end of string reached? */
+ if (*start == '\0')
+ {
+ /* technically we don't need to free here, but we're nice */
+ free(storage);
+ storage = NULL;
+ string = NULL;
+ return NULL;
+ }
+
+ /* test if delimiter character */
+ if (delim && strchr(delim, *start))
+ {
+ /*
+ * If not at end of string, we need to insert a null to terminate the
+ * returned token. We can just overwrite the next character if it
+ * happens to be in the whitespace set ... otherwise move over the
+ * rest of the string to make room. (This is why we allocated extra
+ * space above).
+ */
+ p = start + 1;
+ if (*p != '\0')
+ {
+ if (!strchr(whitespace, *p))
+ memmove(p + 1, p, strlen(p) + 1);
+ *p = '\0';
+ string = p + 1;
+ }
+ else
+ {
+ /* at end of string, so no extra work */
+ string = p;
+ }
+
+ return start;
+ }
+
+ /* check for E string */
+ p = start;
+ if (e_strings &&
+ (*p == 'E' || *p == 'e') &&
+ p[1] == '\'')
+ {
+ quote = "'";
+ escape = '\\'; /* if std strings before, not any more */
+ p++;
+ }
+
+ /* test if quoting character */
+ if (quote && strchr(quote, *p))
+ {
+ /* okay, we have a quoted token, now scan for the closer */
+ char thisquote = *p++;
+
+ for (; *p; p += PQmblenBounded(p, encoding))
+ {
+ if (*p == escape && p[1] != '\0')
+ p++; /* process escaped anything */
+ else if (*p == thisquote && p[1] == thisquote)
+ p++; /* process doubled quote */
+ else if (*p == thisquote)
+ {
+ p++; /* skip trailing quote */
+ break;
+ }
+ }
+
+ /*
+ * If not at end of string, we need to insert a null to terminate the
+ * returned token. See notes above.
+ */
+ if (*p != '\0')
+ {
+ if (!strchr(whitespace, *p))
+ memmove(p + 1, p, strlen(p) + 1);
+ *p = '\0';
+ string = p + 1;
+ }
+ else
+ {
+ /* at end of string, so no extra work */
+ string = p;
+ }
+
+ /* Clean up the token if caller wants that */
+ if (del_quotes)
+ strip_quotes(start, thisquote, escape, encoding);
+
+ return start;
+ }
+
+ /*
+ * Otherwise no quoting character. Scan till next whitespace, delimiter
+ * or quote. NB: at this point, *start is known not to be '\0',
+ * whitespace, delim, or quote, so we will consume at least one character.
+ */
+ offset = strcspn(start, whitespace);
+
+ if (delim)
+ {
+ unsigned int offset2 = strcspn(start, delim);
+
+ if (offset > offset2)
+ offset = offset2;
+ }
+
+ if (quote)
+ {
+ unsigned int offset2 = strcspn(start, quote);
+
+ if (offset > offset2)
+ offset = offset2;
+ }
+
+ p = start + offset;
+
+ /*
+ * If not at end of string, we need to insert a null to terminate the
+ * returned token. See notes above.
+ */
+ if (*p != '\0')
+ {
+ if (!strchr(whitespace, *p))
+ memmove(p + 1, p, strlen(p) + 1);
+ *p = '\0';
+ string = p + 1;
+ }
+ else
+ {
+ /* at end of string, so no extra work */
+ string = p;
+ }
+
+ return start;
+}
+
+
+/*
+ * strip_quotes
+ *
+ * Remove quotes from the string at *source. Leading and trailing occurrences
+ * of 'quote' are removed; embedded double occurrences of 'quote' are reduced
+ * to single occurrences; if 'escape' is not 0 then 'escape' removes special
+ * significance of next character.
+ *
+ * Note that the source string is overwritten in-place.
+ */
+void
+strip_quotes(char *source, char quote, char escape, int encoding)
+{
+ char *src;
+ char *dst;
+
+ Assert(source != NULL);
+ Assert(quote != '\0');
+
+ src = dst = source;
+
+ if (*src && *src == quote)
+ src++; /* skip leading quote */
+
+ while (*src)
+ {
+ char c = *src;
+ int i;
+
+ if (c == quote && src[1] == '\0')
+ break; /* skip trailing quote */
+ else if (c == quote && src[1] == quote)
+ src++; /* process doubled quote */
+ else if (c == escape && src[1] != '\0')
+ src++; /* process escaped character */
+
+ i = PQmblenBounded(src, encoding);
+ while (i--)
+ *dst++ = *src++;
+ }
+
+ *dst = '\0';
+}
+
+
+/*
+ * quote_if_needed
+ *
+ * Opposite of strip_quotes(). If "source" denotes itself literally without
+ * quoting or escaping, returns NULL. Otherwise, returns a malloc'd copy with
+ * quoting and escaping applied:
+ *
+ * source - string to parse
+ * entails_quote - any of these present? need outer quotes
+ * quote - doubled within string, affixed to both ends
+ * escape - doubled within string
+ * force_quote - if true, quote the output even if it doesn't "need" it
+ * encoding - the active character-set encoding
+ *
+ * Do not use this as a substitute for PQescapeStringConn(). Use it for
+ * strings to be parsed by strtokx() or psql_scan_slash_option().
+ */
+char *
+quote_if_needed(const char *source, const char *entails_quote,
+ char quote, char escape, bool force_quote,
+ int encoding)
+{
+ const char *src;
+ char *ret;
+ char *dst;
+ bool need_quotes = force_quote;
+
+ Assert(source != NULL);
+ Assert(quote != '\0');
+
+ src = source;
+ dst = ret = pg_malloc(2 * strlen(src) + 3); /* excess */
+
+ *dst++ = quote;
+
+ while (*src)
+ {
+ char c = *src;
+ int i;
+
+ if (c == quote)
+ {
+ need_quotes = true;
+ *dst++ = quote;
+ }
+ else if (c == escape)
+ {
+ need_quotes = true;
+ *dst++ = escape;
+ }
+ else if (strchr(entails_quote, c))
+ need_quotes = true;
+
+ i = PQmblenBounded(src, encoding);
+ while (i--)
+ *dst++ = *src++;
+ }
+
+ *dst++ = quote;
+ *dst = '\0';
+
+ if (!need_quotes)
+ {
+ free(ret);
+ ret = NULL;
+ }
+
+ return ret;
+}
diff --git a/src/bin/psql/stringutils.h b/src/bin/psql/stringutils.h
new file mode 100644
index 0000000..4be172e
--- /dev/null
+++ b/src/bin/psql/stringutils.h
@@ -0,0 +1,28 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/stringutils.h
+ */
+#ifndef STRINGUTILS_H
+#define STRINGUTILS_H
+
+/* The cooler version of strtok() which knows about quotes and doesn't
+ * overwrite your input */
+extern char *strtokx(const char *s,
+ const char *whitespace,
+ const char *delim,
+ const char *quote,
+ char escape,
+ bool e_strings,
+ bool del_quotes,
+ int encoding);
+
+extern void strip_quotes(char *source, char quote, char escape, int encoding);
+
+extern char *quote_if_needed(const char *source, const char *entails_quote,
+ char quote, char escape, bool force_quote,
+ int encoding);
+
+#endif /* STRINGUTILS_H */
diff --git a/src/bin/psql/t/010_tab_completion.pl b/src/bin/psql/t/010_tab_completion.pl
new file mode 100644
index 0000000..c27f216
--- /dev/null
+++ b/src/bin/psql/t/010_tab_completion.pl
@@ -0,0 +1,227 @@
+use strict;
+use warnings;
+
+use PostgresNode;
+use TestLib;
+use Test::More;
+use IPC::Run qw(pump finish timer);
+use Data::Dumper;
+
+# Do nothing unless Makefile has told us that the build is --with-readline.
+if (!defined($ENV{with_readline}) || $ENV{with_readline} ne 'yes')
+{
+ plan skip_all => 'readline is not supported by this build';
+}
+
+# Also, skip if user has set environment variable to command that.
+# This is mainly intended to allow working around some of the more broken
+# versions of libedit --- some users might find them acceptable even if
+# they won't pass these tests.
+if (defined($ENV{SKIP_READLINE_TESTS}))
+{
+ plan skip_all => 'SKIP_READLINE_TESTS is set';
+}
+
+# If we don't have IO::Pty, forget it, because IPC::Run depends on that
+# to support pty connections
+eval { require IO::Pty; };
+if ($@)
+{
+ plan skip_all => 'IO::Pty is needed to run this test';
+}
+
+# start a new server
+my $node = get_new_node('main');
+$node->init;
+$node->start;
+
+# set up a few database objects
+$node->safe_psql('postgres',
+ "CREATE TABLE tab1 (f1 int, f2 text);\n"
+ . "CREATE TABLE mytab123 (f1 int, f2 text);\n"
+ . "CREATE TABLE mytab246 (f1 int, f2 text);\n");
+
+# Developers would not appreciate this test adding a bunch of junk to
+# their ~/.psql_history, so be sure to redirect history into a temp file.
+# We might as well put it in the test log directory, so that buildfarm runs
+# capture the result for possible debugging purposes.
+my $historyfile = "${TestLib::log_path}/010_psql_history.txt";
+$ENV{PSQL_HISTORY} = $historyfile;
+
+# Another pitfall for developers is that they might have a ~/.inputrc
+# file that changes readline's behavior enough to affect this test.
+# So ignore any such file.
+$ENV{INPUTRC} = '/dev/null';
+
+# Unset $TERM so that readline/libedit won't use any terminal-dependent
+# escape sequences; that leads to way too many cross-version variations
+# in the output.
+delete $ENV{TERM};
+# Some versions of readline inspect LS_COLORS, so for luck unset that too.
+delete $ENV{LS_COLORS};
+
+# In a VPATH build, we'll be started in the source directory, but we want
+# to run in the build directory so that we can use relative paths to
+# access the tmp_check subdirectory; otherwise the output from filename
+# completion tests is too variable.
+if ($ENV{TESTDIR})
+{
+ chdir $ENV{TESTDIR} or die "could not chdir to \"$ENV{TESTDIR}\": $!";
+}
+
+# Create some junk files for filename completion testing.
+my $FH;
+open $FH, ">", "tmp_check/somefile"
+ or die("could not create file \"tmp_check/somefile\": $!");
+print $FH "some stuff\n";
+close $FH;
+open $FH, ">", "tmp_check/afile123"
+ or die("could not create file \"tmp_check/afile123\": $!");
+print $FH "more stuff\n";
+close $FH;
+open $FH, ">", "tmp_check/afile456"
+ or die("could not create file \"tmp_check/afile456\": $!");
+print $FH "other stuff\n";
+close $FH;
+
+# fire up an interactive psql session
+my $in = '';
+my $out = '';
+
+my $timer = timer(5);
+
+my $h = $node->interactive_psql('postgres', \$in, \$out, $timer);
+
+like($out, qr/psql/, "print startup banner");
+
+# Simple test case: type something and see if psql responds as expected
+sub check_completion
+{
+ my ($send, $pattern, $annotation) = @_;
+
+ # report test failures from caller location
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+ # reset output collector
+ $out = "";
+ # restart per-command timer
+ $timer->start(5);
+ # send the data to be sent
+ $in .= $send;
+ # wait ...
+ pump $h until ($out =~ $pattern || $timer->is_expired);
+ my $okay = ($out =~ $pattern && !$timer->is_expired);
+ ok($okay, $annotation);
+ # for debugging, log actual output if it didn't match
+ local $Data::Dumper::Terse = 1;
+ local $Data::Dumper::Useqq = 1;
+ diag 'Actual output was ' . Dumper($out) . "Did not match \"$pattern\"\n"
+ if !$okay;
+ return;
+}
+
+# Clear query buffer to start over
+# (won't work if we are inside a string literal!)
+sub clear_query
+{
+ check_completion("\\r\n", qr/postgres=# /, "\\r works");
+ return;
+}
+
+# Clear current line to start over
+# (this will work in an incomplete string literal, but it's less desirable
+# than clear_query because we lose evidence in the history file)
+sub clear_line
+{
+ check_completion("\025\n", qr/postgres=# /, "control-U works");
+ return;
+}
+
+# check basic command completion: SEL<tab> produces SELECT<space>
+check_completion("SEL\t", qr/SELECT /, "complete SEL<tab> to SELECT");
+
+clear_query();
+
+# check case variation is honored
+check_completion("sel\t", qr/select /, "complete sel<tab> to select");
+
+# check basic table name completion
+check_completion("* from t\t", qr/\* from tab1 /, "complete t<tab> to tab1");
+
+clear_query();
+
+# check table name completion with multiple alternatives
+# note: readline might print a bell before the completion
+check_completion(
+ "select * from my\t",
+ qr/select \* from my\a?tab/,
+ "complete my<tab> to mytab when there are multiple choices");
+
+# some versions of readline/libedit require two tabs here, some only need one
+check_completion(
+ "\t\t",
+ qr/mytab123 +mytab246/,
+ "offer multiple table choices");
+
+check_completion("2\t", qr/246 /,
+ "finish completion of one of multiple table choices");
+
+clear_query();
+
+# check case-sensitive keyword replacement
+# note: various versions of readline/libedit handle backspacing
+# differently, so just check that the replacement comes out correctly
+check_completion("\\DRD\t", qr/drds /, "complete \\DRD<tab> to \\drds");
+
+clear_query();
+
+# check filename completion
+check_completion(
+ "\\lo_import tmp_check/some\t",
+ qr|tmp_check/somefile |,
+ "filename completion with one possibility");
+
+clear_query();
+
+# note: readline might print a bell before the completion
+check_completion(
+ "\\lo_import tmp_check/af\t",
+ qr|tmp_check/af\a?ile|,
+ "filename completion with multiple possibilities");
+
+clear_query();
+
+# COPY requires quoting
+# note: broken versions of libedit want to backslash the closing quote;
+# not much we can do about that
+check_completion(
+ "COPY foo FROM tmp_check/some\t",
+ qr|'tmp_check/somefile\\?' |,
+ "quoted filename completion with one possibility");
+
+clear_line();
+
+check_completion(
+ "COPY foo FROM tmp_check/af\t",
+ qr|'tmp_check/afile|,
+ "quoted filename completion with multiple possibilities");
+
+# some versions of readline/libedit require two tabs here, some only need one
+# also, some will offer the whole path name and some just the file name
+# the quotes might appear, too
+check_completion(
+ "\t\t",
+ qr|afile123'? +'?(tmp_check/)?afile456|,
+ "offer multiple file choices");
+
+clear_line();
+
+# send psql an explicit \q to shut it down, else pty won't close properly
+$timer->start(5);
+$in .= "\\q\n";
+finish $h or die "psql returned $?";
+$timer->reset;
+
+# done
+$node->stop;
+done_testing();
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
new file mode 100644
index 0000000..4f46cd9
--- /dev/null
+++ b/src/bin/psql/tab-complete.c
@@ -0,0 +1,4925 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/tab-complete.c
+ */
+
+/*----------------------------------------------------------------------
+ * This file implements a somewhat more sophisticated readline "TAB
+ * completion" in psql. It is not intended to be AI, to replace
+ * learning SQL, or to relieve you from thinking about what you're
+ * doing. Also it does not always give you all the syntactically legal
+ * completions, only those that are the most common or the ones that
+ * the programmer felt most like implementing.
+ *
+ * CAVEAT: Tab completion causes queries to be sent to the backend.
+ * The number of tuples returned gets limited, in most default
+ * installations to 1000, but if you still don't like this prospect,
+ * you can turn off tab completion in your ~/.inputrc (or else
+ * ${INPUTRC}) file so:
+ *
+ * $if psql
+ * set disable-completion on
+ * $endif
+ *
+ * See `man 3 readline' or `info readline' for the full details.
+ *
+ * BUGS:
+ * - Quotes, parentheses, and other funny characters are not handled
+ * all that gracefully.
+ *----------------------------------------------------------------------
+ */
+
+#include "postgres_fe.h"
+
+#include "input.h"
+#include "tab-complete.h"
+
+/* If we don't have this, we might as well forget about the whole thing: */
+#ifdef USE_READLINE
+
+#include <ctype.h>
+#include <sys/stat.h>
+
+#include "catalog/pg_am_d.h"
+#include "catalog/pg_class_d.h"
+#include "common.h"
+#include "libpq-fe.h"
+#include "pqexpbuffer.h"
+#include "settings.h"
+#include "stringutils.h"
+
+/*
+ * Ancient versions of libedit provide filename_completion_function()
+ * instead of rl_filename_completion_function(). Likewise for
+ * [rl_]completion_matches().
+ */
+#ifndef HAVE_RL_FILENAME_COMPLETION_FUNCTION
+#define rl_filename_completion_function filename_completion_function
+#endif
+
+#ifndef HAVE_RL_COMPLETION_MATCHES
+#define rl_completion_matches completion_matches
+#endif
+
+/*
+ * Currently we assume that rl_filename_dequoting_function exists if
+ * rl_filename_quoting_function does. If that proves not to be the case,
+ * we'd need to test for the former, or possibly both, in configure.
+ */
+#ifdef HAVE_RL_FILENAME_QUOTING_FUNCTION
+#define USE_FILENAME_QUOTING_FUNCTIONS 1
+#endif
+
+#define PQmblenBounded(s, e) strnlen(s, PQmblen(s, e))
+
+/* word break characters */
+#define WORD_BREAKS "\t\n@$><=;|&{() "
+
+/*
+ * Since readline doesn't let us pass any state through to the tab completion
+ * callback, we have to use this global variable to let get_previous_words()
+ * get at the previous lines of the current command. Ick.
+ */
+PQExpBuffer tab_completion_query_buf = NULL;
+
+/*
+ * In some situations, the query to find out what names are available to
+ * complete with must vary depending on server version. We handle this by
+ * storing a list of queries, each tagged with the minimum server version
+ * it will work for. Each list must be stored in descending server version
+ * order, so that the first satisfactory query is the one to use.
+ *
+ * When the query string is otherwise constant, an array of VersionedQuery
+ * suffices. Terminate the array with an entry having min_server_version = 0.
+ * That entry's query string can be a query that works in all supported older
+ * server versions, or NULL to give up and do no completion.
+ */
+typedef struct VersionedQuery
+{
+ int min_server_version;
+ const char *query;
+} VersionedQuery;
+
+/*
+ * This struct is used to define "schema queries", which are custom-built
+ * to obtain possibly-schema-qualified names of database objects. There is
+ * enough similarity in the structure that we don't want to repeat it each
+ * time. So we put the components of each query into this struct and
+ * assemble them with the common boilerplate in _complete_from_query().
+ *
+ * As with VersionedQuery, we can use an array of these if the query details
+ * must vary across versions.
+ */
+typedef struct SchemaQuery
+{
+ /*
+ * If not zero, minimum server version this struct applies to. If not
+ * zero, there should be a following struct with a smaller minimum server
+ * version; use catname == NULL in the last entry if we should do nothing.
+ */
+ int min_server_version;
+
+ /*
+ * Name of catalog or catalogs to be queried, with alias, eg.
+ * "pg_catalog.pg_class c". Note that "pg_namespace n" will be added.
+ */
+ const char *catname;
+
+ /*
+ * Selection condition --- only rows meeting this condition are candidates
+ * to display. If catname mentions multiple tables, include the necessary
+ * join condition here. For example, this might look like "c.relkind = "
+ * CppAsString2(RELKIND_RELATION). Write NULL (not an empty string) if
+ * not needed.
+ */
+ const char *selcondition;
+
+ /*
+ * Visibility condition --- which rows are visible without schema
+ * qualification? For example, "pg_catalog.pg_table_is_visible(c.oid)".
+ */
+ const char *viscondition;
+
+ /*
+ * Namespace --- name of field to join to pg_namespace.oid. For example,
+ * "c.relnamespace".
+ */
+ const char *namespace;
+
+ /*
+ * Result --- the appropriately-quoted name to return, in the case of an
+ * unqualified name. For example, "pg_catalog.quote_ident(c.relname)".
+ */
+ const char *result;
+
+ /*
+ * In some cases a different result must be used for qualified names.
+ * Enter that here, or write NULL if result can be used.
+ */
+ const char *qualresult;
+} SchemaQuery;
+
+
+/* Store maximum number of records we want from database queries
+ * (implemented via SELECT ... LIMIT xx).
+ */
+static int completion_max_records;
+
+/*
+ * Communication variables set by psql_completion (mostly in COMPLETE_WITH_FOO
+ * macros) and then used by the completion callback functions. Ugly but there
+ * is no better way.
+ */
+static char completion_last_char; /* last char of input word */
+static const char *completion_charp; /* to pass a string */
+static const char *const *completion_charpp; /* to pass a list of strings */
+static const char *completion_info_charp; /* to pass a second string */
+static const char *completion_info_charp2; /* to pass a third string */
+static const VersionedQuery *completion_vquery; /* to pass a VersionedQuery */
+static const SchemaQuery *completion_squery; /* to pass a SchemaQuery */
+static bool completion_case_sensitive; /* completion is case sensitive */
+static bool completion_force_quote; /* true to force-quote filenames */
+
+/*
+ * A few macros to ease typing. You can use these to complete the given
+ * string with
+ * 1) The results from a query you pass it. (Perhaps one of those below?)
+ * We support both simple and versioned queries.
+ * 2) The results from a schema query you pass it.
+ * We support both simple and versioned schema queries.
+ * 3) The items from a null-pointer-terminated list (with or without
+ * case-sensitive comparison); if the list is constant you can build it
+ * with COMPLETE_WITH() or COMPLETE_WITH_CS().
+ * 4) The list of attributes of the given table (possibly schema-qualified).
+ * 5) The list of arguments to the given function (possibly schema-qualified).
+ */
+#define COMPLETE_WITH_QUERY(query) \
+do { \
+ completion_charp = query; \
+ matches = rl_completion_matches(text, complete_from_query); \
+} while (0)
+
+#define COMPLETE_WITH_VERSIONED_QUERY(query) \
+do { \
+ completion_vquery = query; \
+ matches = rl_completion_matches(text, complete_from_versioned_query); \
+} while (0)
+
+#define COMPLETE_WITH_SCHEMA_QUERY(query, addon) \
+do { \
+ completion_squery = &(query); \
+ completion_charp = addon; \
+ matches = rl_completion_matches(text, complete_from_schema_query); \
+} while (0)
+
+#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(query, addon) \
+do { \
+ completion_squery = query; \
+ completion_vquery = addon; \
+ matches = rl_completion_matches(text, complete_from_versioned_schema_query); \
+} while (0)
+
+/*
+ * Caution: COMPLETE_WITH_CONST is not for general-purpose use; you probably
+ * want COMPLETE_WITH() with one element, instead.
+ */
+#define COMPLETE_WITH_CONST(cs, con) \
+do { \
+ completion_case_sensitive = (cs); \
+ completion_charp = (con); \
+ matches = rl_completion_matches(text, complete_from_const); \
+} while (0)
+
+#define COMPLETE_WITH_LIST_INT(cs, list) \
+do { \
+ completion_case_sensitive = (cs); \
+ completion_charpp = (list); \
+ matches = rl_completion_matches(text, complete_from_list); \
+} while (0)
+
+#define COMPLETE_WITH_LIST(list) COMPLETE_WITH_LIST_INT(false, list)
+#define COMPLETE_WITH_LIST_CS(list) COMPLETE_WITH_LIST_INT(true, list)
+
+#define COMPLETE_WITH(...) \
+do { \
+ static const char *const list[] = { __VA_ARGS__, NULL }; \
+ COMPLETE_WITH_LIST(list); \
+} while (0)
+
+#define COMPLETE_WITH_CS(...) \
+do { \
+ static const char *const list[] = { __VA_ARGS__, NULL }; \
+ COMPLETE_WITH_LIST_CS(list); \
+} while (0)
+
+#define COMPLETE_WITH_ATTR(relation, addon) \
+do { \
+ char *_completion_schema; \
+ char *_completion_table; \
+\
+ _completion_schema = strtokx(relation, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ (void) strtokx(NULL, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ _completion_table = strtokx(NULL, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ if (_completion_table == NULL) \
+ { \
+ completion_charp = Query_for_list_of_attributes addon; \
+ completion_info_charp = relation; \
+ } \
+ else \
+ { \
+ completion_charp = Query_for_list_of_attributes_with_schema addon; \
+ completion_info_charp = _completion_table; \
+ completion_info_charp2 = _completion_schema; \
+ } \
+ matches = rl_completion_matches(text, complete_from_query); \
+} while (0)
+
+#define COMPLETE_WITH_ENUM_VALUE(type) \
+do { \
+ char *_completion_schema; \
+ char *_completion_type; \
+\
+ _completion_schema = strtokx(type, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ (void) strtokx(NULL, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ _completion_type = strtokx(NULL, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ if (_completion_type == NULL)\
+ { \
+ completion_charp = Query_for_list_of_enum_values; \
+ completion_info_charp = type; \
+ } \
+ else \
+ { \
+ completion_charp = Query_for_list_of_enum_values_with_schema; \
+ completion_info_charp = _completion_type; \
+ completion_info_charp2 = _completion_schema; \
+ } \
+ matches = rl_completion_matches(text, complete_from_query); \
+} while (0)
+
+#define COMPLETE_WITH_FUNCTION_ARG(function) \
+do { \
+ char *_completion_schema; \
+ char *_completion_function; \
+\
+ _completion_schema = strtokx(function, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ (void) strtokx(NULL, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ _completion_function = strtokx(NULL, " \t\n\r", ".", "\"", 0, \
+ false, false, pset.encoding); \
+ if (_completion_function == NULL) \
+ { \
+ completion_charp = Query_for_list_of_arguments; \
+ completion_info_charp = function; \
+ } \
+ else \
+ { \
+ completion_charp = Query_for_list_of_arguments_with_schema; \
+ completion_info_charp = _completion_function; \
+ completion_info_charp2 = _completion_schema; \
+ } \
+ matches = rl_completion_matches(text, complete_from_query); \
+} while (0)
+
+/*
+ * Assembly instructions for schema queries
+ */
+
+static const SchemaQuery Query_for_list_of_aggregates[] = {
+ {
+ .min_server_version = 110000,
+ .catname = "pg_catalog.pg_proc p",
+ .selcondition = "p.prokind = 'a'",
+ .viscondition = "pg_catalog.pg_function_is_visible(p.oid)",
+ .namespace = "p.pronamespace",
+ .result = "pg_catalog.quote_ident(p.proname)",
+ },
+ {
+ .catname = "pg_catalog.pg_proc p",
+ .selcondition = "p.proisagg",
+ .viscondition = "pg_catalog.pg_function_is_visible(p.oid)",
+ .namespace = "p.pronamespace",
+ .result = "pg_catalog.quote_ident(p.proname)",
+ }
+};
+
+static const SchemaQuery Query_for_list_of_datatypes = {
+ .catname = "pg_catalog.pg_type t",
+ /* selcondition --- ignore table rowtypes and array types */
+ .selcondition = "(t.typrelid = 0 "
+ " OR (SELECT c.relkind = " CppAsString2(RELKIND_COMPOSITE_TYPE)
+ " FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) "
+ "AND t.typname !~ '^_'",
+ .viscondition = "pg_catalog.pg_type_is_visible(t.oid)",
+ .namespace = "t.typnamespace",
+ .result = "pg_catalog.format_type(t.oid, NULL)",
+ .qualresult = "pg_catalog.quote_ident(t.typname)",
+};
+
+static const SchemaQuery Query_for_list_of_composite_datatypes = {
+ .catname = "pg_catalog.pg_type t",
+ /* selcondition --- only get composite types */
+ .selcondition = "(SELECT c.relkind = " CppAsString2(RELKIND_COMPOSITE_TYPE)
+ " FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid) "
+ "AND t.typname !~ '^_'",
+ .viscondition = "pg_catalog.pg_type_is_visible(t.oid)",
+ .namespace = "t.typnamespace",
+ .result = "pg_catalog.format_type(t.oid, NULL)",
+ .qualresult = "pg_catalog.quote_ident(t.typname)",
+};
+
+static const SchemaQuery Query_for_list_of_domains = {
+ .catname = "pg_catalog.pg_type t",
+ .selcondition = "t.typtype = 'd'",
+ .viscondition = "pg_catalog.pg_type_is_visible(t.oid)",
+ .namespace = "t.typnamespace",
+ .result = "pg_catalog.quote_ident(t.typname)",
+};
+
+/* Note: this intentionally accepts aggregates as well as plain functions */
+static const SchemaQuery Query_for_list_of_functions[] = {
+ {
+ .min_server_version = 110000,
+ .catname = "pg_catalog.pg_proc p",
+ .selcondition = "p.prokind != 'p'",
+ .viscondition = "pg_catalog.pg_function_is_visible(p.oid)",
+ .namespace = "p.pronamespace",
+ .result = "pg_catalog.quote_ident(p.proname)",
+ },
+ {
+ .catname = "pg_catalog.pg_proc p",
+ .viscondition = "pg_catalog.pg_function_is_visible(p.oid)",
+ .namespace = "p.pronamespace",
+ .result = "pg_catalog.quote_ident(p.proname)",
+ }
+};
+
+static const SchemaQuery Query_for_list_of_procedures[] = {
+ {
+ .min_server_version = 110000,
+ .catname = "pg_catalog.pg_proc p",
+ .selcondition = "p.prokind = 'p'",
+ .viscondition = "pg_catalog.pg_function_is_visible(p.oid)",
+ .namespace = "p.pronamespace",
+ .result = "pg_catalog.quote_ident(p.proname)",
+ },
+ {
+ /* not supported in older versions */
+ .catname = NULL,
+ }
+};
+
+static const SchemaQuery Query_for_list_of_routines = {
+ .catname = "pg_catalog.pg_proc p",
+ .viscondition = "pg_catalog.pg_function_is_visible(p.oid)",
+ .namespace = "p.pronamespace",
+ .result = "pg_catalog.quote_ident(p.proname)",
+};
+
+static const SchemaQuery Query_for_list_of_sequences = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition = "c.relkind IN (" CppAsString2(RELKIND_SEQUENCE) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_foreign_tables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition = "c.relkind IN (" CppAsString2(RELKIND_FOREIGN_TABLE) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_tables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition =
+ "c.relkind IN (" CppAsString2(RELKIND_RELATION) ", "
+ CppAsString2(RELKIND_PARTITIONED_TABLE) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_partitioned_tables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition = "c.relkind IN (" CppAsString2(RELKIND_PARTITIONED_TABLE) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_views = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition = "c.relkind IN (" CppAsString2(RELKIND_VIEW) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_matviews = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition = "c.relkind IN (" CppAsString2(RELKIND_MATVIEW) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_indexes = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition =
+ "c.relkind IN (" CppAsString2(RELKIND_INDEX) ", "
+ CppAsString2(RELKIND_PARTITIONED_INDEX) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_partitioned_indexes = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition = "c.relkind = " CppAsString2(RELKIND_PARTITIONED_INDEX),
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+
+/* All relations */
+static const SchemaQuery Query_for_list_of_relations = {
+ .catname = "pg_catalog.pg_class c",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+/* partitioned relations */
+static const SchemaQuery Query_for_list_of_partitioned_relations = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition = "c.relkind IN (" CppAsString2(RELKIND_PARTITIONED_TABLE)
+ ", " CppAsString2(RELKIND_PARTITIONED_INDEX) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+static const SchemaQuery Query_for_list_of_operator_families = {
+ .catname = "pg_catalog.pg_opfamily c",
+ .viscondition = "pg_catalog.pg_opfamily_is_visible(c.oid)",
+ .namespace = "c.opfnamespace",
+ .result = "pg_catalog.quote_ident(c.opfname)",
+};
+
+/* Relations supporting INSERT, UPDATE or DELETE */
+static const SchemaQuery Query_for_list_of_updatables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition =
+ "c.relkind IN (" CppAsString2(RELKIND_RELATION) ", "
+ CppAsString2(RELKIND_FOREIGN_TABLE) ", "
+ CppAsString2(RELKIND_VIEW) ", "
+ CppAsString2(RELKIND_PARTITIONED_TABLE) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+/* Relations supporting SELECT */
+static const SchemaQuery Query_for_list_of_selectables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition =
+ "c.relkind IN (" CppAsString2(RELKIND_RELATION) ", "
+ CppAsString2(RELKIND_SEQUENCE) ", "
+ CppAsString2(RELKIND_VIEW) ", "
+ CppAsString2(RELKIND_MATVIEW) ", "
+ CppAsString2(RELKIND_FOREIGN_TABLE) ", "
+ CppAsString2(RELKIND_PARTITIONED_TABLE) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+/* Relations supporting GRANT are currently same as those supporting SELECT */
+#define Query_for_list_of_grantables Query_for_list_of_selectables
+
+/* Relations supporting ANALYZE */
+static const SchemaQuery Query_for_list_of_analyzables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition =
+ "c.relkind IN (" CppAsString2(RELKIND_RELATION) ", "
+ CppAsString2(RELKIND_PARTITIONED_TABLE) ", "
+ CppAsString2(RELKIND_MATVIEW) ", "
+ CppAsString2(RELKIND_FOREIGN_TABLE) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+/* Relations supporting index creation */
+static const SchemaQuery Query_for_list_of_indexables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition =
+ "c.relkind IN (" CppAsString2(RELKIND_RELATION) ", "
+ CppAsString2(RELKIND_PARTITIONED_TABLE) ", "
+ CppAsString2(RELKIND_MATVIEW) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+/* Relations supporting VACUUM */
+static const SchemaQuery Query_for_list_of_vacuumables = {
+ .catname = "pg_catalog.pg_class c",
+ .selcondition =
+ "c.relkind IN (" CppAsString2(RELKIND_RELATION) ", "
+ CppAsString2(RELKIND_MATVIEW) ")",
+ .viscondition = "pg_catalog.pg_table_is_visible(c.oid)",
+ .namespace = "c.relnamespace",
+ .result = "pg_catalog.quote_ident(c.relname)",
+};
+
+/* Relations supporting CLUSTER are currently same as those supporting VACUUM */
+#define Query_for_list_of_clusterables Query_for_list_of_vacuumables
+
+static const SchemaQuery Query_for_list_of_constraints_with_schema = {
+ .catname = "pg_catalog.pg_constraint c",
+ .selcondition = "c.conrelid <> 0",
+ .viscondition = "true", /* there is no pg_constraint_is_visible */
+ .namespace = "c.connamespace",
+ .result = "pg_catalog.quote_ident(c.conname)",
+};
+
+static const SchemaQuery Query_for_list_of_statistics = {
+ .catname = "pg_catalog.pg_statistic_ext s",
+ .viscondition = "pg_catalog.pg_statistics_obj_is_visible(s.oid)",
+ .namespace = "s.stxnamespace",
+ .result = "pg_catalog.quote_ident(s.stxname)",
+};
+
+
+/*
+ * Queries to get lists of names of various kinds of things, possibly
+ * restricted to names matching a partially entered name. In these queries,
+ * the first %s will be replaced by the text entered so far (suitably escaped
+ * to become a SQL literal string). %d will be replaced by the length of the
+ * string (in unescaped form). A second and third %s, if present, will be
+ * replaced by a suitably-escaped version of the string provided in
+ * completion_info_charp. A fourth and fifth %s are similarly replaced by
+ * completion_info_charp2.
+ *
+ * Beware that the allowed sequences of %s and %d are determined by
+ * _complete_from_query().
+ */
+
+#define Query_for_list_of_attributes \
+"SELECT pg_catalog.quote_ident(attname) "\
+" FROM pg_catalog.pg_attribute a, pg_catalog.pg_class c "\
+" WHERE c.oid = a.attrelid "\
+" AND a.attnum > 0 "\
+" AND NOT a.attisdropped "\
+" AND substring(pg_catalog.quote_ident(attname),1,%d)='%s' "\
+" AND (pg_catalog.quote_ident(relname)='%s' "\
+" OR '\"' || relname || '\"'='%s') "\
+" AND pg_catalog.pg_table_is_visible(c.oid)"
+
+#define Query_for_list_of_attribute_numbers \
+"SELECT attnum "\
+" FROM pg_catalog.pg_attribute a, pg_catalog.pg_class c "\
+" WHERE c.oid = a.attrelid "\
+" AND a.attnum > 0 "\
+" AND NOT a.attisdropped "\
+" AND substring(attnum::pg_catalog.text,1,%d)='%s' "\
+" AND (pg_catalog.quote_ident(relname)='%s' "\
+" OR '\"' || relname || '\"'='%s') "\
+" AND pg_catalog.pg_table_is_visible(c.oid)"
+
+#define Query_for_list_of_attributes_with_schema \
+"SELECT pg_catalog.quote_ident(attname) "\
+" FROM pg_catalog.pg_attribute a, pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
+" WHERE c.oid = a.attrelid "\
+" AND n.oid = c.relnamespace "\
+" AND a.attnum > 0 "\
+" AND NOT a.attisdropped "\
+" AND substring(pg_catalog.quote_ident(attname),1,%d)='%s' "\
+" AND (pg_catalog.quote_ident(relname)='%s' "\
+" OR '\"' || relname || '\"' ='%s') "\
+" AND (pg_catalog.quote_ident(nspname)='%s' "\
+" OR '\"' || nspname || '\"' ='%s') "
+
+#define Query_for_list_of_enum_values \
+"SELECT pg_catalog.quote_literal(enumlabel) "\
+" FROM pg_catalog.pg_enum e, pg_catalog.pg_type t "\
+" WHERE t.oid = e.enumtypid "\
+" AND substring(pg_catalog.quote_literal(enumlabel),1,%d)='%s' "\
+" AND (pg_catalog.quote_ident(typname)='%s' "\
+" OR '\"' || typname || '\"'='%s') "\
+" AND pg_catalog.pg_type_is_visible(t.oid)"
+
+#define Query_for_list_of_enum_values_with_schema \
+"SELECT pg_catalog.quote_literal(enumlabel) "\
+" FROM pg_catalog.pg_enum e, pg_catalog.pg_type t, pg_catalog.pg_namespace n "\
+" WHERE t.oid = e.enumtypid "\
+" AND n.oid = t.typnamespace "\
+" AND substring(pg_catalog.quote_literal(enumlabel),1,%d)='%s' "\
+" AND (pg_catalog.quote_ident(typname)='%s' "\
+" OR '\"' || typname || '\"'='%s') "\
+" AND (pg_catalog.quote_ident(nspname)='%s' "\
+" OR '\"' || nspname || '\"' ='%s') "
+
+#define Query_for_list_of_template_databases \
+"SELECT pg_catalog.quote_ident(d.datname) "\
+" FROM pg_catalog.pg_database d "\
+" WHERE substring(pg_catalog.quote_ident(d.datname),1,%d)='%s' "\
+" AND (d.datistemplate OR pg_catalog.pg_has_role(d.datdba, 'USAGE'))"
+
+#define Query_for_list_of_databases \
+"SELECT pg_catalog.quote_ident(datname) FROM pg_catalog.pg_database "\
+" WHERE substring(pg_catalog.quote_ident(datname),1,%d)='%s'"
+
+#define Query_for_list_of_tablespaces \
+"SELECT pg_catalog.quote_ident(spcname) FROM pg_catalog.pg_tablespace "\
+" WHERE substring(pg_catalog.quote_ident(spcname),1,%d)='%s'"
+
+#define Query_for_list_of_encodings \
+" SELECT DISTINCT pg_catalog.pg_encoding_to_char(conforencoding) "\
+" FROM pg_catalog.pg_conversion "\
+" WHERE substring(pg_catalog.pg_encoding_to_char(conforencoding),1,%d)=UPPER('%s')"
+
+#define Query_for_list_of_languages \
+"SELECT pg_catalog.quote_ident(lanname) "\
+" FROM pg_catalog.pg_language "\
+" WHERE lanname != 'internal' "\
+" AND substring(pg_catalog.quote_ident(lanname),1,%d)='%s'"
+
+#define Query_for_list_of_schemas \
+"SELECT pg_catalog.quote_ident(nspname) FROM pg_catalog.pg_namespace "\
+" WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s'"
+
+#define Query_for_list_of_alter_system_set_vars \
+"SELECT name FROM "\
+" (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\
+" WHERE context != 'internal' "\
+" UNION ALL SELECT 'all') ss "\
+" WHERE substring(name,1,%d)='%s'"
+
+#define Query_for_list_of_set_vars \
+"SELECT name FROM "\
+" (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\
+" WHERE context IN ('user', 'superuser') "\
+" UNION ALL SELECT 'constraints' "\
+" UNION ALL SELECT 'transaction' "\
+" UNION ALL SELECT 'session' "\
+" UNION ALL SELECT 'role' "\
+" UNION ALL SELECT 'tablespace' "\
+" UNION ALL SELECT 'all') ss "\
+" WHERE substring(name,1,%d)='%s'"
+
+#define Query_for_list_of_show_vars \
+"SELECT name FROM "\
+" (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\
+" UNION ALL SELECT 'session authorization' "\
+" UNION ALL SELECT 'all') ss "\
+" WHERE substring(name,1,%d)='%s'"
+
+#define Query_for_list_of_roles \
+" SELECT pg_catalog.quote_ident(rolname) "\
+" FROM pg_catalog.pg_roles "\
+" WHERE substring(pg_catalog.quote_ident(rolname),1,%d)='%s'"
+
+#define Query_for_list_of_grant_roles \
+" SELECT pg_catalog.quote_ident(rolname) "\
+" FROM pg_catalog.pg_roles "\
+" WHERE substring(pg_catalog.quote_ident(rolname),1,%d)='%s'"\
+" UNION ALL SELECT 'PUBLIC'"\
+" UNION ALL SELECT 'CURRENT_USER'"\
+" UNION ALL SELECT 'SESSION_USER'"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_index_of_table \
+"SELECT pg_catalog.quote_ident(c2.relname) "\
+" FROM pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_index i"\
+" WHERE c1.oid=i.indrelid and i.indexrelid=c2.oid"\
+" and (%d = pg_catalog.length('%s'))"\
+" and pg_catalog.quote_ident(c1.relname)='%s'"\
+" and pg_catalog.pg_table_is_visible(c2.oid)"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_constraint_of_table \
+"SELECT pg_catalog.quote_ident(conname) "\
+" FROM pg_catalog.pg_class c1, pg_catalog.pg_constraint con "\
+" WHERE c1.oid=conrelid and (%d = pg_catalog.length('%s'))"\
+" and pg_catalog.quote_ident(c1.relname)='%s'"\
+" and pg_catalog.pg_table_is_visible(c1.oid)"
+
+#define Query_for_all_table_constraints \
+"SELECT pg_catalog.quote_ident(conname) "\
+" FROM pg_catalog.pg_constraint c "\
+" WHERE c.conrelid <> 0 "
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_constraint_of_type \
+"SELECT pg_catalog.quote_ident(conname) "\
+" FROM pg_catalog.pg_type t, pg_catalog.pg_constraint con "\
+" WHERE t.oid=contypid and (%d = pg_catalog.length('%s'))"\
+" and pg_catalog.quote_ident(t.typname)='%s'"\
+" and pg_catalog.pg_type_is_visible(t.oid)"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_tables_for_constraint \
+"SELECT pg_catalog.quote_ident(relname) "\
+" FROM pg_catalog.pg_class"\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND oid IN "\
+" (SELECT conrelid FROM pg_catalog.pg_constraint "\
+" WHERE pg_catalog.quote_ident(conname)='%s')"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_rule_of_table \
+"SELECT pg_catalog.quote_ident(rulename) "\
+" FROM pg_catalog.pg_class c1, pg_catalog.pg_rewrite "\
+" WHERE c1.oid=ev_class and (%d = pg_catalog.length('%s'))"\
+" and pg_catalog.quote_ident(c1.relname)='%s'"\
+" and pg_catalog.pg_table_is_visible(c1.oid)"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_tables_for_rule \
+"SELECT pg_catalog.quote_ident(relname) "\
+" FROM pg_catalog.pg_class"\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND oid IN "\
+" (SELECT ev_class FROM pg_catalog.pg_rewrite "\
+" WHERE pg_catalog.quote_ident(rulename)='%s')"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_trigger_of_table \
+"SELECT pg_catalog.quote_ident(tgname) "\
+" FROM pg_catalog.pg_class c1, pg_catalog.pg_trigger "\
+" WHERE c1.oid=tgrelid and (%d = pg_catalog.length('%s'))"\
+" and pg_catalog.quote_ident(c1.relname)='%s'"\
+" and pg_catalog.pg_table_is_visible(c1.oid)"\
+" and not tgisinternal"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_tables_for_trigger \
+"SELECT pg_catalog.quote_ident(relname) "\
+" FROM pg_catalog.pg_class"\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND oid IN "\
+" (SELECT tgrelid FROM pg_catalog.pg_trigger "\
+" WHERE pg_catalog.quote_ident(tgname)='%s')"
+
+#define Query_for_list_of_ts_configurations \
+"SELECT pg_catalog.quote_ident(cfgname) FROM pg_catalog.pg_ts_config "\
+" WHERE substring(pg_catalog.quote_ident(cfgname),1,%d)='%s'"
+
+#define Query_for_list_of_ts_dictionaries \
+"SELECT pg_catalog.quote_ident(dictname) FROM pg_catalog.pg_ts_dict "\
+" WHERE substring(pg_catalog.quote_ident(dictname),1,%d)='%s'"
+
+#define Query_for_list_of_ts_parsers \
+"SELECT pg_catalog.quote_ident(prsname) FROM pg_catalog.pg_ts_parser "\
+" WHERE substring(pg_catalog.quote_ident(prsname),1,%d)='%s'"
+
+#define Query_for_list_of_ts_templates \
+"SELECT pg_catalog.quote_ident(tmplname) FROM pg_catalog.pg_ts_template "\
+" WHERE substring(pg_catalog.quote_ident(tmplname),1,%d)='%s'"
+
+#define Query_for_list_of_fdws \
+" SELECT pg_catalog.quote_ident(fdwname) "\
+" FROM pg_catalog.pg_foreign_data_wrapper "\
+" WHERE substring(pg_catalog.quote_ident(fdwname),1,%d)='%s'"
+
+#define Query_for_list_of_servers \
+" SELECT pg_catalog.quote_ident(srvname) "\
+" FROM pg_catalog.pg_foreign_server "\
+" WHERE substring(pg_catalog.quote_ident(srvname),1,%d)='%s'"
+
+#define Query_for_list_of_user_mappings \
+" SELECT pg_catalog.quote_ident(usename) "\
+" FROM pg_catalog.pg_user_mappings "\
+" WHERE substring(pg_catalog.quote_ident(usename),1,%d)='%s'"
+
+#define Query_for_list_of_access_methods \
+" SELECT pg_catalog.quote_ident(amname) "\
+" FROM pg_catalog.pg_am "\
+" WHERE substring(pg_catalog.quote_ident(amname),1,%d)='%s'"
+
+#define Query_for_list_of_index_access_methods \
+" SELECT pg_catalog.quote_ident(amname) "\
+" FROM pg_catalog.pg_am "\
+" WHERE substring(pg_catalog.quote_ident(amname),1,%d)='%s' AND "\
+" amtype=" CppAsString2(AMTYPE_INDEX)
+
+#define Query_for_list_of_table_access_methods \
+" SELECT pg_catalog.quote_ident(amname) "\
+" FROM pg_catalog.pg_am "\
+" WHERE substring(pg_catalog.quote_ident(amname),1,%d)='%s' AND "\
+" amtype=" CppAsString2(AMTYPE_TABLE)
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_arguments \
+"SELECT pg_catalog.oidvectortypes(proargtypes)||')' "\
+" FROM pg_catalog.pg_proc "\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND (pg_catalog.quote_ident(proname)='%s'"\
+" OR '\"' || proname || '\"'='%s') "\
+" AND (pg_catalog.pg_function_is_visible(pg_proc.oid))"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_arguments_with_schema \
+"SELECT pg_catalog.oidvectortypes(proargtypes)||')' "\
+" FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n "\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND n.oid = p.pronamespace "\
+" AND (pg_catalog.quote_ident(proname)='%s' "\
+" OR '\"' || proname || '\"' ='%s') "\
+" AND (pg_catalog.quote_ident(nspname)='%s' "\
+" OR '\"' || nspname || '\"' ='%s') "
+
+#define Query_for_list_of_extensions \
+" SELECT pg_catalog.quote_ident(extname) "\
+" FROM pg_catalog.pg_extension "\
+" WHERE substring(pg_catalog.quote_ident(extname),1,%d)='%s'"
+
+#define Query_for_list_of_available_extensions \
+" SELECT pg_catalog.quote_ident(name) "\
+" FROM pg_catalog.pg_available_extensions "\
+" WHERE substring(pg_catalog.quote_ident(name),1,%d)='%s' AND installed_version IS NULL"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_available_extension_versions \
+" SELECT pg_catalog.quote_ident(version) "\
+" FROM pg_catalog.pg_available_extension_versions "\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND pg_catalog.quote_ident(name)='%s'"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_available_extension_versions_with_TO \
+" SELECT 'TO ' || pg_catalog.quote_ident(version) "\
+" FROM pg_catalog.pg_available_extension_versions "\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND pg_catalog.quote_ident(name)='%s'"
+
+#define Query_for_list_of_prepared_statements \
+" SELECT pg_catalog.quote_ident(name) "\
+" FROM pg_catalog.pg_prepared_statements "\
+" WHERE substring(pg_catalog.quote_ident(name),1,%d)='%s'"
+
+#define Query_for_list_of_event_triggers \
+" SELECT pg_catalog.quote_ident(evtname) "\
+" FROM pg_catalog.pg_event_trigger "\
+" WHERE substring(pg_catalog.quote_ident(evtname),1,%d)='%s'"
+
+#define Query_for_list_of_tablesample_methods \
+" SELECT pg_catalog.quote_ident(proname) "\
+" FROM pg_catalog.pg_proc "\
+" WHERE prorettype = 'pg_catalog.tsm_handler'::pg_catalog.regtype AND "\
+" proargtypes[0] = 'pg_catalog.internal'::pg_catalog.regtype AND "\
+" substring(pg_catalog.quote_ident(proname),1,%d)='%s'"
+
+#define Query_for_list_of_policies \
+" SELECT pg_catalog.quote_ident(polname) "\
+" FROM pg_catalog.pg_policy "\
+" WHERE substring(pg_catalog.quote_ident(polname),1,%d)='%s'"
+
+#define Query_for_list_of_tables_for_policy \
+"SELECT pg_catalog.quote_ident(relname) "\
+" FROM pg_catalog.pg_class"\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND oid IN "\
+" (SELECT polrelid FROM pg_catalog.pg_policy "\
+" WHERE pg_catalog.quote_ident(polname)='%s')"
+
+#define Query_for_enum \
+" SELECT name FROM ( "\
+" SELECT pg_catalog.quote_ident(pg_catalog.unnest(enumvals)) AS name "\
+" FROM pg_catalog.pg_settings "\
+" WHERE pg_catalog.lower(name)=pg_catalog.lower('%s') "\
+" UNION ALL " \
+" SELECT 'DEFAULT' ) ss "\
+" WHERE pg_catalog.substring(name,1,%%d)='%%s'"
+
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_partition_of_table \
+"SELECT pg_catalog.quote_ident(c2.relname) "\
+" FROM pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_inherits i"\
+" WHERE c1.oid=i.inhparent and i.inhrelid=c2.oid"\
+" and (%d = pg_catalog.length('%s'))"\
+" and pg_catalog.quote_ident(c1.relname)='%s'"\
+" and pg_catalog.pg_table_is_visible(c2.oid)"\
+" and c2.relispartition = 'true'"
+
+/*
+ * These object types were introduced later than our support cutoff of
+ * server version 7.4. We use the VersionedQuery infrastructure so that
+ * we don't send certain-to-fail queries to older servers.
+ */
+
+static const VersionedQuery Query_for_list_of_publications[] = {
+ {100000,
+ " SELECT pg_catalog.quote_ident(pubname) "
+ " FROM pg_catalog.pg_publication "
+ " WHERE substring(pg_catalog.quote_ident(pubname),1,%d)='%s'"
+ },
+ {0, NULL}
+};
+
+static const VersionedQuery Query_for_list_of_subscriptions[] = {
+ {100000,
+ " SELECT pg_catalog.quote_ident(s.subname) "
+ " FROM pg_catalog.pg_subscription s, pg_catalog.pg_database d "
+ " WHERE substring(pg_catalog.quote_ident(s.subname),1,%d)='%s' "
+ " AND d.datname = pg_catalog.current_database() "
+ " AND s.subdbid = d.oid"
+ },
+ {0, NULL}
+};
+
+/*
+ * This is a list of all "things" in Pgsql, which can show up after CREATE or
+ * DROP; and there is also a query to get a list of them.
+ */
+
+typedef struct
+{
+ const char *name;
+ const char *query; /* simple query, or NULL */
+ const VersionedQuery *vquery; /* versioned query, or NULL */
+ const SchemaQuery *squery; /* schema query, or NULL */
+ const bits32 flags; /* visibility flags, see below */
+} pgsql_thing_t;
+
+#define THING_NO_CREATE (1 << 0) /* should not show up after CREATE */
+#define THING_NO_DROP (1 << 1) /* should not show up after DROP */
+#define THING_NO_ALTER (1 << 2) /* should not show up after ALTER */
+#define THING_NO_SHOW (THING_NO_CREATE | THING_NO_DROP | THING_NO_ALTER)
+
+static const pgsql_thing_t words_after_create[] = {
+ {"ACCESS METHOD", NULL, NULL, NULL, THING_NO_ALTER},
+ {"AGGREGATE", NULL, NULL, Query_for_list_of_aggregates},
+ {"CAST", NULL, NULL, NULL}, /* Casts have complex structures for names, so
+ * skip it */
+ {"COLLATION", "SELECT pg_catalog.quote_ident(collname) FROM pg_catalog.pg_collation WHERE collencoding IN (-1, pg_catalog.pg_char_to_encoding(pg_catalog.getdatabaseencoding())) AND substring(pg_catalog.quote_ident(collname),1,%d)='%s'"},
+
+ /*
+ * CREATE CONSTRAINT TRIGGER is not supported here because it is designed
+ * to be used only by pg_dump.
+ */
+ {"CONFIGURATION", Query_for_list_of_ts_configurations, NULL, NULL, THING_NO_SHOW},
+ {"CONVERSION", "SELECT pg_catalog.quote_ident(conname) FROM pg_catalog.pg_conversion WHERE substring(pg_catalog.quote_ident(conname),1,%d)='%s'"},
+ {"DATABASE", Query_for_list_of_databases},
+ {"DEFAULT PRIVILEGES", NULL, NULL, NULL, THING_NO_CREATE | THING_NO_DROP},
+ {"DICTIONARY", Query_for_list_of_ts_dictionaries, NULL, NULL, THING_NO_SHOW},
+ {"DOMAIN", NULL, NULL, &Query_for_list_of_domains},
+ {"EVENT TRIGGER", NULL, NULL, NULL},
+ {"EXTENSION", Query_for_list_of_extensions},
+ {"FOREIGN DATA WRAPPER", NULL, NULL, NULL},
+ {"FOREIGN TABLE", NULL, NULL, NULL},
+ {"FUNCTION", NULL, NULL, Query_for_list_of_functions},
+ {"GROUP", Query_for_list_of_roles},
+ {"INDEX", NULL, NULL, &Query_for_list_of_indexes},
+ {"LANGUAGE", Query_for_list_of_languages},
+ {"LARGE OBJECT", NULL, NULL, NULL, THING_NO_CREATE | THING_NO_DROP},
+ {"MATERIALIZED VIEW", NULL, NULL, &Query_for_list_of_matviews},
+ {"OPERATOR", NULL, NULL, NULL}, /* Querying for this is probably not such
+ * a good idea. */
+ {"OR REPLACE", NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER},
+ {"OWNED", NULL, NULL, NULL, THING_NO_CREATE | THING_NO_ALTER}, /* for DROP OWNED BY ... */
+ {"PARSER", Query_for_list_of_ts_parsers, NULL, NULL, THING_NO_SHOW},
+ {"POLICY", NULL, NULL, NULL},
+ {"PROCEDURE", NULL, NULL, Query_for_list_of_procedures},
+ {"PUBLICATION", NULL, Query_for_list_of_publications},
+ {"ROLE", Query_for_list_of_roles},
+ {"ROUTINE", NULL, NULL, &Query_for_list_of_routines, THING_NO_CREATE},
+ {"RULE", "SELECT pg_catalog.quote_ident(rulename) FROM pg_catalog.pg_rules WHERE substring(pg_catalog.quote_ident(rulename),1,%d)='%s'"},
+ {"SCHEMA", Query_for_list_of_schemas},
+ {"SEQUENCE", NULL, NULL, &Query_for_list_of_sequences},
+ {"SERVER", Query_for_list_of_servers},
+ {"STATISTICS", NULL, NULL, &Query_for_list_of_statistics},
+ {"SUBSCRIPTION", NULL, Query_for_list_of_subscriptions},
+ {"SYSTEM", NULL, NULL, NULL, THING_NO_CREATE | THING_NO_DROP},
+ {"TABLE", NULL, NULL, &Query_for_list_of_tables},
+ {"TABLESPACE", Query_for_list_of_tablespaces},
+ {"TEMP", NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE TEMP TABLE
+ * ... */
+ {"TEMPLATE", Query_for_list_of_ts_templates, NULL, NULL, THING_NO_SHOW},
+ {"TEMPORARY", NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE TEMPORARY
+ * TABLE ... */
+ {"TEXT SEARCH", NULL, NULL, NULL},
+ {"TRANSFORM", NULL, NULL, NULL},
+ {"TRIGGER", "SELECT pg_catalog.quote_ident(tgname) FROM pg_catalog.pg_trigger WHERE substring(pg_catalog.quote_ident(tgname),1,%d)='%s' AND NOT tgisinternal"},
+ {"TYPE", NULL, NULL, &Query_for_list_of_datatypes},
+ {"UNIQUE", NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE UNIQUE
+ * INDEX ... */
+ {"UNLOGGED", NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE UNLOGGED
+ * TABLE ... */
+ {"USER", Query_for_list_of_roles " UNION SELECT 'MAPPING FOR'"},
+ {"USER MAPPING FOR", NULL, NULL, NULL},
+ {"VIEW", NULL, NULL, &Query_for_list_of_views},
+ {NULL} /* end of list */
+};
+
+/* Storage parameters for CREATE TABLE and ALTER TABLE */
+static const char *const table_storage_parameters[] = {
+ "autovacuum_analyze_scale_factor",
+ "autovacuum_analyze_threshold",
+ "autovacuum_enabled",
+ "autovacuum_freeze_max_age",
+ "autovacuum_freeze_min_age",
+ "autovacuum_freeze_table_age",
+ "autovacuum_multixact_freeze_max_age",
+ "autovacuum_multixact_freeze_min_age",
+ "autovacuum_multixact_freeze_table_age",
+ "autovacuum_vacuum_cost_delay",
+ "autovacuum_vacuum_cost_limit",
+ "autovacuum_vacuum_insert_scale_factor",
+ "autovacuum_vacuum_insert_threshold",
+ "autovacuum_vacuum_scale_factor",
+ "autovacuum_vacuum_threshold",
+ "fillfactor",
+ "log_autovacuum_min_duration",
+ "parallel_workers",
+ "toast.autovacuum_enabled",
+ "toast.autovacuum_freeze_max_age",
+ "toast.autovacuum_freeze_min_age",
+ "toast.autovacuum_freeze_table_age",
+ "toast.autovacuum_multixact_freeze_max_age",
+ "toast.autovacuum_multixact_freeze_min_age",
+ "toast.autovacuum_multixact_freeze_table_age",
+ "toast.autovacuum_vacuum_cost_delay",
+ "toast.autovacuum_vacuum_cost_limit",
+ "toast.autovacuum_vacuum_insert_scale_factor",
+ "toast.autovacuum_vacuum_insert_threshold",
+ "toast.autovacuum_vacuum_scale_factor",
+ "toast.autovacuum_vacuum_threshold",
+ "toast.log_autovacuum_min_duration",
+ "toast.vacuum_index_cleanup",
+ "toast.vacuum_truncate",
+ "toast_tuple_target",
+ "user_catalog_table",
+ "vacuum_index_cleanup",
+ "vacuum_truncate",
+ NULL
+};
+
+
+/* Forward declaration of functions */
+static char **psql_completion(const char *text, int start, int end);
+static char *create_command_generator(const char *text, int state);
+static char *drop_command_generator(const char *text, int state);
+static char *alter_command_generator(const char *text, int state);
+static char *complete_from_query(const char *text, int state);
+static char *complete_from_versioned_query(const char *text, int state);
+static char *complete_from_schema_query(const char *text, int state);
+static char *complete_from_versioned_schema_query(const char *text, int state);
+static char *_complete_from_query(const char *simple_query,
+ const SchemaQuery *schema_query,
+ const char *text, int state);
+static char *complete_from_list(const char *text, int state);
+static char *complete_from_const(const char *text, int state);
+static void append_variable_names(char ***varnames, int *nvars,
+ int *maxvars, const char *varname,
+ const char *prefix, const char *suffix);
+static char **complete_from_variables(const char *text,
+ const char *prefix, const char *suffix, bool need_value);
+static char *complete_from_files(const char *text, int state);
+
+static char *pg_strdup_keyword_case(const char *s, const char *ref);
+static char *escape_string(const char *text);
+static PGresult *exec_query(const char *query);
+
+static char **get_previous_words(int point, char **buffer, int *nwords);
+
+static char *get_guctype(const char *varname);
+
+#ifdef USE_FILENAME_QUOTING_FUNCTIONS
+static char *quote_file_name(char *fname, int match_type, char *quote_pointer);
+static char *dequote_file_name(char *fname, int quote_char);
+#endif
+
+
+/*
+ * Initialize the readline library for our purposes.
+ */
+void
+initialize_readline(void)
+{
+ rl_readline_name = (char *) pset.progname;
+ rl_attempted_completion_function = psql_completion;
+
+#ifdef USE_FILENAME_QUOTING_FUNCTIONS
+ rl_filename_quoting_function = quote_file_name;
+ rl_filename_dequoting_function = dequote_file_name;
+#endif
+
+ rl_basic_word_break_characters = WORD_BREAKS;
+
+ /*
+ * We should include '"' in rl_completer_quote_characters too, but that
+ * will require some upgrades to how we handle quoted identifiers, so
+ * that's for another day.
+ */
+ rl_completer_quote_characters = "'";
+
+ /*
+ * Set rl_filename_quote_characters to "all possible characters",
+ * otherwise Readline will skip filename quoting if it thinks a filename
+ * doesn't need quoting. Readline actually interprets this as bytes, so
+ * there are no encoding considerations here.
+ */
+#ifdef HAVE_RL_FILENAME_QUOTE_CHARACTERS
+ {
+ unsigned char *fqc = (unsigned char *) pg_malloc(256);
+
+ for (int i = 0; i < 255; i++)
+ fqc[i] = (unsigned char) (i + 1);
+ fqc[255] = '\0';
+ rl_filename_quote_characters = (const char *) fqc;
+ }
+#endif
+
+ completion_max_records = 1000;
+
+ /*
+ * There is a variable rl_completion_query_items for this but apparently
+ * it's not defined everywhere.
+ */
+}
+
+/*
+ * Check if 'word' matches any of the '|'-separated strings in 'pattern',
+ * using case-insensitive or case-sensitive comparisons.
+ *
+ * If pattern is NULL, it's a wild card that matches any word.
+ * If pattern begins with '!', the result is negated, ie we check that 'word'
+ * does *not* match any alternative appearing in the rest of 'pattern'.
+ * Any alternative can contain '*' which is a wild card, i.e., it can match
+ * any substring; however, we allow at most one '*' per alternative.
+ *
+ * For readability, callers should use the macros MatchAny and MatchAnyExcept
+ * to invoke those two special cases for 'pattern'. (But '|' and '*' must
+ * just be written directly in patterns.)
+ */
+#define MatchAny NULL
+#define MatchAnyExcept(pattern) ("!" pattern)
+
+static bool
+word_matches(const char *pattern,
+ const char *word,
+ bool case_sensitive)
+{
+ size_t wordlen;
+
+#define cimatch(s1, s2, n) \
+ (case_sensitive ? strncmp(s1, s2, n) == 0 : pg_strncasecmp(s1, s2, n) == 0)
+
+ /* NULL pattern matches anything. */
+ if (pattern == NULL)
+ return true;
+
+ /* Handle negated patterns from the MatchAnyExcept macro. */
+ if (*pattern == '!')
+ return !word_matches(pattern + 1, word, case_sensitive);
+
+ /* Else consider each alternative in the pattern. */
+ wordlen = strlen(word);
+ for (;;)
+ {
+ const char *star = NULL;
+ const char *c;
+
+ /* Find end of current alternative, and locate any wild card. */
+ c = pattern;
+ while (*c != '\0' && *c != '|')
+ {
+ if (*c == '*')
+ star = c;
+ c++;
+ }
+ /* Was there a wild card? */
+ if (star)
+ {
+ /* Yes, wildcard match? */
+ size_t beforelen = star - pattern,
+ afterlen = c - star - 1;
+
+ if (wordlen >= (beforelen + afterlen) &&
+ cimatch(word, pattern, beforelen) &&
+ cimatch(word + wordlen - afterlen, star + 1, afterlen))
+ return true;
+ }
+ else
+ {
+ /* No, plain match? */
+ if (wordlen == (c - pattern) &&
+ cimatch(word, pattern, wordlen))
+ return true;
+ }
+ /* Out of alternatives? */
+ if (*c == '\0')
+ break;
+ /* Nope, try next alternative. */
+ pattern = c + 1;
+ }
+
+ return false;
+}
+
+/*
+ * Implementation of TailMatches and TailMatchesCS macros: do the last N words
+ * in previous_words match the variadic arguments?
+ *
+ * The array indexing might look backwards, but remember that
+ * previous_words[0] contains the *last* word on the line, not the first.
+ */
+static bool
+TailMatchesImpl(bool case_sensitive,
+ int previous_words_count, char **previous_words,
+ int narg,...)
+{
+ va_list args;
+
+ if (previous_words_count < narg)
+ return false;
+
+ va_start(args, narg);
+
+ for (int argno = 0; argno < narg; argno++)
+ {
+ const char *arg = va_arg(args, const char *);
+
+ if (!word_matches(arg, previous_words[narg - argno - 1],
+ case_sensitive))
+ {
+ va_end(args);
+ return false;
+ }
+ }
+
+ va_end(args);
+
+ return true;
+}
+
+/*
+ * Implementation of Matches and MatchesCS macros: do all of the words
+ * in previous_words match the variadic arguments?
+ */
+static bool
+MatchesImpl(bool case_sensitive,
+ int previous_words_count, char **previous_words,
+ int narg,...)
+{
+ va_list args;
+
+ if (previous_words_count != narg)
+ return false;
+
+ va_start(args, narg);
+
+ for (int argno = 0; argno < narg; argno++)
+ {
+ const char *arg = va_arg(args, const char *);
+
+ if (!word_matches(arg, previous_words[narg - argno - 1],
+ case_sensitive))
+ {
+ va_end(args);
+ return false;
+ }
+ }
+
+ va_end(args);
+
+ return true;
+}
+
+/*
+ * Implementation of HeadMatches and HeadMatchesCS macros: do the first N
+ * words in previous_words match the variadic arguments?
+ */
+static bool
+HeadMatchesImpl(bool case_sensitive,
+ int previous_words_count, char **previous_words,
+ int narg,...)
+{
+ va_list args;
+
+ if (previous_words_count < narg)
+ return false;
+
+ va_start(args, narg);
+
+ for (int argno = 0; argno < narg; argno++)
+ {
+ const char *arg = va_arg(args, const char *);
+
+ if (!word_matches(arg, previous_words[previous_words_count - argno - 1],
+ case_sensitive))
+ {
+ va_end(args);
+ return false;
+ }
+ }
+
+ va_end(args);
+
+ return true;
+}
+
+/*
+ * Check if the final character of 's' is 'c'.
+ */
+static bool
+ends_with(const char *s, char c)
+{
+ size_t length = strlen(s);
+
+ return (length > 0 && s[length - 1] == c);
+}
+
+/*
+ * The completion function.
+ *
+ * According to readline spec this gets passed the text entered so far and its
+ * start and end positions in the readline buffer. The return value is some
+ * partially obscure list format that can be generated by readline's
+ * rl_completion_matches() function, so we don't have to worry about it.
+ */
+static char **
+psql_completion(const char *text, int start, int end)
+{
+ /* This is the variable we'll return. */
+ char **matches = NULL;
+
+ /* Workspace for parsed words. */
+ char *words_buffer;
+
+ /* This array will contain pointers to parsed words. */
+ char **previous_words;
+
+ /* The number of words found on the input line. */
+ int previous_words_count;
+
+ /*
+ * For compactness, we use these macros to reference previous_words[].
+ * Caution: do not access a previous_words[] entry without having checked
+ * previous_words_count to be sure it's valid. In most cases below, that
+ * check is implicit in a TailMatches() or similar macro, but in some
+ * places we have to check it explicitly.
+ */
+#define prev_wd (previous_words[0])
+#define prev2_wd (previous_words[1])
+#define prev3_wd (previous_words[2])
+#define prev4_wd (previous_words[3])
+#define prev5_wd (previous_words[4])
+#define prev6_wd (previous_words[5])
+#define prev7_wd (previous_words[6])
+#define prev8_wd (previous_words[7])
+#define prev9_wd (previous_words[8])
+
+ /* Match the last N words before point, case-insensitively. */
+#define TailMatches(...) \
+ TailMatchesImpl(false, previous_words_count, previous_words, \
+ VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
+
+ /* Match the last N words before point, case-sensitively. */
+#define TailMatchesCS(...) \
+ TailMatchesImpl(true, previous_words_count, previous_words, \
+ VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
+
+ /* Match N words representing all of the line, case-insensitively. */
+#define Matches(...) \
+ MatchesImpl(false, previous_words_count, previous_words, \
+ VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
+
+ /* Match N words representing all of the line, case-sensitively. */
+#define MatchesCS(...) \
+ MatchesImpl(true, previous_words_count, previous_words, \
+ VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
+
+ /* Match the first N words on the line, case-insensitively. */
+#define HeadMatches(...) \
+ HeadMatchesImpl(false, previous_words_count, previous_words, \
+ VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
+
+ /* Match the first N words on the line, case-sensitively. */
+#define HeadMatchesCS(...) \
+ HeadMatchesImpl(true, previous_words_count, previous_words, \
+ VA_ARGS_NARGS(__VA_ARGS__), __VA_ARGS__)
+
+ /* Known command-starting keywords. */
+ static const char *const sql_commands[] = {
+ "ABORT", "ALTER", "ANALYZE", "BEGIN", "CALL", "CHECKPOINT", "CLOSE", "CLUSTER",
+ "COMMENT", "COMMIT", "COPY", "CREATE", "DEALLOCATE", "DECLARE",
+ "DELETE FROM", "DISCARD", "DO", "DROP", "END", "EXECUTE", "EXPLAIN",
+ "FETCH", "GRANT", "IMPORT", "INSERT", "LISTEN", "LOAD", "LOCK",
+ "MOVE", "NOTIFY", "PREPARE",
+ "REASSIGN", "REFRESH MATERIALIZED VIEW", "REINDEX", "RELEASE",
+ "RESET", "REVOKE", "ROLLBACK",
+ "SAVEPOINT", "SECURITY LABEL", "SELECT", "SET", "SHOW", "START",
+ "TABLE", "TRUNCATE", "UNLISTEN", "UPDATE", "VACUUM", "VALUES", "WITH",
+ NULL
+ };
+
+ /* psql's backslash commands. */
+ static const char *const backslash_commands[] = {
+ "\\a",
+ "\\connect", "\\conninfo", "\\C", "\\cd", "\\copy",
+ "\\copyright", "\\crosstabview",
+ "\\d", "\\da", "\\dA", "\\dAc", "\\dAf", "\\dAo", "\\dAp",
+ "\\db", "\\dc", "\\dC", "\\dd", "\\ddp", "\\dD",
+ "\\des", "\\det", "\\deu", "\\dew", "\\dE", "\\df",
+ "\\dF", "\\dFd", "\\dFp", "\\dFt", "\\dg", "\\di", "\\dl", "\\dL",
+ "\\dm", "\\dn", "\\do", "\\dO", "\\dp", "\\dP", "\\dPi", "\\dPt",
+ "\\drds", "\\dRs", "\\dRp", "\\ds", "\\dS",
+ "\\dt", "\\dT", "\\dv", "\\du", "\\dx", "\\dy",
+ "\\e", "\\echo", "\\ef", "\\elif", "\\else", "\\encoding",
+ "\\endif", "\\errverbose", "\\ev",
+ "\\f",
+ "\\g", "\\gdesc", "\\gexec", "\\gset", "\\gx",
+ "\\h", "\\help", "\\H",
+ "\\i", "\\if", "\\ir",
+ "\\l", "\\lo_import", "\\lo_export", "\\lo_list", "\\lo_unlink",
+ "\\o",
+ "\\p", "\\password", "\\prompt", "\\pset",
+ "\\q", "\\qecho",
+ "\\r",
+ "\\s", "\\set", "\\setenv", "\\sf", "\\sv",
+ "\\t", "\\T", "\\timing",
+ "\\unset",
+ "\\x",
+ "\\w", "\\warn", "\\watch",
+ "\\z",
+ "\\!", "\\?",
+ NULL
+ };
+
+ /*
+ * Temporary workaround for a bug in recent (2019) libedit: it incorrectly
+ * de-escapes the input "text", causing us to fail to recognize backslash
+ * commands. So get the string to look at from rl_line_buffer instead.
+ */
+ char *text_copy = pnstrdup(rl_line_buffer + start, end - start);
+ text = text_copy;
+
+ /* Remember last char of the given input word. */
+ completion_last_char = (end > start) ? text[end - start - 1] : '\0';
+
+ /* We usually want the append character to be a space. */
+#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
+ rl_completion_append_character = ' ';
+#endif
+
+ /* Clear a few things. */
+ completion_charp = NULL;
+ completion_charpp = NULL;
+ completion_info_charp = NULL;
+ completion_info_charp2 = NULL;
+
+ /*
+ * Scan the input line to extract the words before our current position.
+ * According to those we'll make some smart decisions on what the user is
+ * probably intending to type.
+ */
+ previous_words = get_previous_words(start,
+ &words_buffer,
+ &previous_words_count);
+
+ /* If current word is a backslash command, offer completions for that */
+ if (text[0] == '\\')
+ COMPLETE_WITH_LIST_CS(backslash_commands);
+
+ /* If current word is a variable interpolation, handle that case */
+ else if (text[0] == ':' && text[1] != ':')
+ {
+ if (text[1] == '\'')
+ matches = complete_from_variables(text, ":'", "'", true);
+ else if (text[1] == '"')
+ matches = complete_from_variables(text, ":\"", "\"", true);
+ else
+ matches = complete_from_variables(text, ":", "", true);
+ }
+
+ /* If no previous word, suggest one of the basic sql commands */
+ else if (previous_words_count == 0)
+ COMPLETE_WITH_LIST(sql_commands);
+
+/* CREATE */
+ /* complete with something you can create */
+ else if (TailMatches("CREATE"))
+ matches = rl_completion_matches(text, create_command_generator);
+
+ /* complete with something you can create or replace */
+ else if (TailMatches("CREATE", "OR", "REPLACE"))
+ COMPLETE_WITH("FUNCTION", "PROCEDURE", "LANGUAGE", "RULE", "VIEW",
+ "AGGREGATE", "TRANSFORM");
+
+/* DROP, but not DROP embedded in other commands */
+ /* complete with something you can drop */
+ else if (Matches("DROP"))
+ matches = rl_completion_matches(text, drop_command_generator);
+
+/* ALTER */
+
+ /* ALTER TABLE */
+ else if (Matches("ALTER", "TABLE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,
+ "UNION SELECT 'ALL IN TABLESPACE'");
+
+ /* ALTER something */
+ else if (Matches("ALTER"))
+ matches = rl_completion_matches(text, alter_command_generator);
+ /* ALTER TABLE,INDEX,MATERIALIZED VIEW ALL IN TABLESPACE xxx */
+ else if (TailMatches("ALL", "IN", "TABLESPACE", MatchAny))
+ COMPLETE_WITH("SET TABLESPACE", "OWNED BY");
+ /* ALTER TABLE,INDEX,MATERIALIZED VIEW ALL IN TABLESPACE xxx OWNED BY */
+ else if (TailMatches("ALL", "IN", "TABLESPACE", MatchAny, "OWNED", "BY"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+ /* ALTER TABLE,INDEX,MATERIALIZED VIEW ALL IN TABLESPACE xxx OWNED BY xxx */
+ else if (TailMatches("ALL", "IN", "TABLESPACE", MatchAny, "OWNED", "BY", MatchAny))
+ COMPLETE_WITH("SET TABLESPACE");
+ /* ALTER AGGREGATE,FUNCTION,PROCEDURE,ROUTINE <name> */
+ else if (Matches("ALTER", "AGGREGATE|FUNCTION|PROCEDURE|ROUTINE", MatchAny))
+ COMPLETE_WITH("(");
+ /* ALTER AGGREGATE,FUNCTION,PROCEDURE,ROUTINE <name> (...) */
+ else if (Matches("ALTER", "AGGREGATE|FUNCTION|PROCEDURE|ROUTINE", MatchAny, MatchAny))
+ {
+ if (ends_with(prev_wd, ')'))
+ COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA");
+ else
+ COMPLETE_WITH_FUNCTION_ARG(prev2_wd);
+ }
+ /* ALTER PUBLICATION <name> */
+ else if (Matches("ALTER", "PUBLICATION", MatchAny))
+ COMPLETE_WITH("ADD TABLE", "DROP TABLE", "OWNER TO", "RENAME TO", "SET");
+ /* ALTER PUBLICATION <name> SET */
+ else if (Matches("ALTER", "PUBLICATION", MatchAny, "SET"))
+ COMPLETE_WITH("(", "TABLE");
+ /* ALTER PUBLICATION <name> SET ( */
+ else if (HeadMatches("ALTER", "PUBLICATION", MatchAny) && TailMatches("SET", "("))
+ COMPLETE_WITH("publish");
+ /* ALTER SUBSCRIPTION <name> */
+ else if (Matches("ALTER", "SUBSCRIPTION", MatchAny))
+ COMPLETE_WITH("CONNECTION", "ENABLE", "DISABLE", "OWNER TO",
+ "RENAME TO", "REFRESH PUBLICATION", "SET");
+ /* ALTER SUBSCRIPTION <name> REFRESH PUBLICATION */
+ else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) &&
+ TailMatches("REFRESH", "PUBLICATION"))
+ COMPLETE_WITH("WITH (");
+ /* ALTER SUBSCRIPTION <name> REFRESH PUBLICATION WITH ( */
+ else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) &&
+ TailMatches("REFRESH", "PUBLICATION", "WITH", "("))
+ COMPLETE_WITH("copy_data");
+ /* ALTER SUBSCRIPTION <name> SET */
+ else if (Matches("ALTER", "SUBSCRIPTION", MatchAny, "SET"))
+ COMPLETE_WITH("(", "PUBLICATION");
+ /* ALTER SUBSCRIPTION <name> SET ( */
+ else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches("SET", "("))
+ COMPLETE_WITH("slot_name", "synchronous_commit");
+ /* ALTER SUBSCRIPTION <name> SET PUBLICATION */
+ else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches("SET", "PUBLICATION"))
+ {
+ /* complete with nothing here as this refers to remote publications */
+ }
+ /* ALTER SUBSCRIPTION <name> SET PUBLICATION <name> */
+ else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) &&
+ TailMatches("SET", "PUBLICATION", MatchAny))
+ COMPLETE_WITH("WITH (");
+ /* ALTER SUBSCRIPTION <name> SET PUBLICATION <name> WITH ( */
+ else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) &&
+ TailMatches("SET", "PUBLICATION", MatchAny, "WITH", "("))
+ COMPLETE_WITH("copy_data", "refresh");
+ /* ALTER SCHEMA <name> */
+ else if (Matches("ALTER", "SCHEMA", MatchAny))
+ COMPLETE_WITH("OWNER TO", "RENAME TO");
+
+ /* ALTER COLLATION <name> */
+ else if (Matches("ALTER", "COLLATION", MatchAny))
+ COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA");
+
+ /* ALTER CONVERSION <name> */
+ else if (Matches("ALTER", "CONVERSION", MatchAny))
+ COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA");
+
+ /* ALTER DATABASE <name> */
+ else if (Matches("ALTER", "DATABASE", MatchAny))
+ COMPLETE_WITH("RESET", "SET", "OWNER TO", "RENAME TO",
+ "IS_TEMPLATE", "ALLOW_CONNECTIONS",
+ "CONNECTION LIMIT");
+
+ /* ALTER DATABASE <name> SET TABLESPACE */
+ else if (Matches("ALTER", "DATABASE", MatchAny, "SET", "TABLESPACE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces);
+
+ /* ALTER EVENT TRIGGER */
+ else if (Matches("ALTER", "EVENT", "TRIGGER"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
+
+ /* ALTER EVENT TRIGGER <name> */
+ else if (Matches("ALTER", "EVENT", "TRIGGER", MatchAny))
+ COMPLETE_WITH("DISABLE", "ENABLE", "OWNER TO", "RENAME TO");
+
+ /* ALTER EVENT TRIGGER <name> ENABLE */
+ else if (Matches("ALTER", "EVENT", "TRIGGER", MatchAny, "ENABLE"))
+ COMPLETE_WITH("REPLICA", "ALWAYS");
+
+ /* ALTER EXTENSION <name> */
+ else if (Matches("ALTER", "EXTENSION", MatchAny))
+ COMPLETE_WITH("ADD", "DROP", "UPDATE", "SET SCHEMA");
+
+ /* ALTER EXTENSION <name> UPDATE */
+ else if (Matches("ALTER", "EXTENSION", MatchAny, "UPDATE"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_available_extension_versions_with_TO);
+ }
+
+ /* ALTER EXTENSION <name> UPDATE TO */
+ else if (Matches("ALTER", "EXTENSION", MatchAny, "UPDATE", "TO"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_available_extension_versions);
+ }
+
+ /* ALTER FOREIGN */
+ else if (Matches("ALTER", "FOREIGN"))
+ COMPLETE_WITH("DATA WRAPPER", "TABLE");
+
+ /* ALTER FOREIGN DATA WRAPPER <name> */
+ else if (Matches("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny))
+ COMPLETE_WITH("HANDLER", "VALIDATOR", "OPTIONS", "OWNER TO", "RENAME TO");
+
+ /* ALTER FOREIGN TABLE <name> */
+ else if (Matches("ALTER", "FOREIGN", "TABLE", MatchAny))
+ COMPLETE_WITH("ADD", "ALTER", "DISABLE TRIGGER", "DROP", "ENABLE",
+ "INHERIT", "NO INHERIT", "OPTIONS", "OWNER TO",
+ "RENAME", "SET", "VALIDATE CONSTRAINT");
+
+ /* ALTER INDEX */
+ else if (Matches("ALTER", "INDEX"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes,
+ "UNION SELECT 'ALL IN TABLESPACE'");
+ /* ALTER INDEX <name> */
+ else if (Matches("ALTER", "INDEX", MatchAny))
+ COMPLETE_WITH("ALTER COLUMN", "OWNER TO", "RENAME TO", "SET",
+ "RESET", "ATTACH PARTITION", "DEPENDS", "NO DEPENDS");
+ else if (Matches("ALTER", "INDEX", MatchAny, "ATTACH"))
+ COMPLETE_WITH("PARTITION");
+ else if (Matches("ALTER", "INDEX", MatchAny, "ATTACH", "PARTITION"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL);
+ /* ALTER INDEX <name> ALTER */
+ else if (Matches("ALTER", "INDEX", MatchAny, "ALTER"))
+ COMPLETE_WITH("COLUMN");
+ /* ALTER INDEX <name> ALTER COLUMN */
+ else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_attribute_numbers);
+ }
+ /* ALTER INDEX <name> ALTER COLUMN <colnum> */
+ else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN", MatchAny))
+ COMPLETE_WITH("SET STATISTICS");
+ /* ALTER INDEX <name> ALTER COLUMN <colnum> SET */
+ else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN", MatchAny, "SET"))
+ COMPLETE_WITH("STATISTICS");
+ /* ALTER INDEX <name> ALTER COLUMN <colnum> SET STATISTICS */
+ else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "STATISTICS"))
+ {
+ /* Enforce no completion here, as an integer has to be specified */
+ }
+ /* ALTER INDEX <name> SET */
+ else if (Matches("ALTER", "INDEX", MatchAny, "SET"))
+ COMPLETE_WITH("(", "TABLESPACE");
+ /* ALTER INDEX <name> RESET */
+ else if (Matches("ALTER", "INDEX", MatchAny, "RESET"))
+ COMPLETE_WITH("(");
+ /* ALTER INDEX <foo> SET|RESET ( */
+ else if (Matches("ALTER", "INDEX", MatchAny, "RESET", "("))
+ COMPLETE_WITH("fillfactor",
+ "vacuum_cleanup_index_scale_factor", "deduplicate_items", /* BTREE */
+ "fastupdate", "gin_pending_list_limit", /* GIN */
+ "buffering", /* GiST */
+ "pages_per_range", "autosummarize" /* BRIN */
+ );
+ else if (Matches("ALTER", "INDEX", MatchAny, "SET", "("))
+ COMPLETE_WITH("fillfactor =",
+ "vacuum_cleanup_index_scale_factor =", "deduplicate_items =", /* BTREE */
+ "fastupdate =", "gin_pending_list_limit =", /* GIN */
+ "buffering =", /* GiST */
+ "pages_per_range =", "autosummarize =" /* BRIN */
+ );
+ else if (Matches("ALTER", "INDEX", MatchAny, "NO", "DEPENDS"))
+ COMPLETE_WITH("ON EXTENSION");
+ else if (Matches("ALTER", "INDEX", MatchAny, "DEPENDS"))
+ COMPLETE_WITH("ON EXTENSION");
+
+ /* ALTER LANGUAGE <name> */
+ else if (Matches("ALTER", "LANGUAGE", MatchAny))
+ COMPLETE_WITH("OWNER TO", "RENAME TO");
+
+ /* ALTER LARGE OBJECT <oid> */
+ else if (Matches("ALTER", "LARGE", "OBJECT", MatchAny))
+ COMPLETE_WITH("OWNER TO");
+
+ /* ALTER MATERIALIZED VIEW */
+ else if (Matches("ALTER", "MATERIALIZED", "VIEW"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews,
+ "UNION SELECT 'ALL IN TABLESPACE'");
+
+ /* ALTER USER,ROLE <name> */
+ else if (Matches("ALTER", "USER|ROLE", MatchAny) &&
+ !TailMatches("USER", "MAPPING"))
+ COMPLETE_WITH("BYPASSRLS", "CONNECTION LIMIT", "CREATEDB", "CREATEROLE",
+ "ENCRYPTED PASSWORD", "INHERIT", "LOGIN", "NOBYPASSRLS",
+ "NOCREATEDB", "NOCREATEROLE", "NOINHERIT",
+ "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "PASSWORD",
+ "RENAME TO", "REPLICATION", "RESET", "SET", "SUPERUSER",
+ "VALID UNTIL", "WITH");
+
+ /* ALTER USER,ROLE <name> WITH */
+ else if (Matches("ALTER", "USER|ROLE", MatchAny, "WITH"))
+ /* Similar to the above, but don't complete "WITH" again. */
+ COMPLETE_WITH("BYPASSRLS", "CONNECTION LIMIT", "CREATEDB", "CREATEROLE",
+ "ENCRYPTED PASSWORD", "INHERIT", "LOGIN", "NOBYPASSRLS",
+ "NOCREATEDB", "NOCREATEROLE", "NOINHERIT",
+ "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "PASSWORD",
+ "RENAME TO", "REPLICATION", "RESET", "SET", "SUPERUSER",
+ "VALID UNTIL");
+
+ /* ALTER DEFAULT PRIVILEGES */
+ else if (Matches("ALTER", "DEFAULT", "PRIVILEGES"))
+ COMPLETE_WITH("FOR ROLE", "IN SCHEMA");
+ /* ALTER DEFAULT PRIVILEGES FOR */
+ else if (Matches("ALTER", "DEFAULT", "PRIVILEGES", "FOR"))
+ COMPLETE_WITH("ROLE");
+ /* ALTER DEFAULT PRIVILEGES IN */
+ else if (Matches("ALTER", "DEFAULT", "PRIVILEGES", "IN"))
+ COMPLETE_WITH("SCHEMA");
+ /* ALTER DEFAULT PRIVILEGES FOR ROLE|USER ... */
+ else if (Matches("ALTER", "DEFAULT", "PRIVILEGES", "FOR", "ROLE|USER",
+ MatchAny))
+ COMPLETE_WITH("GRANT", "REVOKE", "IN SCHEMA");
+ /* ALTER DEFAULT PRIVILEGES IN SCHEMA ... */
+ else if (Matches("ALTER", "DEFAULT", "PRIVILEGES", "IN", "SCHEMA",
+ MatchAny))
+ COMPLETE_WITH("GRANT", "REVOKE", "FOR ROLE");
+ /* ALTER DEFAULT PRIVILEGES IN SCHEMA ... FOR */
+ else if (Matches("ALTER", "DEFAULT", "PRIVILEGES", "IN", "SCHEMA",
+ MatchAny, "FOR"))
+ COMPLETE_WITH("ROLE");
+ /* ALTER DEFAULT PRIVILEGES FOR ROLE|USER ... IN SCHEMA ... */
+ /* ALTER DEFAULT PRIVILEGES IN SCHEMA ... FOR ROLE|USER ... */
+ else if (Matches("ALTER", "DEFAULT", "PRIVILEGES", "FOR", "ROLE|USER",
+ MatchAny, "IN", "SCHEMA", MatchAny) ||
+ Matches("ALTER", "DEFAULT", "PRIVILEGES", "IN", "SCHEMA",
+ MatchAny, "FOR", "ROLE|USER", MatchAny))
+ COMPLETE_WITH("GRANT", "REVOKE");
+ /* ALTER DOMAIN <name> */
+ else if (Matches("ALTER", "DOMAIN", MatchAny))
+ COMPLETE_WITH("ADD", "DROP", "OWNER TO", "RENAME", "SET",
+ "VALIDATE CONSTRAINT");
+ /* ALTER DOMAIN <sth> DROP */
+ else if (Matches("ALTER", "DOMAIN", MatchAny, "DROP"))
+ COMPLETE_WITH("CONSTRAINT", "DEFAULT", "NOT NULL");
+ /* ALTER DOMAIN <sth> DROP|RENAME|VALIDATE CONSTRAINT */
+ else if (Matches("ALTER", "DOMAIN", MatchAny, "DROP|RENAME|VALIDATE", "CONSTRAINT"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_constraint_of_type);
+ }
+ /* ALTER DOMAIN <sth> RENAME */
+ else if (Matches("ALTER", "DOMAIN", MatchAny, "RENAME"))
+ COMPLETE_WITH("CONSTRAINT", "TO");
+ /* ALTER DOMAIN <sth> RENAME CONSTRAINT <sth> */
+ else if (Matches("ALTER", "DOMAIN", MatchAny, "RENAME", "CONSTRAINT", MatchAny))
+ COMPLETE_WITH("TO");
+
+ /* ALTER DOMAIN <sth> SET */
+ else if (Matches("ALTER", "DOMAIN", MatchAny, "SET"))
+ COMPLETE_WITH("DEFAULT", "NOT NULL", "SCHEMA");
+ /* ALTER SEQUENCE <name> */
+ else if (Matches("ALTER", "SEQUENCE", MatchAny))
+ COMPLETE_WITH("INCREMENT", "MINVALUE", "MAXVALUE", "RESTART", "NO",
+ "CACHE", "CYCLE", "SET SCHEMA", "OWNED BY", "OWNER TO",
+ "RENAME TO");
+ /* ALTER SEQUENCE <name> NO */
+ else if (Matches("ALTER", "SEQUENCE", MatchAny, "NO"))
+ COMPLETE_WITH("MINVALUE", "MAXVALUE", "CYCLE");
+ /* ALTER SERVER <name> */
+ else if (Matches("ALTER", "SERVER", MatchAny))
+ COMPLETE_WITH("VERSION", "OPTIONS", "OWNER TO", "RENAME TO");
+ /* ALTER SERVER <name> VERSION <version> */
+ else if (Matches("ALTER", "SERVER", MatchAny, "VERSION", MatchAny))
+ COMPLETE_WITH("OPTIONS");
+ /* ALTER SYSTEM SET, RESET, RESET ALL */
+ else if (Matches("ALTER", "SYSTEM"))
+ COMPLETE_WITH("SET", "RESET");
+ else if (Matches("ALTER", "SYSTEM", "SET|RESET"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_alter_system_set_vars);
+ else if (Matches("ALTER", "SYSTEM", "SET", MatchAny))
+ COMPLETE_WITH("TO");
+ /* ALTER VIEW <name> */
+ else if (Matches("ALTER", "VIEW", MatchAny))
+ COMPLETE_WITH("ALTER COLUMN", "OWNER TO", "RENAME",
+ "SET SCHEMA");
+ /* ALTER VIEW xxx RENAME */
+ else if (Matches("ALTER", "VIEW", MatchAny, "RENAME"))
+ COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN' UNION SELECT 'TO'");
+ else if (Matches("ALTER", "VIEW", MatchAny, "ALTER|RENAME", "COLUMN"))
+ COMPLETE_WITH_ATTR(prev3_wd, "");
+ /* ALTER VIEW xxx RENAME yyy */
+ else if (Matches("ALTER", "VIEW", MatchAny, "RENAME", MatchAnyExcept("TO")))
+ COMPLETE_WITH("TO");
+ /* ALTER VIEW xxx RENAME COLUMN yyy */
+ else if (Matches("ALTER", "VIEW", MatchAny, "RENAME", "COLUMN", MatchAnyExcept("TO")))
+ COMPLETE_WITH("TO");
+
+ /* ALTER MATERIALIZED VIEW <name> */
+ else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny))
+ COMPLETE_WITH("ALTER COLUMN", "CLUSTER ON", "DEPENDS ON EXTENSION",
+ "OWNER TO", "RENAME", "RESET (", "SET");
+ /* ALTER MATERIALIZED VIEW xxx RENAME */
+ else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny, "RENAME"))
+ COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN' UNION SELECT 'TO'");
+ else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny, "ALTER|RENAME", "COLUMN"))
+ COMPLETE_WITH_ATTR(prev3_wd, "");
+ /* ALTER MATERIALIZED VIEW xxx RENAME yyy */
+ else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny, "RENAME", MatchAnyExcept("TO")))
+ COMPLETE_WITH("TO");
+ /* ALTER MATERIALIZED VIEW xxx RENAME COLUMN yyy */
+ else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny, "RENAME", "COLUMN", MatchAnyExcept("TO")))
+ COMPLETE_WITH("TO");
+ /* ALTER MATERIALIZED VIEW xxx SET */
+ else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny, "SET"))
+ COMPLETE_WITH("(", "SCHEMA", "TABLESPACE", "WITHOUT CLUSTER");
+ /* ALTER POLICY <name> */
+ else if (Matches("ALTER", "POLICY"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_policies);
+ /* ALTER POLICY <name> ON */
+ else if (Matches("ALTER", "POLICY", MatchAny))
+ COMPLETE_WITH("ON");
+ /* ALTER POLICY <name> ON <table> */
+ else if (Matches("ALTER", "POLICY", MatchAny, "ON"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_policy);
+ }
+ /* ALTER POLICY <name> ON <table> - show options */
+ else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny))
+ COMPLETE_WITH("RENAME TO", "TO", "USING (", "WITH CHECK (");
+ /* ALTER POLICY <name> ON <table> TO <role> */
+ else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny, "TO"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles);
+ /* ALTER POLICY <name> ON <table> USING ( */
+ else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny, "USING"))
+ COMPLETE_WITH("(");
+ /* ALTER POLICY <name> ON <table> WITH CHECK ( */
+ else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny, "WITH", "CHECK"))
+ COMPLETE_WITH("(");
+
+ /* ALTER RULE <name>, add ON */
+ else if (Matches("ALTER", "RULE", MatchAny))
+ COMPLETE_WITH("ON");
+
+ /* If we have ALTER RULE <name> ON, then add the correct tablename */
+ else if (Matches("ALTER", "RULE", MatchAny, "ON"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule);
+ }
+
+ /* ALTER RULE <name> ON <name> */
+ else if (Matches("ALTER", "RULE", MatchAny, "ON", MatchAny))
+ COMPLETE_WITH("RENAME TO");
+
+ /* ALTER STATISTICS <name> */
+ else if (Matches("ALTER", "STATISTICS", MatchAny))
+ COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA", "SET STATISTICS");
+
+ /* ALTER TRIGGER <name>, add ON */
+ else if (Matches("ALTER", "TRIGGER", MatchAny))
+ COMPLETE_WITH("ON");
+
+ else if (Matches("ALTER", "TRIGGER", MatchAny, MatchAny))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger);
+ }
+
+ /*
+ * If we have ALTER TRIGGER <sth> ON, then add the correct tablename
+ */
+ else if (Matches("ALTER", "TRIGGER", MatchAny, "ON"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+
+ /* ALTER TRIGGER <name> ON <name> */
+ else if (Matches("ALTER", "TRIGGER", MatchAny, "ON", MatchAny))
+ COMPLETE_WITH("RENAME TO");
+
+ /*
+ * If we detect ALTER TABLE <name>, suggest sub commands
+ */
+ else if (Matches("ALTER", "TABLE", MatchAny))
+ COMPLETE_WITH("ADD", "ALTER", "CLUSTER ON", "DISABLE", "DROP",
+ "ENABLE", "INHERIT", "NO INHERIT", "RENAME", "RESET",
+ "OWNER TO", "SET", "VALIDATE CONSTRAINT",
+ "REPLICA IDENTITY", "ATTACH PARTITION",
+ "DETACH PARTITION");
+ /* ALTER TABLE xxx ENABLE */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE"))
+ COMPLETE_WITH("ALWAYS", "REPLICA", "ROW LEVEL SECURITY", "RULE",
+ "TRIGGER");
+ else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", "REPLICA|ALWAYS"))
+ COMPLETE_WITH("RULE", "TRIGGER");
+ else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", "RULE"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_rule_of_table);
+ }
+ else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", MatchAny, "RULE"))
+ {
+ completion_info_charp = prev4_wd;
+ COMPLETE_WITH_QUERY(Query_for_rule_of_table);
+ }
+ else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", "TRIGGER"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_trigger_of_table);
+ }
+ else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", MatchAny, "TRIGGER"))
+ {
+ completion_info_charp = prev4_wd;
+ COMPLETE_WITH_QUERY(Query_for_trigger_of_table);
+ }
+ /* ALTER TABLE xxx INHERIT */
+ else if (Matches("ALTER", "TABLE", MatchAny, "INHERIT"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, "");
+ /* ALTER TABLE xxx NO INHERIT */
+ else if (Matches("ALTER", "TABLE", MatchAny, "NO", "INHERIT"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, "");
+ /* ALTER TABLE xxx DISABLE */
+ else if (Matches("ALTER", "TABLE", MatchAny, "DISABLE"))
+ COMPLETE_WITH("ROW LEVEL SECURITY", "RULE", "TRIGGER");
+ else if (Matches("ALTER", "TABLE", MatchAny, "DISABLE", "RULE"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_rule_of_table);
+ }
+ else if (Matches("ALTER", "TABLE", MatchAny, "DISABLE", "TRIGGER"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_trigger_of_table);
+ }
+
+ /* ALTER TABLE xxx ALTER */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER"))
+ COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN' UNION SELECT 'CONSTRAINT'");
+
+ /* ALTER TABLE xxx RENAME */
+ else if (Matches("ALTER", "TABLE", MatchAny, "RENAME"))
+ COMPLETE_WITH_ATTR(prev2_wd, " UNION SELECT 'COLUMN' UNION SELECT 'CONSTRAINT' UNION SELECT 'TO'");
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER|RENAME", "COLUMN"))
+ COMPLETE_WITH_ATTR(prev3_wd, "");
+
+ /* ALTER TABLE xxx RENAME yyy */
+ else if (Matches("ALTER", "TABLE", MatchAny, "RENAME", MatchAnyExcept("CONSTRAINT|TO")))
+ COMPLETE_WITH("TO");
+
+ /* ALTER TABLE xxx RENAME COLUMN/CONSTRAINT yyy */
+ else if (Matches("ALTER", "TABLE", MatchAny, "RENAME", "COLUMN|CONSTRAINT", MatchAnyExcept("TO")))
+ COMPLETE_WITH("TO");
+
+ /* If we have ALTER TABLE <sth> DROP, provide COLUMN or CONSTRAINT */
+ else if (Matches("ALTER", "TABLE", MatchAny, "DROP"))
+ COMPLETE_WITH("COLUMN", "CONSTRAINT");
+ /* If we have ALTER TABLE <sth> DROP COLUMN, provide list of columns */
+ else if (Matches("ALTER", "TABLE", MatchAny, "DROP", "COLUMN"))
+ COMPLETE_WITH_ATTR(prev3_wd, "");
+
+ /*
+ * If we have ALTER TABLE <sth> ALTER|DROP|RENAME|VALIDATE CONSTRAINT,
+ * provide list of constraints
+ */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER|DROP|RENAME|VALIDATE", "CONSTRAINT"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_constraint_of_table);
+ }
+ /* ALTER TABLE ALTER [COLUMN] <foo> */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny) ||
+ Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny))
+ COMPLETE_WITH("TYPE", "SET", "RESET", "RESTART", "ADD", "DROP");
+ /* ALTER TABLE ALTER [COLUMN] <foo> SET */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET") ||
+ Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET"))
+ COMPLETE_WITH("(", "DEFAULT", "NOT NULL", "STATISTICS", "STORAGE");
+ /* ALTER TABLE ALTER [COLUMN] <foo> SET ( */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "(") ||
+ Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "("))
+ COMPLETE_WITH("n_distinct", "n_distinct_inherited");
+ /* ALTER TABLE ALTER [COLUMN] <foo> SET STORAGE */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "STORAGE") ||
+ Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "STORAGE"))
+ COMPLETE_WITH("PLAIN", "EXTERNAL", "EXTENDED", "MAIN");
+ /* ALTER TABLE ALTER [COLUMN] <foo> SET STATISTICS */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "STATISTICS") ||
+ Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "STATISTICS"))
+ {
+ /* Enforce no completion here, as an integer has to be specified */
+ }
+ /* ALTER TABLE ALTER [COLUMN] <foo> DROP */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "DROP") ||
+ Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "DROP"))
+ COMPLETE_WITH("DEFAULT", "EXPRESSION", "IDENTITY", "NOT NULL");
+ else if (Matches("ALTER", "TABLE", MatchAny, "CLUSTER"))
+ COMPLETE_WITH("ON");
+ else if (Matches("ALTER", "TABLE", MatchAny, "CLUSTER", "ON"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_index_of_table);
+ }
+ /* If we have ALTER TABLE <sth> SET, provide list of attributes and '(' */
+ else if (Matches("ALTER", "TABLE", MatchAny, "SET"))
+ COMPLETE_WITH("(", "LOGGED", "SCHEMA", "TABLESPACE", "UNLOGGED",
+ "WITH", "WITHOUT");
+
+ /*
+ * If we have ALTER TABLE <sth> SET TABLESPACE provide a list of
+ * tablespaces
+ */
+ else if (Matches("ALTER", "TABLE", MatchAny, "SET", "TABLESPACE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces);
+ /* If we have ALTER TABLE <sth> SET WITHOUT provide CLUSTER or OIDS */
+ else if (Matches("ALTER", "TABLE", MatchAny, "SET", "WITHOUT"))
+ COMPLETE_WITH("CLUSTER", "OIDS");
+ /* ALTER TABLE <foo> RESET */
+ else if (Matches("ALTER", "TABLE", MatchAny, "RESET"))
+ COMPLETE_WITH("(");
+ /* ALTER TABLE <foo> SET|RESET ( */
+ else if (Matches("ALTER", "TABLE", MatchAny, "SET|RESET", "("))
+ COMPLETE_WITH_LIST(table_storage_parameters);
+ else if (Matches("ALTER", "TABLE", MatchAny, "REPLICA", "IDENTITY", "USING", "INDEX"))
+ {
+ completion_info_charp = prev5_wd;
+ COMPLETE_WITH_QUERY(Query_for_index_of_table);
+ }
+ else if (Matches("ALTER", "TABLE", MatchAny, "REPLICA", "IDENTITY", "USING"))
+ COMPLETE_WITH("INDEX");
+ else if (Matches("ALTER", "TABLE", MatchAny, "REPLICA", "IDENTITY"))
+ COMPLETE_WITH("FULL", "NOTHING", "DEFAULT", "USING");
+ else if (Matches("ALTER", "TABLE", MatchAny, "REPLICA"))
+ COMPLETE_WITH("IDENTITY");
+
+ /*
+ * If we have ALTER TABLE <foo> ATTACH PARTITION, provide a list of
+ * tables.
+ */
+ else if (Matches("ALTER", "TABLE", MatchAny, "ATTACH", "PARTITION"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, "");
+ /* Limited completion support for partition bound specification */
+ else if (TailMatches("ATTACH", "PARTITION", MatchAny))
+ COMPLETE_WITH("FOR VALUES", "DEFAULT");
+ else if (TailMatches("FOR", "VALUES"))
+ COMPLETE_WITH("FROM (", "IN (", "WITH (");
+
+ /*
+ * If we have ALTER TABLE <foo> DETACH PARTITION, provide a list of
+ * partitions of <foo>.
+ */
+ else if (Matches("ALTER", "TABLE", MatchAny, "DETACH", "PARTITION"))
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_partition_of_table);
+ }
+
+ /* ALTER TABLESPACE <foo> with RENAME TO, OWNER TO, SET, RESET */
+ else if (Matches("ALTER", "TABLESPACE", MatchAny))
+ COMPLETE_WITH("RENAME TO", "OWNER TO", "SET", "RESET");
+ /* ALTER TABLESPACE <foo> SET|RESET */
+ else if (Matches("ALTER", "TABLESPACE", MatchAny, "SET|RESET"))
+ COMPLETE_WITH("(");
+ /* ALTER TABLESPACE <foo> SET|RESET ( */
+ else if (Matches("ALTER", "TABLESPACE", MatchAny, "SET|RESET", "("))
+ COMPLETE_WITH("seq_page_cost", "random_page_cost",
+ "effective_io_concurrency", "maintenance_io_concurrency");
+
+ /* ALTER TEXT SEARCH */
+ else if (Matches("ALTER", "TEXT", "SEARCH"))
+ COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
+ else if (Matches("ALTER", "TEXT", "SEARCH", "TEMPLATE|PARSER", MatchAny))
+ COMPLETE_WITH("RENAME TO", "SET SCHEMA");
+ else if (Matches("ALTER", "TEXT", "SEARCH", "DICTIONARY", MatchAny))
+ COMPLETE_WITH("(", "OWNER TO", "RENAME TO", "SET SCHEMA");
+ else if (Matches("ALTER", "TEXT", "SEARCH", "CONFIGURATION", MatchAny))
+ COMPLETE_WITH("ADD MAPPING FOR", "ALTER MAPPING",
+ "DROP MAPPING FOR",
+ "OWNER TO", "RENAME TO", "SET SCHEMA");
+
+ /* complete ALTER TYPE <foo> with actions */
+ else if (Matches("ALTER", "TYPE", MatchAny))
+ COMPLETE_WITH("ADD ATTRIBUTE", "ADD VALUE", "ALTER ATTRIBUTE",
+ "DROP ATTRIBUTE",
+ "OWNER TO", "RENAME", "SET SCHEMA", "SET (");
+ /* complete ALTER TYPE <foo> ADD with actions */
+ else if (Matches("ALTER", "TYPE", MatchAny, "ADD"))
+ COMPLETE_WITH("ATTRIBUTE", "VALUE");
+ /* ALTER TYPE <foo> RENAME */
+ else if (Matches("ALTER", "TYPE", MatchAny, "RENAME"))
+ COMPLETE_WITH("ATTRIBUTE", "TO", "VALUE");
+ /* ALTER TYPE xxx RENAME (ATTRIBUTE|VALUE) yyy */
+ else if (Matches("ALTER", "TYPE", MatchAny, "RENAME", "ATTRIBUTE|VALUE", MatchAny))
+ COMPLETE_WITH("TO");
+
+ /*
+ * If we have ALTER TYPE <sth> ALTER/DROP/RENAME ATTRIBUTE, provide list
+ * of attributes
+ */
+ else if (Matches("ALTER", "TYPE", MatchAny, "ALTER|DROP|RENAME", "ATTRIBUTE"))
+ COMPLETE_WITH_ATTR(prev3_wd, "");
+ /* ALTER TYPE ALTER ATTRIBUTE <foo> */
+ else if (Matches("ALTER", "TYPE", MatchAny, "ALTER", "ATTRIBUTE", MatchAny))
+ COMPLETE_WITH("TYPE");
+ /* complete ALTER GROUP <foo> */
+ else if (Matches("ALTER", "GROUP", MatchAny))
+ COMPLETE_WITH("ADD USER", "DROP USER", "RENAME TO");
+ /* complete ALTER GROUP <foo> ADD|DROP with USER */
+ else if (Matches("ALTER", "GROUP", MatchAny, "ADD|DROP"))
+ COMPLETE_WITH("USER");
+ /* complete ALTER GROUP <foo> ADD|DROP USER with a user name */
+ else if (Matches("ALTER", "GROUP", MatchAny, "ADD|DROP", "USER"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+
+ /*
+ * If we have ALTER TYPE <sth> RENAME VALUE, provide list of enum values
+ */
+ else if (Matches("ALTER", "TYPE", MatchAny, "RENAME", "VALUE"))
+ COMPLETE_WITH_ENUM_VALUE(prev3_wd);
+
+/*
+ * ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
+ * ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ]
+ */
+ else if (Matches("ANALYZE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_analyzables,
+ " UNION SELECT 'VERBOSE'");
+ else if (HeadMatches("ANALYZE", "(*") &&
+ !HeadMatches("ANALYZE", "(*)"))
+ {
+ /*
+ * This fires if we're in an unfinished parenthesized option list.
+ * get_previous_words treats a completed parenthesized option list as
+ * one word, so the above test is correct.
+ */
+ if (ends_with(prev_wd, '(') || ends_with(prev_wd, ','))
+ COMPLETE_WITH("VERBOSE", "SKIP_LOCKED");
+ else if (TailMatches("VERBOSE|SKIP_LOCKED"))
+ COMPLETE_WITH("ON", "OFF");
+ }
+ else if (HeadMatches("ANALYZE") && TailMatches("("))
+ /* "ANALYZE (" should be caught above, so assume we want columns */
+ COMPLETE_WITH_ATTR(prev2_wd, "");
+ else if (HeadMatches("ANALYZE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_analyzables, NULL);
+
+/* BEGIN */
+ else if (Matches("BEGIN"))
+ COMPLETE_WITH("WORK", "TRANSACTION", "ISOLATION LEVEL", "READ", "DEFERRABLE", "NOT DEFERRABLE");
+/* END, ABORT */
+ else if (Matches("END|ABORT"))
+ COMPLETE_WITH("AND", "WORK", "TRANSACTION");
+/* COMMIT */
+ else if (Matches("COMMIT"))
+ COMPLETE_WITH("AND", "WORK", "TRANSACTION", "PREPARED");
+/* RELEASE SAVEPOINT */
+ else if (Matches("RELEASE"))
+ COMPLETE_WITH("SAVEPOINT");
+/* ROLLBACK */
+ else if (Matches("ROLLBACK"))
+ COMPLETE_WITH("AND", "WORK", "TRANSACTION", "TO SAVEPOINT", "PREPARED");
+ else if (Matches("ABORT|END|COMMIT|ROLLBACK", "AND"))
+ COMPLETE_WITH("CHAIN");
+/* CALL */
+ else if (Matches("CALL"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_procedures, NULL);
+ else if (Matches("CALL", MatchAny))
+ COMPLETE_WITH("(");
+/* CLUSTER */
+ else if (Matches("CLUSTER"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_clusterables, "UNION SELECT 'VERBOSE'");
+ else if (Matches("CLUSTER", "VERBOSE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_clusterables, NULL);
+ /* If we have CLUSTER <sth>, then add "USING" */
+ else if (Matches("CLUSTER", MatchAnyExcept("VERBOSE|ON")))
+ COMPLETE_WITH("USING");
+ /* If we have CLUSTER VERBOSE <sth>, then add "USING" */
+ else if (Matches("CLUSTER", "VERBOSE", MatchAny))
+ COMPLETE_WITH("USING");
+ /* If we have CLUSTER <sth> USING, then add the index as well */
+ else if (Matches("CLUSTER", MatchAny, "USING") ||
+ Matches("CLUSTER", "VERBOSE", MatchAny, "USING"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_index_of_table);
+ }
+
+/* COMMENT */
+ else if (Matches("COMMENT"))
+ COMPLETE_WITH("ON");
+ else if (Matches("COMMENT", "ON"))
+ COMPLETE_WITH("ACCESS METHOD", "CAST", "COLLATION", "CONVERSION",
+ "DATABASE", "EVENT TRIGGER", "EXTENSION",
+ "FOREIGN DATA WRAPPER", "FOREIGN TABLE", "SERVER",
+ "INDEX", "LANGUAGE", "POLICY", "PUBLICATION", "RULE",
+ "SCHEMA", "SEQUENCE", "STATISTICS", "SUBSCRIPTION",
+ "TABLE", "TYPE", "VIEW", "MATERIALIZED VIEW",
+ "COLUMN", "AGGREGATE", "FUNCTION",
+ "PROCEDURE", "ROUTINE",
+ "OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN",
+ "LARGE OBJECT", "TABLESPACE", "TEXT SEARCH", "ROLE");
+ else if (Matches("COMMENT", "ON", "ACCESS", "METHOD"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_access_methods);
+ else if (Matches("COMMENT", "ON", "FOREIGN"))
+ COMPLETE_WITH("DATA WRAPPER", "TABLE");
+ else if (Matches("COMMENT", "ON", "TEXT", "SEARCH"))
+ COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
+ else if (Matches("COMMENT", "ON", "CONSTRAINT"))
+ COMPLETE_WITH_QUERY(Query_for_all_table_constraints);
+ else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny))
+ COMPLETE_WITH("ON");
+ else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny, "ON"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint);
+ }
+ else if (Matches("COMMENT", "ON", "MATERIALIZED", "VIEW"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
+ else if (Matches("COMMENT", "ON", "EVENT", "TRIGGER"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
+ else if (Matches("COMMENT", "ON", MatchAny, MatchAnyExcept("IS")) ||
+ Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAnyExcept("IS")) ||
+ Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")))
+ COMPLETE_WITH("IS");
+
+/* COPY */
+
+ /*
+ * If we have COPY, offer list of tables or "(" (Also cover the analogous
+ * backslash command).
+ */
+ else if (Matches("COPY|\\copy"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,
+ " UNION ALL SELECT '('");
+ /* If we have COPY BINARY, complete with list of tables */
+ else if (Matches("COPY", "BINARY"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+ /* If we have COPY (, complete it with legal commands */
+ else if (Matches("COPY|\\copy", "("))
+ COMPLETE_WITH("SELECT", "TABLE", "VALUES", "INSERT", "UPDATE", "DELETE", "WITH");
+ /* If we have COPY [BINARY] <sth>, complete it with "TO" or "FROM" */
+ else if (Matches("COPY|\\copy", MatchAny) ||
+ Matches("COPY", "BINARY", MatchAny))
+ COMPLETE_WITH("FROM", "TO");
+ /* If we have COPY [BINARY] <sth> FROM|TO, complete with filename */
+ else if (Matches("COPY", MatchAny, "FROM|TO") ||
+ Matches("COPY", "BINARY", MatchAny, "FROM|TO"))
+ {
+ completion_charp = "";
+ completion_force_quote = true; /* COPY requires quoted filename */
+ matches = rl_completion_matches(text, complete_from_files);
+ }
+ else if (Matches("\\copy", MatchAny, "FROM|TO"))
+ {
+ completion_charp = "";
+ completion_force_quote = false;
+ matches = rl_completion_matches(text, complete_from_files);
+ }
+ /* Offer options after COPY [BINARY] <sth> FROM|TO filename */
+ else if (Matches("COPY|\\copy", MatchAny, "FROM|TO", MatchAny) ||
+ Matches("COPY", "BINARY", MatchAny, "FROM|TO", MatchAny))
+ COMPLETE_WITH("BINARY", "DELIMITER", "NULL", "CSV",
+ "ENCODING");
+
+ /* Offer options after COPY [BINARY] <sth> FROM|TO filename CSV */
+ else if (Matches("COPY|\\copy", MatchAny, "FROM|TO", MatchAny, "CSV") ||
+ Matches("COPY", "BINARY", MatchAny, "FROM|TO", MatchAny, "CSV"))
+ COMPLETE_WITH("HEADER", "QUOTE", "ESCAPE", "FORCE QUOTE",
+ "FORCE NOT NULL");
+
+ /* CREATE ACCESS METHOD */
+ /* Complete "CREATE ACCESS METHOD <name>" */
+ else if (Matches("CREATE", "ACCESS", "METHOD", MatchAny))
+ COMPLETE_WITH("TYPE");
+ /* Complete "CREATE ACCESS METHOD <name> TYPE" */
+ else if (Matches("CREATE", "ACCESS", "METHOD", MatchAny, "TYPE"))
+ COMPLETE_WITH("INDEX", "TABLE");
+ /* Complete "CREATE ACCESS METHOD <name> TYPE <type>" */
+ else if (Matches("CREATE", "ACCESS", "METHOD", MatchAny, "TYPE", MatchAny))
+ COMPLETE_WITH("HANDLER");
+
+ /* CREATE DATABASE */
+ else if (Matches("CREATE", "DATABASE", MatchAny))
+ COMPLETE_WITH("OWNER", "TEMPLATE", "ENCODING", "TABLESPACE",
+ "IS_TEMPLATE",
+ "ALLOW_CONNECTIONS", "CONNECTION LIMIT",
+ "LC_COLLATE", "LC_CTYPE");
+
+ else if (Matches("CREATE", "DATABASE", MatchAny, "TEMPLATE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_template_databases);
+
+ /* CREATE EXTENSION */
+ /* Complete with available extensions rather than installed ones. */
+ else if (Matches("CREATE", "EXTENSION"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_available_extensions);
+ /* CREATE EXTENSION <name> */
+ else if (Matches("CREATE", "EXTENSION", MatchAny))
+ COMPLETE_WITH("WITH SCHEMA", "CASCADE", "VERSION");
+ /* CREATE EXTENSION <name> VERSION */
+ else if (Matches("CREATE", "EXTENSION", MatchAny, "VERSION"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_available_extension_versions);
+ }
+
+ /* CREATE FOREIGN */
+ else if (Matches("CREATE", "FOREIGN"))
+ COMPLETE_WITH("DATA WRAPPER", "TABLE");
+
+ /* CREATE FOREIGN DATA WRAPPER */
+ else if (Matches("CREATE", "FOREIGN", "DATA", "WRAPPER", MatchAny))
+ COMPLETE_WITH("HANDLER", "VALIDATOR", "OPTIONS");
+
+ /* CREATE INDEX --- is allowed inside CREATE SCHEMA, so use TailMatches */
+ /* First off we complete CREATE UNIQUE with "INDEX" */
+ else if (TailMatches("CREATE", "UNIQUE"))
+ COMPLETE_WITH("INDEX");
+
+ /*
+ * If we have CREATE|UNIQUE INDEX, then add "ON", "CONCURRENTLY", and
+ * existing indexes
+ */
+ else if (TailMatches("CREATE|UNIQUE", "INDEX"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes,
+ " UNION SELECT 'ON'"
+ " UNION SELECT 'CONCURRENTLY'");
+
+ /*
+ * Complete ... INDEX|CONCURRENTLY [<name>] ON with a list of relations
+ * that indexes can be created on
+ */
+ else if (TailMatches("INDEX|CONCURRENTLY", MatchAny, "ON") ||
+ TailMatches("INDEX|CONCURRENTLY", "ON"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexables, NULL);
+
+ /*
+ * Complete CREATE|UNIQUE INDEX CONCURRENTLY with "ON" and existing
+ * indexes
+ */
+ else if (TailMatches("CREATE|UNIQUE", "INDEX", "CONCURRENTLY"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes,
+ " UNION SELECT 'ON'");
+ /* Complete CREATE|UNIQUE INDEX [CONCURRENTLY] <sth> with "ON" */
+ else if (TailMatches("CREATE|UNIQUE", "INDEX", MatchAny) ||
+ TailMatches("CREATE|UNIQUE", "INDEX", "CONCURRENTLY", MatchAny))
+ COMPLETE_WITH("ON");
+
+ /*
+ * Complete INDEX <name> ON <table> with a list of table columns (which
+ * should really be in parens)
+ */
+ else if (TailMatches("INDEX", MatchAny, "ON", MatchAny) ||
+ TailMatches("INDEX|CONCURRENTLY", "ON", MatchAny))
+ COMPLETE_WITH("(", "USING");
+ else if (TailMatches("INDEX", MatchAny, "ON", MatchAny, "(") ||
+ TailMatches("INDEX|CONCURRENTLY", "ON", MatchAny, "("))
+ COMPLETE_WITH_ATTR(prev2_wd, "");
+ /* same if you put in USING */
+ else if (TailMatches("ON", MatchAny, "USING", MatchAny, "("))
+ COMPLETE_WITH_ATTR(prev4_wd, "");
+ /* Complete USING with an index method */
+ else if (TailMatches("INDEX", MatchAny, MatchAny, "ON", MatchAny, "USING") ||
+ TailMatches("INDEX", MatchAny, "ON", MatchAny, "USING") ||
+ TailMatches("INDEX", "ON", MatchAny, "USING"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_index_access_methods);
+ else if (TailMatches("ON", MatchAny, "USING", MatchAny) &&
+ !TailMatches("POLICY", MatchAny, MatchAny, MatchAny, MatchAny, MatchAny) &&
+ !TailMatches("FOR", MatchAny, MatchAny, MatchAny))
+ COMPLETE_WITH("(");
+
+ /* CREATE OR REPLACE */
+ else if (Matches("CREATE", "OR"))
+ COMPLETE_WITH("REPLACE");
+
+ /* CREATE POLICY */
+ /* Complete "CREATE POLICY <name> ON" */
+ else if (Matches("CREATE", "POLICY", MatchAny))
+ COMPLETE_WITH("ON");
+ /* Complete "CREATE POLICY <name> ON <table>" */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+ /* Complete "CREATE POLICY <name> ON <table> AS|FOR|TO|USING|WITH CHECK" */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny))
+ COMPLETE_WITH("AS", "FOR", "TO", "USING (", "WITH CHECK (");
+ /* CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS"))
+ COMPLETE_WITH("PERMISSIVE", "RESTRICTIVE");
+
+ /*
+ * CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE
+ * FOR|TO|USING|WITH CHECK
+ */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny))
+ COMPLETE_WITH("FOR", "TO", "USING", "WITH CHECK");
+ /* CREATE POLICY <name> ON <table> FOR ALL|SELECT|INSERT|UPDATE|DELETE */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "FOR"))
+ COMPLETE_WITH("ALL", "SELECT", "INSERT", "UPDATE", "DELETE");
+ /* Complete "CREATE POLICY <name> ON <table> FOR INSERT TO|WITH CHECK" */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "FOR", "INSERT"))
+ COMPLETE_WITH("TO", "WITH CHECK (");
+ /* Complete "CREATE POLICY <name> ON <table> FOR SELECT|DELETE TO|USING" */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "FOR", "SELECT|DELETE"))
+ COMPLETE_WITH("TO", "USING (");
+ /* CREATE POLICY <name> ON <table> FOR ALL|UPDATE TO|USING|WITH CHECK */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "FOR", "ALL|UPDATE"))
+ COMPLETE_WITH("TO", "USING (", "WITH CHECK (");
+ /* Complete "CREATE POLICY <name> ON <table> TO <role>" */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "TO"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles);
+ /* Complete "CREATE POLICY <name> ON <table> USING (" */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "USING"))
+ COMPLETE_WITH("(");
+
+ /*
+ * CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE FOR
+ * ALL|SELECT|INSERT|UPDATE|DELETE
+ */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny, "FOR"))
+ COMPLETE_WITH("ALL", "SELECT", "INSERT", "UPDATE", "DELETE");
+
+ /*
+ * Complete "CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE FOR
+ * INSERT TO|WITH CHECK"
+ */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny, "FOR", "INSERT"))
+ COMPLETE_WITH("TO", "WITH CHECK (");
+
+ /*
+ * Complete "CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE FOR
+ * SELECT|DELETE TO|USING"
+ */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny, "FOR", "SELECT|DELETE"))
+ COMPLETE_WITH("TO", "USING (");
+
+ /*
+ * CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE FOR
+ * ALL|UPDATE TO|USING|WITH CHECK
+ */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny, "FOR", "ALL|UPDATE"))
+ COMPLETE_WITH("TO", "USING (", "WITH CHECK (");
+
+ /*
+ * Complete "CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE TO
+ * <role>"
+ */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny, "TO"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles);
+
+ /*
+ * Complete "CREATE POLICY <name> ON <table> AS PERMISSIVE|RESTRICTIVE
+ * USING ("
+ */
+ else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny, "USING"))
+ COMPLETE_WITH("(");
+
+
+/* CREATE PUBLICATION */
+ else if (Matches("CREATE", "PUBLICATION", MatchAny))
+ COMPLETE_WITH("FOR TABLE", "FOR ALL TABLES", "WITH (");
+ else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR"))
+ COMPLETE_WITH("TABLE", "ALL TABLES");
+ /* Complete "CREATE PUBLICATION <name> FOR TABLE <table>, ..." */
+ else if (HeadMatches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+ /* Complete "CREATE PUBLICATION <name> [...] WITH" */
+ else if (HeadMatches("CREATE", "PUBLICATION") && TailMatches("WITH", "("))
+ COMPLETE_WITH("publish");
+
+/* CREATE RULE */
+ /* Complete "CREATE [ OR REPLACE ] RULE <sth>" with "AS ON" */
+ else if (Matches("CREATE", "RULE", MatchAny) ||
+ Matches("CREATE", "OR", "REPLACE", "RULE", MatchAny))
+ COMPLETE_WITH("AS ON");
+ /* Complete "CREATE [ OR REPLACE ] RULE <sth> AS" with "ON" */
+ else if (Matches("CREATE", "RULE", MatchAny, "AS") ||
+ Matches("CREATE", "OR", "REPLACE", "RULE", MatchAny, "AS"))
+ COMPLETE_WITH("ON");
+
+ /*
+ * Complete "CREATE [ OR REPLACE ] RULE <sth> AS ON" with
+ * SELECT|UPDATE|INSERT|DELETE
+ */
+ else if (Matches("CREATE", "RULE", MatchAny, "AS", "ON") ||
+ Matches("CREATE", "OR", "REPLACE", "RULE", MatchAny, "AS", "ON"))
+ COMPLETE_WITH("SELECT", "UPDATE", "INSERT", "DELETE");
+ /* Complete "AS ON SELECT|UPDATE|INSERT|DELETE" with a "TO" */
+ else if (TailMatches("AS", "ON", "SELECT|UPDATE|INSERT|DELETE"))
+ COMPLETE_WITH("TO");
+ /* Complete "AS ON <sth> TO" with a table name */
+ else if (TailMatches("AS", "ON", "SELECT|UPDATE|INSERT|DELETE", "TO"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+
+/* CREATE SEQUENCE --- is allowed inside CREATE SCHEMA, so use TailMatches */
+ else if (TailMatches("CREATE", "SEQUENCE", MatchAny) ||
+ TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny))
+ COMPLETE_WITH("INCREMENT BY", "MINVALUE", "MAXVALUE", "NO", "CACHE",
+ "CYCLE", "OWNED BY", "START WITH");
+ else if (TailMatches("CREATE", "SEQUENCE", MatchAny, "NO") ||
+ TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny, "NO"))
+ COMPLETE_WITH("MINVALUE", "MAXVALUE", "CYCLE");
+
+/* CREATE SERVER <name> */
+ else if (Matches("CREATE", "SERVER", MatchAny))
+ COMPLETE_WITH("TYPE", "VERSION", "FOREIGN DATA WRAPPER");
+
+/* CREATE STATISTICS <name> */
+ else if (Matches("CREATE", "STATISTICS", MatchAny))
+ COMPLETE_WITH("(", "ON");
+ else if (Matches("CREATE", "STATISTICS", MatchAny, "("))
+ COMPLETE_WITH("ndistinct", "dependencies", "mcv");
+ else if (Matches("CREATE", "STATISTICS", MatchAny, "(*)"))
+ COMPLETE_WITH("ON");
+ else if (HeadMatches("CREATE", "STATISTICS", MatchAny) &&
+ TailMatches("FROM"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+
+/* CREATE TABLE --- is allowed inside CREATE SCHEMA, so use TailMatches */
+ /* Complete "CREATE TEMP/TEMPORARY" with the possible temp objects */
+ else if (TailMatches("CREATE", "TEMP|TEMPORARY"))
+ COMPLETE_WITH("SEQUENCE", "TABLE", "VIEW");
+ /* Complete "CREATE UNLOGGED" with TABLE or MATVIEW */
+ else if (TailMatches("CREATE", "UNLOGGED"))
+ COMPLETE_WITH("TABLE", "MATERIALIZED VIEW");
+ /* Complete PARTITION BY with RANGE ( or LIST ( or ... */
+ else if (TailMatches("PARTITION", "BY"))
+ COMPLETE_WITH("RANGE (", "LIST (", "HASH (");
+ /* If we have xxx PARTITION OF, provide a list of partitioned tables */
+ else if (TailMatches("PARTITION", "OF"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_tables, "");
+ /* Limited completion support for partition bound specification */
+ else if (TailMatches("PARTITION", "OF", MatchAny))
+ COMPLETE_WITH("FOR VALUES", "DEFAULT");
+ /* Complete CREATE TABLE <name> with '(', OF or PARTITION OF */
+ else if (TailMatches("CREATE", "TABLE", MatchAny) ||
+ TailMatches("CREATE", "TEMP|TEMPORARY|UNLOGGED", "TABLE", MatchAny))
+ COMPLETE_WITH("(", "OF", "PARTITION OF");
+ /* Complete CREATE TABLE <name> OF with list of composite types */
+ else if (TailMatches("CREATE", "TABLE", MatchAny, "OF") ||
+ TailMatches("CREATE", "TEMP|TEMPORARY|UNLOGGED", "TABLE", MatchAny, "OF"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_composite_datatypes, NULL);
+ /* Complete CREATE TABLE name (...) with supported options */
+ else if (TailMatches("CREATE", "TABLE", MatchAny, "(*)") ||
+ TailMatches("CREATE", "UNLOGGED", "TABLE", MatchAny, "(*)"))
+ COMPLETE_WITH("INHERITS (", "PARTITION BY", "USING", "TABLESPACE", "WITH (");
+ else if (TailMatches("CREATE", "TEMP|TEMPORARY", "TABLE", MatchAny, "(*)"))
+ COMPLETE_WITH("INHERITS (", "ON COMMIT", "PARTITION BY",
+ "TABLESPACE", "WITH (");
+ /* Complete CREATE TABLE (...) USING with table access methods */
+ else if (TailMatches("CREATE", "TABLE", MatchAny, "(*)", "USING") ||
+ TailMatches("CREATE", "TEMP|TEMPORARY|UNLOGGED", "TABLE", MatchAny, "(*)", "USING"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_table_access_methods);
+ /* Complete CREATE TABLE (...) WITH with storage parameters */
+ else if (TailMatches("CREATE", "TABLE", MatchAny, "(*)", "WITH", "(") ||
+ TailMatches("CREATE", "TEMP|TEMPORARY|UNLOGGED", "TABLE", MatchAny, "(*)", "WITH", "("))
+ COMPLETE_WITH_LIST(table_storage_parameters);
+ /* Complete CREATE TABLE ON COMMIT with actions */
+ else if (TailMatches("CREATE", "TEMP|TEMPORARY", "TABLE", MatchAny, "(*)", "ON", "COMMIT"))
+ COMPLETE_WITH("DELETE ROWS", "DROP", "PRESERVE ROWS");
+
+/* CREATE TABLESPACE */
+ else if (Matches("CREATE", "TABLESPACE", MatchAny))
+ COMPLETE_WITH("OWNER", "LOCATION");
+ /* Complete CREATE TABLESPACE name OWNER name with "LOCATION" */
+ else if (Matches("CREATE", "TABLESPACE", MatchAny, "OWNER", MatchAny))
+ COMPLETE_WITH("LOCATION");
+
+/* CREATE TEXT SEARCH */
+ else if (Matches("CREATE", "TEXT", "SEARCH"))
+ COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
+ else if (Matches("CREATE", "TEXT", "SEARCH", "CONFIGURATION|DICTIONARY|PARSER|TEMPLATE", MatchAny))
+ COMPLETE_WITH("(");
+
+/* CREATE SUBSCRIPTION */
+ else if (Matches("CREATE", "SUBSCRIPTION", MatchAny))
+ COMPLETE_WITH("CONNECTION");
+ else if (Matches("CREATE", "SUBSCRIPTION", MatchAny, "CONNECTION", MatchAny))
+ COMPLETE_WITH("PUBLICATION");
+ else if (Matches("CREATE", "SUBSCRIPTION", MatchAny, "CONNECTION",
+ MatchAny, "PUBLICATION"))
+ {
+ /* complete with nothing here as this refers to remote publications */
+ }
+ else if (HeadMatches("CREATE", "SUBSCRIPTION") && TailMatches("PUBLICATION", MatchAny))
+ COMPLETE_WITH("WITH (");
+ /* Complete "CREATE SUBSCRIPTION <name> ... WITH ( <opt>" */
+ else if (HeadMatches("CREATE", "SUBSCRIPTION") && TailMatches("WITH", "("))
+ COMPLETE_WITH("copy_data", "connect", "create_slot", "enabled",
+ "slot_name", "synchronous_commit");
+
+/* CREATE TRIGGER --- is allowed inside CREATE SCHEMA, so use TailMatches */
+ /* complete CREATE TRIGGER <name> with BEFORE,AFTER,INSTEAD OF */
+ else if (TailMatches("CREATE", "TRIGGER", MatchAny))
+ COMPLETE_WITH("BEFORE", "AFTER", "INSTEAD OF");
+ /* complete CREATE TRIGGER <name> BEFORE,AFTER with an event */
+ else if (TailMatches("CREATE", "TRIGGER", MatchAny, "BEFORE|AFTER"))
+ COMPLETE_WITH("INSERT", "DELETE", "UPDATE", "TRUNCATE");
+ /* complete CREATE TRIGGER <name> INSTEAD OF with an event */
+ else if (TailMatches("CREATE", "TRIGGER", MatchAny, "INSTEAD", "OF"))
+ COMPLETE_WITH("INSERT", "DELETE", "UPDATE");
+ /* complete CREATE TRIGGER <name> BEFORE,AFTER sth with OR,ON */
+ else if (TailMatches("CREATE", "TRIGGER", MatchAny, "BEFORE|AFTER", MatchAny) ||
+ TailMatches("CREATE", "TRIGGER", MatchAny, "INSTEAD", "OF", MatchAny))
+ COMPLETE_WITH("ON", "OR");
+
+ /*
+ * complete CREATE TRIGGER <name> BEFORE,AFTER event ON with a list of
+ * tables. EXECUTE FUNCTION is the recommended grammar instead of EXECUTE
+ * PROCEDURE in version 11 and upwards.
+ */
+ else if (TailMatches("CREATE", "TRIGGER", MatchAny, "BEFORE|AFTER", MatchAny, "ON"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+ /* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
+ else if (TailMatches("CREATE", "TRIGGER", MatchAny, "INSTEAD", "OF", MatchAny, "ON"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL);
+ else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("ON", MatchAny))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("NOT DEFERRABLE", "DEFERRABLE", "INITIALLY",
+ "REFERENCING", "FOR", "WHEN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("NOT DEFERRABLE", "DEFERRABLE", "INITIALLY",
+ "REFERENCING", "FOR", "WHEN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "TRIGGER") &&
+ (TailMatches("DEFERRABLE") || TailMatches("INITIALLY", "IMMEDIATE|DEFERRED")))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("REFERENCING", "FOR", "WHEN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("REFERENCING", "FOR", "WHEN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("REFERENCING"))
+ COMPLETE_WITH("OLD TABLE", "NEW TABLE");
+ else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("OLD|NEW", "TABLE"))
+ COMPLETE_WITH("AS");
+ else if (HeadMatches("CREATE", "TRIGGER") &&
+ (TailMatches("REFERENCING", "OLD", "TABLE", "AS", MatchAny) ||
+ TailMatches("REFERENCING", "OLD", "TABLE", MatchAny)))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("NEW TABLE", "FOR", "WHEN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("NEW TABLE", "FOR", "WHEN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "TRIGGER") &&
+ (TailMatches("REFERENCING", "NEW", "TABLE", "AS", MatchAny) ||
+ TailMatches("REFERENCING", "NEW", "TABLE", MatchAny)))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("OLD TABLE", "FOR", "WHEN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("OLD TABLE", "FOR", "WHEN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "TRIGGER") &&
+ (TailMatches("REFERENCING", "OLD|NEW", "TABLE", "AS", MatchAny, "OLD|NEW", "TABLE", "AS", MatchAny) ||
+ TailMatches("REFERENCING", "OLD|NEW", "TABLE", MatchAny, "OLD|NEW", "TABLE", "AS", MatchAny) ||
+ TailMatches("REFERENCING", "OLD|NEW", "TABLE", "AS", MatchAny, "OLD|NEW", "TABLE", MatchAny) ||
+ TailMatches("REFERENCING", "OLD|NEW", "TABLE", MatchAny, "OLD|NEW", "TABLE", MatchAny)))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("FOR", "WHEN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("FOR", "WHEN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("FOR"))
+ COMPLETE_WITH("EACH", "ROW", "STATEMENT");
+ else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("FOR", "EACH"))
+ COMPLETE_WITH("ROW", "STATEMENT");
+ else if (HeadMatches("CREATE", "TRIGGER") &&
+ (TailMatches("FOR", "EACH", "ROW|STATEMENT") ||
+ TailMatches("FOR", "ROW|STATEMENT")))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("WHEN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("WHEN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("WHEN", "(*)"))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("EXECUTE PROCEDURE");
+ }
+ /* complete CREATE TRIGGER ... EXECUTE with PROCEDURE|FUNCTION */
+ else if (HeadMatches("CREATE", "TRIGGER") && TailMatches("EXECUTE"))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("FUNCTION");
+ else
+ COMPLETE_WITH("PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "TRIGGER") &&
+ TailMatches("EXECUTE", "FUNCTION|PROCEDURE"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions, NULL);
+
+/* CREATE ROLE,USER,GROUP <name> */
+ else if (Matches("CREATE", "ROLE|GROUP|USER", MatchAny) &&
+ !TailMatches("USER", "MAPPING"))
+ COMPLETE_WITH("ADMIN", "BYPASSRLS", "CONNECTION LIMIT", "CREATEDB",
+ "CREATEROLE", "ENCRYPTED PASSWORD", "IN", "INHERIT",
+ "LOGIN", "NOBYPASSRLS",
+ "NOCREATEDB", "NOCREATEROLE", "NOINHERIT",
+ "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "PASSWORD",
+ "REPLICATION", "ROLE", "SUPERUSER", "SYSID",
+ "VALID UNTIL", "WITH");
+
+/* CREATE ROLE,USER,GROUP <name> WITH */
+ else if (Matches("CREATE", "ROLE|GROUP|USER", MatchAny, "WITH"))
+ /* Similar to the above, but don't complete "WITH" again. */
+ COMPLETE_WITH("ADMIN", "BYPASSRLS", "CONNECTION LIMIT", "CREATEDB",
+ "CREATEROLE", "ENCRYPTED PASSWORD", "IN", "INHERIT",
+ "LOGIN", "NOBYPASSRLS",
+ "NOCREATEDB", "NOCREATEROLE", "NOINHERIT",
+ "NOLOGIN", "NOREPLICATION", "NOSUPERUSER", "PASSWORD",
+ "REPLICATION", "ROLE", "SUPERUSER", "SYSID",
+ "VALID UNTIL");
+
+ /* complete CREATE ROLE,USER,GROUP <name> IN with ROLE,GROUP */
+ else if (Matches("CREATE", "ROLE|USER|GROUP", MatchAny, "IN"))
+ COMPLETE_WITH("GROUP", "ROLE");
+
+/* CREATE TYPE */
+ else if (Matches("CREATE", "TYPE", MatchAny))
+ COMPLETE_WITH("(", "AS");
+ else if (Matches("CREATE", "TYPE", MatchAny, "AS"))
+ COMPLETE_WITH("ENUM", "RANGE", "(");
+ else if (HeadMatches("CREATE", "TYPE", MatchAny, "AS", "("))
+ {
+ if (TailMatches("(|*,", MatchAny))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
+ else if (TailMatches("(|*,", MatchAny, MatchAnyExcept("*)")))
+ COMPLETE_WITH("COLLATE", ",", ")");
+ }
+ else if (Matches("CREATE", "TYPE", MatchAny, "AS", "ENUM|RANGE"))
+ COMPLETE_WITH("(");
+ else if (HeadMatches("CREATE", "TYPE", MatchAny, "("))
+ {
+ if (TailMatches("(|*,"))
+ COMPLETE_WITH("INPUT", "OUTPUT", "RECEIVE", "SEND",
+ "TYPMOD_IN", "TYPMOD_OUT", "ANALYZE",
+ "INTERNALLENGTH", "PASSEDBYVALUE", "ALIGNMENT",
+ "STORAGE", "LIKE", "CATEGORY", "PREFERRED",
+ "DEFAULT", "ELEMENT", "DELIMITER",
+ "COLLATABLE");
+ else if (TailMatches("(*|*,", MatchAnyExcept("*=")))
+ COMPLETE_WITH("=");
+ else if (TailMatches("=", MatchAnyExcept("*)")))
+ COMPLETE_WITH(",", ")");
+ }
+ else if (HeadMatches("CREATE", "TYPE", MatchAny, "AS", "RANGE", "("))
+ {
+ if (TailMatches("(|*,"))
+ COMPLETE_WITH("SUBTYPE", "SUBTYPE_OPCLASS", "COLLATION",
+ "CANONICAL", "SUBTYPE_DIFF");
+ else if (TailMatches("(*|*,", MatchAnyExcept("*=")))
+ COMPLETE_WITH("=");
+ else if (TailMatches("=", MatchAnyExcept("*)")))
+ COMPLETE_WITH(",", ")");
+ }
+
+/* CREATE VIEW --- is allowed inside CREATE SCHEMA, so use TailMatches */
+ /* Complete CREATE [ OR REPLACE ] VIEW <name> with AS */
+ else if (TailMatches("CREATE", "VIEW", MatchAny) ||
+ TailMatches("CREATE", "OR", "REPLACE", "VIEW", MatchAny))
+ COMPLETE_WITH("AS");
+ /* Complete "CREATE [ OR REPLACE ] VIEW <sth> AS with "SELECT" */
+ else if (TailMatches("CREATE", "VIEW", MatchAny, "AS") ||
+ TailMatches("CREATE", "OR", "REPLACE", "VIEW", MatchAny, "AS"))
+ COMPLETE_WITH("SELECT");
+
+/* CREATE MATERIALIZED VIEW */
+ else if (Matches("CREATE", "MATERIALIZED"))
+ COMPLETE_WITH("VIEW");
+ /* Complete CREATE MATERIALIZED VIEW <name> with AS */
+ else if (Matches("CREATE", "MATERIALIZED", "VIEW", MatchAny))
+ COMPLETE_WITH("AS");
+ /* Complete "CREATE MATERIALIZED VIEW <sth> AS with "SELECT" */
+ else if (Matches("CREATE", "MATERIALIZED", "VIEW", MatchAny, "AS"))
+ COMPLETE_WITH("SELECT");
+
+/* CREATE EVENT TRIGGER */
+ else if (Matches("CREATE", "EVENT"))
+ COMPLETE_WITH("TRIGGER");
+ /* Complete CREATE EVENT TRIGGER <name> with ON */
+ else if (Matches("CREATE", "EVENT", "TRIGGER", MatchAny))
+ COMPLETE_WITH("ON");
+ /* Complete CREATE EVENT TRIGGER <name> ON with event_type */
+ else if (Matches("CREATE", "EVENT", "TRIGGER", MatchAny, "ON"))
+ COMPLETE_WITH("ddl_command_start", "ddl_command_end", "sql_drop");
+
+ /*
+ * Complete CREATE EVENT TRIGGER <name> ON <event_type>. EXECUTE FUNCTION
+ * is the recommended grammar instead of EXECUTE PROCEDURE in version 11
+ * and upwards.
+ */
+ else if (Matches("CREATE", "EVENT", "TRIGGER", MatchAny, "ON", MatchAny))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("WHEN TAG IN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("WHEN TAG IN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "EVENT", "TRIGGER") &&
+ TailMatches("WHEN|AND", MatchAny, "IN", "(*)"))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "EVENT", "TRIGGER") &&
+ TailMatches("EXECUTE", "FUNCTION|PROCEDURE"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions, NULL);
+
+/* DEALLOCATE */
+ else if (Matches("DEALLOCATE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_prepared_statements);
+
+/* DECLARE */
+ else if (Matches("DECLARE", MatchAny))
+ COMPLETE_WITH("BINARY", "INSENSITIVE", "SCROLL", "NO SCROLL",
+ "CURSOR");
+ else if (HeadMatches("DECLARE") && TailMatches("CURSOR"))
+ COMPLETE_WITH("WITH HOLD", "WITHOUT HOLD", "FOR");
+
+/* DELETE --- can be inside EXPLAIN, RULE, etc */
+ /* ... despite which, only complete DELETE with FROM at start of line */
+ else if (Matches("DELETE"))
+ COMPLETE_WITH("FROM");
+ /* Complete DELETE FROM with a list of tables */
+ else if (TailMatches("DELETE", "FROM"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL);
+ /* Complete DELETE FROM <table> */
+ else if (TailMatches("DELETE", "FROM", MatchAny))
+ COMPLETE_WITH("USING", "WHERE");
+ /* XXX: implement tab completion for DELETE ... USING */
+
+/* DISCARD */
+ else if (Matches("DISCARD"))
+ COMPLETE_WITH("ALL", "PLANS", "SEQUENCES", "TEMP");
+
+/* DO */
+ else if (Matches("DO"))
+ COMPLETE_WITH("LANGUAGE");
+
+/* DROP */
+ /* Complete DROP object with CASCADE / RESTRICT */
+ else if (Matches("DROP",
+ "COLLATION|CONVERSION|DOMAIN|EXTENSION|LANGUAGE|PUBLICATION|SCHEMA|SEQUENCE|SERVER|SUBSCRIPTION|STATISTICS|TABLE|TYPE|VIEW",
+ MatchAny) ||
+ Matches("DROP", "ACCESS", "METHOD", MatchAny) ||
+ (Matches("DROP", "AGGREGATE|FUNCTION|PROCEDURE|ROUTINE", MatchAny, MatchAny) &&
+ ends_with(prev_wd, ')')) ||
+ Matches("DROP", "EVENT", "TRIGGER", MatchAny) ||
+ Matches("DROP", "FOREIGN", "DATA", "WRAPPER", MatchAny) ||
+ Matches("DROP", "FOREIGN", "TABLE", MatchAny) ||
+ Matches("DROP", "TEXT", "SEARCH", "CONFIGURATION|DICTIONARY|PARSER|TEMPLATE", MatchAny))
+ COMPLETE_WITH("CASCADE", "RESTRICT");
+
+ /* help completing some of the variants */
+ else if (Matches("DROP", "AGGREGATE|FUNCTION|PROCEDURE|ROUTINE", MatchAny))
+ COMPLETE_WITH("(");
+ else if (Matches("DROP", "AGGREGATE|FUNCTION|PROCEDURE|ROUTINE", MatchAny, "("))
+ COMPLETE_WITH_FUNCTION_ARG(prev2_wd);
+ else if (Matches("DROP", "FOREIGN"))
+ COMPLETE_WITH("DATA WRAPPER", "TABLE");
+ else if (Matches("DROP", "DATABASE", MatchAny))
+ COMPLETE_WITH("WITH (");
+ else if (HeadMatches("DROP", "DATABASE") && (ends_with(prev_wd, '(')))
+ COMPLETE_WITH("FORCE");
+
+ /* DROP INDEX */
+ else if (Matches("DROP", "INDEX"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes,
+ " UNION SELECT 'CONCURRENTLY'");
+ else if (Matches("DROP", "INDEX", "CONCURRENTLY"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL);
+ else if (Matches("DROP", "INDEX", MatchAny))
+ COMPLETE_WITH("CASCADE", "RESTRICT");
+ else if (Matches("DROP", "INDEX", "CONCURRENTLY", MatchAny))
+ COMPLETE_WITH("CASCADE", "RESTRICT");
+
+ /* DROP MATERIALIZED VIEW */
+ else if (Matches("DROP", "MATERIALIZED"))
+ COMPLETE_WITH("VIEW");
+ else if (Matches("DROP", "MATERIALIZED", "VIEW"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
+
+ /* DROP OWNED BY */
+ else if (Matches("DROP", "OWNED"))
+ COMPLETE_WITH("BY");
+ else if (Matches("DROP", "OWNED", "BY"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+
+ /* DROP TEXT SEARCH */
+ else if (Matches("DROP", "TEXT", "SEARCH"))
+ COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
+
+ /* DROP TRIGGER */
+ else if (Matches("DROP", "TRIGGER", MatchAny))
+ COMPLETE_WITH("ON");
+ else if (Matches("DROP", "TRIGGER", MatchAny, "ON"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger);
+ }
+ else if (Matches("DROP", "TRIGGER", MatchAny, "ON", MatchAny))
+ COMPLETE_WITH("CASCADE", "RESTRICT");
+
+ /* DROP ACCESS METHOD */
+ else if (Matches("DROP", "ACCESS"))
+ COMPLETE_WITH("METHOD");
+ else if (Matches("DROP", "ACCESS", "METHOD"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_access_methods);
+
+ /* DROP EVENT TRIGGER */
+ else if (Matches("DROP", "EVENT"))
+ COMPLETE_WITH("TRIGGER");
+ else if (Matches("DROP", "EVENT", "TRIGGER"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
+
+ /* DROP POLICY <name> */
+ else if (Matches("DROP", "POLICY"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_policies);
+ /* DROP POLICY <name> ON */
+ else if (Matches("DROP", "POLICY", MatchAny))
+ COMPLETE_WITH("ON");
+ /* DROP POLICY <name> ON <table> */
+ else if (Matches("DROP", "POLICY", MatchAny, "ON"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_policy);
+ }
+
+ /* DROP RULE */
+ else if (Matches("DROP", "RULE", MatchAny))
+ COMPLETE_WITH("ON");
+ else if (Matches("DROP", "RULE", MatchAny, "ON"))
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule);
+ }
+ else if (Matches("DROP", "RULE", MatchAny, "ON", MatchAny))
+ COMPLETE_WITH("CASCADE", "RESTRICT");
+
+/* EXECUTE */
+ else if (Matches("EXECUTE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_prepared_statements);
+
+/*
+ * EXPLAIN [ ( option [, ...] ) ] statement
+ * EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
+ */
+ else if (Matches("EXPLAIN"))
+ COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE",
+ "ANALYZE", "VERBOSE");
+ else if (HeadMatches("EXPLAIN", "(*") &&
+ !HeadMatches("EXPLAIN", "(*)"))
+ {
+ /*
+ * This fires if we're in an unfinished parenthesized option list.
+ * get_previous_words treats a completed parenthesized option list as
+ * one word, so the above test is correct.
+ */
+ if (ends_with(prev_wd, '(') || ends_with(prev_wd, ','))
+ COMPLETE_WITH("ANALYZE", "VERBOSE", "COSTS", "SETTINGS",
+ "BUFFERS", "WAL", "TIMING", "SUMMARY", "FORMAT");
+ else if (TailMatches("ANALYZE|VERBOSE|COSTS|SETTINGS|BUFFERS|WAL|TIMING|SUMMARY"))
+ COMPLETE_WITH("ON", "OFF");
+ else if (TailMatches("FORMAT"))
+ COMPLETE_WITH("TEXT", "XML", "JSON", "YAML");
+ }
+ else if (Matches("EXPLAIN", "ANALYZE"))
+ COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE",
+ "VERBOSE");
+ else if (Matches("EXPLAIN", "(*)") ||
+ Matches("EXPLAIN", "VERBOSE") ||
+ Matches("EXPLAIN", "ANALYZE", "VERBOSE"))
+ COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE");
+
+/* FETCH && MOVE */
+ /* Complete FETCH with one of FORWARD, BACKWARD, RELATIVE */
+ else if (Matches("FETCH|MOVE"))
+ COMPLETE_WITH("ABSOLUTE", "BACKWARD", "FORWARD", "RELATIVE");
+ /* Complete FETCH <sth> with one of ALL, NEXT, PRIOR */
+ else if (Matches("FETCH|MOVE", MatchAny))
+ COMPLETE_WITH("ALL", "NEXT", "PRIOR");
+
+ /*
+ * Complete FETCH <sth1> <sth2> with "FROM" or "IN". These are equivalent,
+ * but we may as well tab-complete both: perhaps some users prefer one
+ * variant or the other.
+ */
+ else if (Matches("FETCH|MOVE", MatchAny, MatchAny))
+ COMPLETE_WITH("FROM", "IN");
+
+/* FOREIGN DATA WRAPPER */
+ /* applies in ALTER/DROP FDW and in CREATE SERVER */
+ else if (TailMatches("FOREIGN", "DATA", "WRAPPER") &&
+ !TailMatches("CREATE", MatchAny, MatchAny, MatchAny))
+ COMPLETE_WITH_QUERY(Query_for_list_of_fdws);
+ /* applies in CREATE SERVER */
+ else if (TailMatches("FOREIGN", "DATA", "WRAPPER", MatchAny) &&
+ HeadMatches("CREATE", "SERVER"))
+ COMPLETE_WITH("OPTIONS");
+
+/* FOREIGN TABLE */
+ else if (TailMatches("FOREIGN", "TABLE") &&
+ !TailMatches("CREATE", MatchAny, MatchAny))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables, NULL);
+
+/* FOREIGN SERVER */
+ else if (TailMatches("FOREIGN", "SERVER"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_servers);
+
+/*
+ * GRANT and REVOKE are allowed inside CREATE SCHEMA and
+ * ALTER DEFAULT PRIVILEGES, so use TailMatches
+ */
+ /* Complete GRANT/REVOKE with a list of roles and privileges */
+ else if (TailMatches("GRANT|REVOKE"))
+ {
+ /*
+ * With ALTER DEFAULT PRIVILEGES, restrict completion to grantable
+ * privileges (can't grant roles)
+ */
+ if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES"))
+ COMPLETE_WITH("SELECT", "INSERT", "UPDATE",
+ "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER",
+ "EXECUTE", "USAGE", "ALL");
+ else
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles
+ " UNION SELECT 'SELECT'"
+ " UNION SELECT 'INSERT'"
+ " UNION SELECT 'UPDATE'"
+ " UNION SELECT 'DELETE'"
+ " UNION SELECT 'TRUNCATE'"
+ " UNION SELECT 'REFERENCES'"
+ " UNION SELECT 'TRIGGER'"
+ " UNION SELECT 'CREATE'"
+ " UNION SELECT 'CONNECT'"
+ " UNION SELECT 'TEMPORARY'"
+ " UNION SELECT 'EXECUTE'"
+ " UNION SELECT 'USAGE'"
+ " UNION SELECT 'ALL'");
+ }
+
+ /*
+ * Complete GRANT/REVOKE <privilege> with "ON", GRANT/REVOKE <role> with
+ * TO/FROM
+ */
+ else if (TailMatches("GRANT|REVOKE", MatchAny))
+ {
+ if (TailMatches("SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|TRIGGER|CREATE|CONNECT|TEMPORARY|TEMP|EXECUTE|USAGE|ALL"))
+ COMPLETE_WITH("ON");
+ else if (TailMatches("GRANT", MatchAny))
+ COMPLETE_WITH("TO");
+ else
+ COMPLETE_WITH("FROM");
+ }
+
+ /*
+ * Complete GRANT/REVOKE <sth> ON with a list of appropriate relations.
+ *
+ * Keywords like DATABASE, FUNCTION, LANGUAGE and SCHEMA added to query
+ * result via UNION; seems to work intuitively.
+ *
+ * Note: GRANT/REVOKE can get quite complex; tab-completion as implemented
+ * here will only work if the privilege list contains exactly one
+ * privilege.
+ */
+ else if (TailMatches("GRANT|REVOKE", MatchAny, "ON"))
+ {
+ /*
+ * With ALTER DEFAULT PRIVILEGES, restrict completion to the kinds of
+ * objects supported.
+ */
+ if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES"))
+ COMPLETE_WITH("TABLES", "SEQUENCES", "FUNCTIONS", "PROCEDURES", "ROUTINES", "TYPES", "SCHEMAS");
+ else
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_grantables,
+ " UNION SELECT 'ALL FUNCTIONS IN SCHEMA'"
+ " UNION SELECT 'ALL PROCEDURES IN SCHEMA'"
+ " UNION SELECT 'ALL ROUTINES IN SCHEMA'"
+ " UNION SELECT 'ALL SEQUENCES IN SCHEMA'"
+ " UNION SELECT 'ALL TABLES IN SCHEMA'"
+ " UNION SELECT 'DATABASE'"
+ " UNION SELECT 'DOMAIN'"
+ " UNION SELECT 'FOREIGN DATA WRAPPER'"
+ " UNION SELECT 'FOREIGN SERVER'"
+ " UNION SELECT 'FUNCTION'"
+ " UNION SELECT 'LANGUAGE'"
+ " UNION SELECT 'LARGE OBJECT'"
+ " UNION SELECT 'PROCEDURE'"
+ " UNION SELECT 'ROUTINE'"
+ " UNION SELECT 'SCHEMA'"
+ " UNION SELECT 'SEQUENCE'"
+ " UNION SELECT 'TABLE'"
+ " UNION SELECT 'TABLESPACE'"
+ " UNION SELECT 'TYPE'");
+ }
+ else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "ALL"))
+ COMPLETE_WITH("FUNCTIONS IN SCHEMA",
+ "PROCEDURES IN SCHEMA",
+ "ROUTINES IN SCHEMA",
+ "SEQUENCES IN SCHEMA",
+ "TABLES IN SCHEMA");
+ else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "FOREIGN"))
+ COMPLETE_WITH("DATA WRAPPER", "SERVER");
+
+ /*
+ * Complete "GRANT/REVOKE * ON DATABASE/DOMAIN/..." with a list of
+ * appropriate objects.
+ *
+ * Complete "GRANT/REVOKE * ON *" with "TO/FROM".
+ */
+ else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", MatchAny))
+ {
+ if (TailMatches("DATABASE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_databases);
+ else if (TailMatches("DOMAIN"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL);
+ else if (TailMatches("FUNCTION"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions, NULL);
+ else if (TailMatches("LANGUAGE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_languages);
+ else if (TailMatches("PROCEDURE"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_procedures, NULL);
+ else if (TailMatches("ROUTINE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_routines, NULL);
+ else if (TailMatches("SCHEMA"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_schemas);
+ else if (TailMatches("SEQUENCE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_sequences, NULL);
+ else if (TailMatches("TABLE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_grantables, NULL);
+ else if (TailMatches("TABLESPACE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces);
+ else if (TailMatches("TYPE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
+ else if (TailMatches("GRANT", MatchAny, MatchAny, MatchAny))
+ COMPLETE_WITH("TO");
+ else
+ COMPLETE_WITH("FROM");
+ }
+
+ /*
+ * Complete "GRANT/REVOKE ... TO/FROM" with username, PUBLIC,
+ * CURRENT_USER, or SESSION_USER.
+ */
+ else if ((HeadMatches("GRANT") && TailMatches("TO")) ||
+ (HeadMatches("REVOKE") && TailMatches("FROM")))
+ COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles);
+ /* Complete "ALTER DEFAULT PRIVILEGES ... GRANT/REVOKE ... TO/FROM */
+ else if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES") && TailMatches("TO|FROM"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles);
+ /* Complete "GRANT/REVOKE ... ON * *" with TO/FROM */
+ else if (HeadMatches("GRANT") && TailMatches("ON", MatchAny, MatchAny))
+ COMPLETE_WITH("TO");
+ else if (HeadMatches("REVOKE") && TailMatches("ON", MatchAny, MatchAny))
+ COMPLETE_WITH("FROM");
+
+ /* Complete "GRANT/REVOKE * ON ALL * IN SCHEMA *" with TO/FROM */
+ else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "ALL", MatchAny, "IN", "SCHEMA", MatchAny))
+ {
+ if (TailMatches("GRANT", MatchAny, MatchAny, MatchAny, MatchAny, MatchAny, MatchAny, MatchAny))
+ COMPLETE_WITH("TO");
+ else
+ COMPLETE_WITH("FROM");
+ }
+
+ /* Complete "GRANT/REVOKE * ON FOREIGN DATA WRAPPER *" with TO/FROM */
+ else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "FOREIGN", "DATA", "WRAPPER", MatchAny))
+ {
+ if (TailMatches("GRANT", MatchAny, MatchAny, MatchAny, MatchAny, MatchAny, MatchAny))
+ COMPLETE_WITH("TO");
+ else
+ COMPLETE_WITH("FROM");
+ }
+
+ /* Complete "GRANT/REVOKE * ON FOREIGN SERVER *" with TO/FROM */
+ else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "FOREIGN", "SERVER", MatchAny))
+ {
+ if (TailMatches("GRANT", MatchAny, MatchAny, MatchAny, MatchAny, MatchAny))
+ COMPLETE_WITH("TO");
+ else
+ COMPLETE_WITH("FROM");
+ }
+
+/* GROUP BY */
+ else if (TailMatches("FROM", MatchAny, "GROUP"))
+ COMPLETE_WITH("BY");
+
+/* IMPORT FOREIGN SCHEMA */
+ else if (Matches("IMPORT"))
+ COMPLETE_WITH("FOREIGN SCHEMA");
+ else if (Matches("IMPORT", "FOREIGN"))
+ COMPLETE_WITH("SCHEMA");
+
+/* INSERT --- can be inside EXPLAIN, RULE, etc */
+ /* Complete INSERT with "INTO" */
+ else if (TailMatches("INSERT"))
+ COMPLETE_WITH("INTO");
+ /* Complete INSERT INTO with table names */
+ else if (TailMatches("INSERT", "INTO"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL);
+ /* Complete "INSERT INTO <table> (" with attribute names */
+ else if (TailMatches("INSERT", "INTO", MatchAny, "("))
+ COMPLETE_WITH_ATTR(prev2_wd, "");
+
+ /*
+ * Complete INSERT INTO <table> with "(" or "VALUES" or "SELECT" or
+ * "TABLE" or "DEFAULT VALUES" or "OVERRIDING"
+ */
+ else if (TailMatches("INSERT", "INTO", MatchAny))
+ COMPLETE_WITH("(", "DEFAULT VALUES", "SELECT", "TABLE", "VALUES", "OVERRIDING");
+
+ /*
+ * Complete INSERT INTO <table> (attribs) with "VALUES" or "SELECT" or
+ * "TABLE" or "OVERRIDING"
+ */
+ else if (TailMatches("INSERT", "INTO", MatchAny, MatchAny) &&
+ ends_with(prev_wd, ')'))
+ COMPLETE_WITH("SELECT", "TABLE", "VALUES", "OVERRIDING");
+
+ /* Complete OVERRIDING */
+ else if (TailMatches("OVERRIDING"))
+ COMPLETE_WITH("SYSTEM VALUE", "USER VALUE");
+
+ /* Complete after OVERRIDING clause */
+ else if (TailMatches("OVERRIDING", MatchAny, "VALUE"))
+ COMPLETE_WITH("SELECT", "TABLE", "VALUES");
+
+ /* Insert an open parenthesis after "VALUES" */
+ else if (TailMatches("VALUES") && !TailMatches("DEFAULT", "VALUES"))
+ COMPLETE_WITH("(");
+
+/* LOCK */
+ /* Complete LOCK [TABLE] with a list of tables */
+ else if (Matches("LOCK"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,
+ " UNION SELECT 'TABLE'");
+ else if (Matches("LOCK", "TABLE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, "");
+
+ /* For the following, handle the case of a single table only for now */
+
+ /* Complete LOCK [TABLE] <table> with "IN" */
+ else if (Matches("LOCK", MatchAnyExcept("TABLE")) ||
+ Matches("LOCK", "TABLE", MatchAny))
+ COMPLETE_WITH("IN");
+
+ /* Complete LOCK [TABLE] <table> IN with a lock mode */
+ else if (Matches("LOCK", MatchAny, "IN") ||
+ Matches("LOCK", "TABLE", MatchAny, "IN"))
+ COMPLETE_WITH("ACCESS SHARE MODE",
+ "ROW SHARE MODE", "ROW EXCLUSIVE MODE",
+ "SHARE UPDATE EXCLUSIVE MODE", "SHARE MODE",
+ "SHARE ROW EXCLUSIVE MODE",
+ "EXCLUSIVE MODE", "ACCESS EXCLUSIVE MODE");
+
+ /* Complete LOCK [TABLE] <table> IN ACCESS|ROW with rest of lock mode */
+ else if (Matches("LOCK", MatchAny, "IN", "ACCESS|ROW") ||
+ Matches("LOCK", "TABLE", MatchAny, "IN", "ACCESS|ROW"))
+ COMPLETE_WITH("EXCLUSIVE MODE", "SHARE MODE");
+
+ /* Complete LOCK [TABLE] <table> IN SHARE with rest of lock mode */
+ else if (Matches("LOCK", MatchAny, "IN", "SHARE") ||
+ Matches("LOCK", "TABLE", MatchAny, "IN", "SHARE"))
+ COMPLETE_WITH("MODE", "ROW EXCLUSIVE MODE",
+ "UPDATE EXCLUSIVE MODE");
+
+/* NOTIFY --- can be inside EXPLAIN, RULE, etc */
+ else if (TailMatches("NOTIFY"))
+ COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(channel) FROM pg_catalog.pg_listening_channels() AS channel WHERE substring(pg_catalog.quote_ident(channel),1,%d)='%s'");
+
+/* OPTIONS */
+ else if (TailMatches("OPTIONS"))
+ COMPLETE_WITH("(");
+
+/* OWNER TO - complete with available roles */
+ else if (TailMatches("OWNER", "TO"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+
+/* ORDER BY */
+ else if (TailMatches("FROM", MatchAny, "ORDER"))
+ COMPLETE_WITH("BY");
+ else if (TailMatches("FROM", MatchAny, "ORDER", "BY"))
+ COMPLETE_WITH_ATTR(prev3_wd, "");
+
+/* PREPARE xx AS */
+ else if (Matches("PREPARE", MatchAny, "AS"))
+ COMPLETE_WITH("SELECT", "UPDATE", "INSERT", "DELETE FROM");
+
+/*
+ * PREPARE TRANSACTION is missing on purpose. It's intended for transaction
+ * managers, not for manual use in interactive sessions.
+ */
+
+/* REASSIGN OWNED BY xxx TO yyy */
+ else if (Matches("REASSIGN"))
+ COMPLETE_WITH("OWNED BY");
+ else if (Matches("REASSIGN", "OWNED"))
+ COMPLETE_WITH("BY");
+ else if (Matches("REASSIGN", "OWNED", "BY"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+ else if (Matches("REASSIGN", "OWNED", "BY", MatchAny))
+ COMPLETE_WITH("TO");
+ else if (Matches("REASSIGN", "OWNED", "BY", MatchAny, "TO"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+
+/* REFRESH MATERIALIZED VIEW */
+ else if (Matches("REFRESH"))
+ COMPLETE_WITH("MATERIALIZED VIEW");
+ else if (Matches("REFRESH", "MATERIALIZED"))
+ COMPLETE_WITH("VIEW");
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews,
+ " UNION SELECT 'CONCURRENTLY'");
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW", MatchAny))
+ COMPLETE_WITH("WITH");
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny))
+ COMPLETE_WITH("WITH");
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW", MatchAny, "WITH"))
+ COMPLETE_WITH("NO DATA", "DATA");
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny, "WITH"))
+ COMPLETE_WITH("NO DATA", "DATA");
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW", MatchAny, "WITH", "NO"))
+ COMPLETE_WITH("DATA");
+ else if (Matches("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY", MatchAny, "WITH", "NO"))
+ COMPLETE_WITH("DATA");
+
+/* REINDEX */
+ else if (Matches("REINDEX"))
+ COMPLETE_WITH("TABLE", "INDEX", "SYSTEM", "SCHEMA", "DATABASE");
+ else if (Matches("REINDEX", "TABLE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexables,
+ " UNION SELECT 'CONCURRENTLY'");
+ else if (Matches("REINDEX", "INDEX"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes,
+ " UNION SELECT 'CONCURRENTLY'");
+ else if (Matches("REINDEX", "SCHEMA"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_schemas
+ " UNION SELECT 'CONCURRENTLY'");
+ else if (Matches("REINDEX", "SYSTEM|DATABASE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_databases
+ " UNION SELECT 'CONCURRENTLY'");
+ else if (Matches("REINDEX", "TABLE", "CONCURRENTLY"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexables, NULL);
+ else if (Matches("REINDEX", "INDEX", "CONCURRENTLY"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL);
+ else if (Matches("REINDEX", "SCHEMA", "CONCURRENTLY"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_schemas);
+ else if (Matches("REINDEX", "SYSTEM|DATABASE", "CONCURRENTLY"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_databases);
+
+/* SECURITY LABEL */
+ else if (Matches("SECURITY"))
+ COMPLETE_WITH("LABEL");
+ else if (Matches("SECURITY", "LABEL"))
+ COMPLETE_WITH("ON", "FOR");
+ else if (Matches("SECURITY", "LABEL", "FOR", MatchAny))
+ COMPLETE_WITH("ON");
+ else if (Matches("SECURITY", "LABEL", "ON") ||
+ Matches("SECURITY", "LABEL", "FOR", MatchAny, "ON"))
+ COMPLETE_WITH("TABLE", "COLUMN", "AGGREGATE", "DATABASE", "DOMAIN",
+ "EVENT TRIGGER", "FOREIGN TABLE", "FUNCTION",
+ "LARGE OBJECT", "MATERIALIZED VIEW", "LANGUAGE",
+ "PUBLICATION", "PROCEDURE", "ROLE", "ROUTINE", "SCHEMA",
+ "SEQUENCE", "SUBSCRIPTION", "TABLESPACE", "TYPE", "VIEW");
+ else if (Matches("SECURITY", "LABEL", "ON", MatchAny, MatchAny))
+ COMPLETE_WITH("IS");
+
+/* SELECT */
+ /* naah . . . */
+
+/* SET, RESET, SHOW */
+ /* Complete with a variable name */
+ else if (TailMatches("SET|RESET") && !TailMatches("UPDATE", MatchAny, "SET"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_set_vars);
+ else if (Matches("SHOW"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_show_vars);
+ /* Complete "SET TRANSACTION" */
+ else if (Matches("SET", "TRANSACTION"))
+ COMPLETE_WITH("SNAPSHOT", "ISOLATION LEVEL", "READ", "DEFERRABLE", "NOT DEFERRABLE");
+ else if (Matches("BEGIN|START", "TRANSACTION") ||
+ Matches("BEGIN", "WORK") ||
+ Matches("BEGIN") ||
+ Matches("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION"))
+ COMPLETE_WITH("ISOLATION LEVEL", "READ", "DEFERRABLE", "NOT DEFERRABLE");
+ else if (Matches("SET|BEGIN|START", "TRANSACTION|WORK", "NOT") ||
+ Matches("BEGIN", "NOT") ||
+ Matches("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "NOT"))
+ COMPLETE_WITH("DEFERRABLE");
+ else if (Matches("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION") ||
+ Matches("BEGIN", "ISOLATION") ||
+ Matches("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION"))
+ COMPLETE_WITH("LEVEL");
+ else if (Matches("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL") ||
+ Matches("BEGIN", "ISOLATION", "LEVEL") ||
+ Matches("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION", "LEVEL"))
+ COMPLETE_WITH("READ", "REPEATABLE READ", "SERIALIZABLE");
+ else if (Matches("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL", "READ") ||
+ Matches("BEGIN", "ISOLATION", "LEVEL", "READ") ||
+ Matches("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION", "LEVEL", "READ"))
+ COMPLETE_WITH("UNCOMMITTED", "COMMITTED");
+ else if (Matches("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL", "REPEATABLE") ||
+ Matches("BEGIN", "ISOLATION", "LEVEL", "REPEATABLE") ||
+ Matches("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION", "LEVEL", "REPEATABLE"))
+ COMPLETE_WITH("READ");
+ else if (Matches("SET|BEGIN|START", "TRANSACTION|WORK", "READ") ||
+ Matches("BEGIN", "READ") ||
+ Matches("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "READ"))
+ COMPLETE_WITH("ONLY", "WRITE");
+ /* SET CONSTRAINTS */
+ else if (Matches("SET", "CONSTRAINTS"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_constraints_with_schema, "UNION SELECT 'ALL'");
+ /* Complete SET CONSTRAINTS <foo> with DEFERRED|IMMEDIATE */
+ else if (Matches("SET", "CONSTRAINTS", MatchAny))
+ COMPLETE_WITH("DEFERRED", "IMMEDIATE");
+ /* Complete SET ROLE */
+ else if (Matches("SET", "ROLE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+ /* Complete SET SESSION with AUTHORIZATION or CHARACTERISTICS... */
+ else if (Matches("SET", "SESSION"))
+ COMPLETE_WITH("AUTHORIZATION", "CHARACTERISTICS AS TRANSACTION");
+ /* Complete SET SESSION AUTHORIZATION with username */
+ else if (Matches("SET", "SESSION", "AUTHORIZATION"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles " UNION SELECT 'DEFAULT'");
+ /* Complete RESET SESSION with AUTHORIZATION */
+ else if (Matches("RESET", "SESSION"))
+ COMPLETE_WITH("AUTHORIZATION");
+ /* Complete SET <var> with "TO" */
+ else if (Matches("SET", MatchAny))
+ COMPLETE_WITH("TO");
+
+ /*
+ * Complete ALTER DATABASE|FUNCTION||PROCEDURE|ROLE|ROUTINE|USER ... SET
+ * <name>
+ */
+ else if (HeadMatches("ALTER", "DATABASE|FUNCTION|PROCEDURE|ROLE|ROUTINE|USER") &&
+ TailMatches("SET", MatchAny))
+ COMPLETE_WITH("FROM CURRENT", "TO");
+
+ /*
+ * Suggest possible variable values in SET variable TO|=, along with the
+ * preceding ALTER syntaxes.
+ */
+ else if (TailMatches("SET", MatchAny, "TO|=") &&
+ !TailMatches("UPDATE", MatchAny, "SET", MatchAny, "TO|="))
+ {
+ /* special cased code for individual GUCs */
+ if (TailMatches("DateStyle", "TO|="))
+ COMPLETE_WITH("ISO", "SQL", "Postgres", "German",
+ "YMD", "DMY", "MDY",
+ "US", "European", "NonEuropean",
+ "DEFAULT");
+ else if (TailMatches("search_path", "TO|="))
+ COMPLETE_WITH_QUERY(Query_for_list_of_schemas
+ " AND nspname not like 'pg\\_toast%%' "
+ " AND nspname not like 'pg\\_temp%%' "
+ " UNION SELECT 'DEFAULT' ");
+ else
+ {
+ /* generic, type based, GUC support */
+ char *guctype = get_guctype(prev2_wd);
+
+ /*
+ * Note: if we don't recognize the GUC name, it's important to not
+ * offer any completions, as most likely we've misinterpreted the
+ * context and this isn't a GUC-setting command at all.
+ */
+ if (guctype)
+ {
+ if (strcmp(guctype, "enum") == 0)
+ {
+ char querybuf[1024];
+
+ snprintf(querybuf, sizeof(querybuf),
+ Query_for_enum, prev2_wd);
+ COMPLETE_WITH_QUERY(querybuf);
+ }
+ else if (strcmp(guctype, "bool") == 0)
+ COMPLETE_WITH("on", "off", "true", "false", "yes", "no",
+ "1", "0", "DEFAULT");
+ else
+ COMPLETE_WITH("DEFAULT");
+
+ free(guctype);
+ }
+ }
+ }
+
+/* START TRANSACTION */
+ else if (Matches("START"))
+ COMPLETE_WITH("TRANSACTION");
+
+/* TABLE, but not TABLE embedded in other commands */
+ else if (Matches("TABLE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_selectables, NULL);
+
+/* TABLESAMPLE */
+ else if (TailMatches("TABLESAMPLE"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_tablesample_methods);
+ else if (TailMatches("TABLESAMPLE", MatchAny))
+ COMPLETE_WITH("(");
+
+/* TRUNCATE */
+ else if (Matches("TRUNCATE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+
+/* UNLISTEN */
+ else if (Matches("UNLISTEN"))
+ COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(channel) FROM pg_catalog.pg_listening_channels() AS channel WHERE substring(pg_catalog.quote_ident(channel),1,%d)='%s' UNION SELECT '*'");
+
+/* UPDATE --- can be inside EXPLAIN, RULE, etc */
+ /* If prev. word is UPDATE suggest a list of tables */
+ else if (TailMatches("UPDATE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_updatables, NULL);
+ /* Complete UPDATE <table> with "SET" */
+ else if (TailMatches("UPDATE", MatchAny))
+ COMPLETE_WITH("SET");
+ /* Complete UPDATE <table> SET with list of attributes */
+ else if (TailMatches("UPDATE", MatchAny, "SET"))
+ COMPLETE_WITH_ATTR(prev2_wd, "");
+ /* UPDATE <table> SET <attr> = */
+ else if (TailMatches("UPDATE", MatchAny, "SET", MatchAnyExcept("*=")))
+ COMPLETE_WITH("=");
+
+/* USER MAPPING */
+ else if (Matches("ALTER|CREATE|DROP", "USER", "MAPPING"))
+ COMPLETE_WITH("FOR");
+ else if (Matches("CREATE", "USER", "MAPPING", "FOR"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles
+ " UNION SELECT 'CURRENT_USER'"
+ " UNION SELECT 'PUBLIC'"
+ " UNION SELECT 'USER'");
+ else if (Matches("ALTER|DROP", "USER", "MAPPING", "FOR"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings);
+ else if (Matches("CREATE|ALTER|DROP", "USER", "MAPPING", "FOR", MatchAny))
+ COMPLETE_WITH("SERVER");
+ else if (Matches("CREATE|ALTER", "USER", "MAPPING", "FOR", MatchAny, "SERVER", MatchAny))
+ COMPLETE_WITH("OPTIONS");
+
+/*
+ * VACUUM [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
+ * VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ table_and_columns [, ...] ]
+ */
+ else if (Matches("VACUUM"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_vacuumables,
+ " UNION SELECT 'FULL'"
+ " UNION SELECT 'FREEZE'"
+ " UNION SELECT 'ANALYZE'"
+ " UNION SELECT 'VERBOSE'");
+ else if (Matches("VACUUM", "FULL"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_vacuumables,
+ " UNION SELECT 'FREEZE'"
+ " UNION SELECT 'ANALYZE'"
+ " UNION SELECT 'VERBOSE'");
+ else if (Matches("VACUUM", "FREEZE") ||
+ Matches("VACUUM", "FULL", "FREEZE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_vacuumables,
+ " UNION SELECT 'VERBOSE'"
+ " UNION SELECT 'ANALYZE'");
+ else if (Matches("VACUUM", "VERBOSE") ||
+ Matches("VACUUM", "FULL|FREEZE", "VERBOSE") ||
+ Matches("VACUUM", "FULL", "FREEZE", "VERBOSE"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_vacuumables,
+ " UNION SELECT 'ANALYZE'");
+ else if (HeadMatches("VACUUM", "(*") &&
+ !HeadMatches("VACUUM", "(*)"))
+ {
+ /*
+ * This fires if we're in an unfinished parenthesized option list.
+ * get_previous_words treats a completed parenthesized option list as
+ * one word, so the above test is correct.
+ */
+ if (ends_with(prev_wd, '(') || ends_with(prev_wd, ','))
+ COMPLETE_WITH("FULL", "FREEZE", "ANALYZE", "VERBOSE",
+ "DISABLE_PAGE_SKIPPING", "SKIP_LOCKED",
+ "INDEX_CLEANUP", "TRUNCATE", "PARALLEL");
+ else if (TailMatches("FULL|FREEZE|ANALYZE|VERBOSE|DISABLE_PAGE_SKIPPING|SKIP_LOCKED|INDEX_CLEANUP|TRUNCATE"))
+ COMPLETE_WITH("ON", "OFF");
+ }
+ else if (HeadMatches("VACUUM") && TailMatches("("))
+ /* "VACUUM (" should be caught above, so assume we want columns */
+ COMPLETE_WITH_ATTR(prev2_wd, "");
+ else if (HeadMatches("VACUUM"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_vacuumables, NULL);
+
+/* WITH [RECURSIVE] */
+
+ /*
+ * Only match when WITH is the first word, as WITH may appear in many
+ * other contexts.
+ */
+ else if (Matches("WITH"))
+ COMPLETE_WITH("RECURSIVE");
+
+/* WHERE */
+ /* Simple case of the word before the where being the table name */
+ else if (TailMatches(MatchAny, "WHERE"))
+ COMPLETE_WITH_ATTR(prev2_wd, "");
+
+/* ... FROM ... */
+/* TODO: also include SRF ? */
+ else if (TailMatches("FROM") && !Matches("COPY|\\copy", MatchAny, "FROM"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_selectables, NULL);
+
+/* ... JOIN ... */
+ else if (TailMatches("JOIN"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_selectables, NULL);
+
+/* Backslash commands */
+/* TODO: \dc \dd \dl */
+ else if (TailMatchesCS("\\?"))
+ COMPLETE_WITH_CS("commands", "options", "variables");
+ else if (TailMatchesCS("\\connect|\\c"))
+ {
+ if (!recognized_connection_string(text))
+ COMPLETE_WITH_QUERY(Query_for_list_of_databases);
+ }
+ else if (TailMatchesCS("\\connect|\\c", MatchAny))
+ {
+ if (!recognized_connection_string(prev_wd))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+ }
+ else if (TailMatchesCS("\\da*"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_aggregates, NULL);
+ else if (TailMatchesCS("\\dAc*", MatchAny) ||
+ TailMatchesCS("\\dAf*", MatchAny))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
+ else if (TailMatchesCS("\\dAo*", MatchAny) ||
+ TailMatchesCS("\\dAp*", MatchAny))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_operator_families, NULL);
+ else if (TailMatchesCS("\\dA*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_access_methods);
+ else if (TailMatchesCS("\\db*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces);
+ else if (TailMatchesCS("\\dD*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL);
+ else if (TailMatchesCS("\\des*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_servers);
+ else if (TailMatchesCS("\\deu*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_user_mappings);
+ else if (TailMatchesCS("\\dew*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_fdws);
+ else if (TailMatchesCS("\\df*"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions, NULL);
+
+ else if (TailMatchesCS("\\dFd*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_ts_dictionaries);
+ else if (TailMatchesCS("\\dFp*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_ts_parsers);
+ else if (TailMatchesCS("\\dFt*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_ts_templates);
+ /* must be at end of \dF alternatives: */
+ else if (TailMatchesCS("\\dF*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_ts_configurations);
+
+ else if (TailMatchesCS("\\di*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes, NULL);
+ else if (TailMatchesCS("\\dL*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_languages);
+ else if (TailMatchesCS("\\dn*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_schemas);
+ else if (TailMatchesCS("\\dp") || TailMatchesCS("\\z"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_grantables, NULL);
+ else if (TailMatchesCS("\\dPi*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_indexes, NULL);
+ else if (TailMatchesCS("\\dPt*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_tables, NULL);
+ else if (TailMatchesCS("\\dP*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_relations, NULL);
+ else if (TailMatchesCS("\\ds*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_sequences, NULL);
+ else if (TailMatchesCS("\\dt*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+ else if (TailMatchesCS("\\dT*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
+ else if (TailMatchesCS("\\du*") || TailMatchesCS("\\dg*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+ else if (TailMatchesCS("\\dv*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL);
+ else if (TailMatchesCS("\\dx*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_extensions);
+ else if (TailMatchesCS("\\dm*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
+ else if (TailMatchesCS("\\dE*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables, NULL);
+ else if (TailMatchesCS("\\dy*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
+
+ /* must be at end of \d alternatives: */
+ else if (TailMatchesCS("\\d*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_relations, NULL);
+
+ else if (TailMatchesCS("\\ef"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_routines, NULL);
+ else if (TailMatchesCS("\\ev"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL);
+
+ else if (TailMatchesCS("\\encoding"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_encodings);
+ else if (TailMatchesCS("\\h|\\help"))
+ COMPLETE_WITH_LIST(sql_commands);
+ else if (TailMatchesCS("\\h|\\help", MatchAny))
+ {
+ if (TailMatches("DROP"))
+ matches = rl_completion_matches(text, drop_command_generator);
+ else if (TailMatches("ALTER"))
+ matches = rl_completion_matches(text, alter_command_generator);
+
+ /*
+ * CREATE is recognized by tail match elsewhere, so doesn't need to be
+ * repeated here
+ */
+ }
+ else if (TailMatchesCS("\\h|\\help", MatchAny, MatchAny))
+ {
+ if (TailMatches("CREATE|DROP", "ACCESS"))
+ COMPLETE_WITH("METHOD");
+ else if (TailMatches("ALTER", "DEFAULT"))
+ COMPLETE_WITH("PRIVILEGES");
+ else if (TailMatches("CREATE|ALTER|DROP", "EVENT"))
+ COMPLETE_WITH("TRIGGER");
+ else if (TailMatches("CREATE|ALTER|DROP", "FOREIGN"))
+ COMPLETE_WITH("DATA WRAPPER", "TABLE");
+ else if (TailMatches("ALTER", "LARGE"))
+ COMPLETE_WITH("OBJECT");
+ else if (TailMatches("CREATE|ALTER|DROP", "MATERIALIZED"))
+ COMPLETE_WITH("VIEW");
+ else if (TailMatches("CREATE|ALTER|DROP", "TEXT"))
+ COMPLETE_WITH("SEARCH");
+ else if (TailMatches("CREATE|ALTER|DROP", "USER"))
+ COMPLETE_WITH("MAPPING FOR");
+ }
+ else if (TailMatchesCS("\\h|\\help", MatchAny, MatchAny, MatchAny))
+ {
+ if (TailMatches("CREATE|ALTER|DROP", "FOREIGN", "DATA"))
+ COMPLETE_WITH("WRAPPER");
+ else if (TailMatches("CREATE|ALTER|DROP", "TEXT", "SEARCH"))
+ COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
+ else if (TailMatches("CREATE|ALTER|DROP", "USER", "MAPPING"))
+ COMPLETE_WITH("FOR");
+ }
+ else if (TailMatchesCS("\\l*") && !TailMatchesCS("\\lo*"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_databases);
+ else if (TailMatchesCS("\\password"))
+ COMPLETE_WITH_QUERY(Query_for_list_of_roles);
+ else if (TailMatchesCS("\\pset"))
+ COMPLETE_WITH_CS("border", "columns", "csv_fieldsep", "expanded",
+ "fieldsep", "fieldsep_zero", "footer", "format",
+ "linestyle", "null", "numericlocale",
+ "pager", "pager_min_lines",
+ "recordsep", "recordsep_zero",
+ "tableattr", "title", "tuples_only",
+ "unicode_border_linestyle",
+ "unicode_column_linestyle",
+ "unicode_header_linestyle");
+ else if (TailMatchesCS("\\pset", MatchAny))
+ {
+ if (TailMatchesCS("format"))
+ COMPLETE_WITH_CS("aligned", "asciidoc", "csv", "html", "latex",
+ "latex-longtable", "troff-ms", "unaligned",
+ "wrapped");
+ else if (TailMatchesCS("linestyle"))
+ COMPLETE_WITH_CS("ascii", "old-ascii", "unicode");
+ else if (TailMatchesCS("pager"))
+ COMPLETE_WITH_CS("on", "off", "always");
+ else if (TailMatchesCS("unicode_border_linestyle|"
+ "unicode_column_linestyle|"
+ "unicode_header_linestyle"))
+ COMPLETE_WITH_CS("single", "double");
+ }
+ else if (TailMatchesCS("\\unset"))
+ matches = complete_from_variables(text, "", "", true);
+ else if (TailMatchesCS("\\set"))
+ matches = complete_from_variables(text, "", "", false);
+ else if (TailMatchesCS("\\set", MatchAny))
+ {
+ if (TailMatchesCS("AUTOCOMMIT|ON_ERROR_STOP|QUIET|"
+ "SINGLELINE|SINGLESTEP"))
+ COMPLETE_WITH_CS("on", "off");
+ else if (TailMatchesCS("COMP_KEYWORD_CASE"))
+ COMPLETE_WITH_CS("lower", "upper",
+ "preserve-lower", "preserve-upper");
+ else if (TailMatchesCS("ECHO"))
+ COMPLETE_WITH_CS("errors", "queries", "all", "none");
+ else if (TailMatchesCS("ECHO_HIDDEN"))
+ COMPLETE_WITH_CS("noexec", "off", "on");
+ else if (TailMatchesCS("HISTCONTROL"))
+ COMPLETE_WITH_CS("ignorespace", "ignoredups",
+ "ignoreboth", "none");
+ else if (TailMatchesCS("ON_ERROR_ROLLBACK"))
+ COMPLETE_WITH_CS("on", "off", "interactive");
+ else if (TailMatchesCS("SHOW_CONTEXT"))
+ COMPLETE_WITH_CS("never", "errors", "always");
+ else if (TailMatchesCS("VERBOSITY"))
+ COMPLETE_WITH_CS("default", "verbose", "terse", "sqlstate");
+ }
+ else if (TailMatchesCS("\\sf*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_routines, NULL);
+ else if (TailMatchesCS("\\sv*"))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL);
+ else if (TailMatchesCS("\\cd|\\e|\\edit|\\g|\\gx|\\i|\\include|"
+ "\\ir|\\include_relative|\\o|\\out|"
+ "\\s|\\w|\\write|\\lo_import"))
+ {
+ completion_charp = "\\";
+ completion_force_quote = false;
+ matches = rl_completion_matches(text, complete_from_files);
+ }
+
+ /*
+ * Finally, we look through the list of "things", such as TABLE, INDEX and
+ * check if that was the previous word. If so, execute the query to get a
+ * list of them.
+ */
+ else
+ {
+ int i;
+
+ for (i = 0; words_after_create[i].name; i++)
+ {
+ if (pg_strcasecmp(prev_wd, words_after_create[i].name) == 0)
+ {
+ if (words_after_create[i].query)
+ COMPLETE_WITH_QUERY(words_after_create[i].query);
+ else if (words_after_create[i].vquery)
+ COMPLETE_WITH_VERSIONED_QUERY(words_after_create[i].vquery);
+ else if (words_after_create[i].squery)
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(words_after_create[i].squery,
+ NULL);
+ break;
+ }
+ }
+ }
+
+ /*
+ * If we still don't have anything to match we have to fabricate some sort
+ * of default list. If we were to just return NULL, readline automatically
+ * attempts filename completion, and that's usually no good.
+ */
+ if (matches == NULL)
+ {
+ COMPLETE_WITH_CONST(true, "");
+#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
+ rl_completion_append_character = '\0';
+#endif
+ }
+
+ /* free storage */
+ free(previous_words);
+ free(words_buffer);
+ free(text_copy);
+
+ /* Return our Grand List O' Matches */
+ return matches;
+}
+
+
+/*
+ * GENERATOR FUNCTIONS
+ *
+ * These functions do all the actual work of completing the input. They get
+ * passed the text so far and the count how many times they have been called
+ * so far with the same text.
+ * If you read the above carefully, you'll see that these don't get called
+ * directly but through the readline interface.
+ * The return value is expected to be the full completion of the text, going
+ * through a list each time, or NULL if there are no more matches. The string
+ * will be free()'d by readline, so you must run it through strdup() or
+ * something of that sort.
+ */
+
+/*
+ * Common routine for create_command_generator and drop_command_generator.
+ * Entries that have 'excluded' flags are not returned.
+ */
+static char *
+create_or_drop_command_generator(const char *text, int state, bits32 excluded)
+{
+ static int list_index,
+ string_length;
+ const char *name;
+
+ /* If this is the first time for this completion, init some values */
+ if (state == 0)
+ {
+ list_index = 0;
+ string_length = strlen(text);
+ }
+
+ /* find something that matches */
+ while ((name = words_after_create[list_index++].name))
+ {
+ if ((pg_strncasecmp(name, text, string_length) == 0) &&
+ !(words_after_create[list_index - 1].flags & excluded))
+ return pg_strdup_keyword_case(name, text);
+ }
+ /* if nothing matches, return NULL */
+ return NULL;
+}
+
+/*
+ * This one gives you one from a list of things you can put after CREATE
+ * as defined above.
+ */
+static char *
+create_command_generator(const char *text, int state)
+{
+ return create_or_drop_command_generator(text, state, THING_NO_CREATE);
+}
+
+/*
+ * This function gives you a list of things you can put after a DROP command.
+ */
+static char *
+drop_command_generator(const char *text, int state)
+{
+ return create_or_drop_command_generator(text, state, THING_NO_DROP);
+}
+
+/*
+ * This function gives you a list of things you can put after an ALTER command.
+ */
+static char *
+alter_command_generator(const char *text, int state)
+{
+ return create_or_drop_command_generator(text, state, THING_NO_ALTER);
+}
+
+/*
+ * These functions generate lists using server queries.
+ * They are all wrappers for _complete_from_query.
+ */
+
+static char *
+complete_from_query(const char *text, int state)
+{
+ /* query is assumed to work for any server version */
+ return _complete_from_query(completion_charp, NULL, text, state);
+}
+
+static char *
+complete_from_versioned_query(const char *text, int state)
+{
+ const VersionedQuery *vquery = completion_vquery;
+
+ /* Find appropriate array element */
+ while (pset.sversion < vquery->min_server_version)
+ vquery++;
+ /* Fail completion if server is too old */
+ if (vquery->query == NULL)
+ return NULL;
+
+ return _complete_from_query(vquery->query, NULL, text, state);
+}
+
+static char *
+complete_from_schema_query(const char *text, int state)
+{
+ /* query is assumed to work for any server version */
+ return _complete_from_query(completion_charp, completion_squery,
+ text, state);
+}
+
+static char *
+complete_from_versioned_schema_query(const char *text, int state)
+{
+ const SchemaQuery *squery = completion_squery;
+ const VersionedQuery *vquery = completion_vquery;
+
+ /* Find appropriate array element */
+ while (pset.sversion < squery->min_server_version)
+ squery++;
+ /* Fail completion if server is too old */
+ if (squery->catname == NULL)
+ return NULL;
+
+ /* Likewise for the add-on text, if any */
+ if (vquery)
+ {
+ while (pset.sversion < vquery->min_server_version)
+ vquery++;
+ if (vquery->query == NULL)
+ return NULL;
+ }
+
+ return _complete_from_query(vquery ? vquery->query : NULL,
+ squery, text, state);
+}
+
+
+/*
+ * This creates a list of matching things, according to a query described by
+ * the initial arguments. The caller has already done any work needed to
+ * select the appropriate query for the server's version.
+ *
+ * The query can be one of two kinds:
+ *
+ * 1. A simple query which must contain a %d and a %s, which will be replaced
+ * by the string length of the text and the text itself. The query may also
+ * have up to four more %s in it; the first two such will be replaced by the
+ * value of completion_info_charp, the next two by the value of
+ * completion_info_charp2.
+ *
+ * 2. A schema query used for completion of both schema and relation names.
+ * These are more complex and must contain in the following order:
+ * %d %s %d %s %d %s %s %d %s
+ * where %d is the string length of the text and %s the text itself.
+ *
+ * If both simple_query and schema_query are non-NULL, then we construct
+ * a schema query and append the (uninterpreted) string simple_query to it.
+ *
+ * It is assumed that strings should be escaped to become SQL literals
+ * (that is, what is in the query is actually ... '%s' ...)
+ *
+ * See top of file for examples of both kinds of query.
+ *
+ * "text" and "state" are supplied by readline.
+ */
+static char *
+_complete_from_query(const char *simple_query,
+ const SchemaQuery *schema_query,
+ const char *text, int state)
+{
+ static int list_index,
+ byte_length;
+ static PGresult *result = NULL;
+
+ /*
+ * If this is the first time for this completion, we fetch a list of our
+ * "things" from the backend.
+ */
+ if (state == 0)
+ {
+ PQExpBufferData query_buffer;
+ char *e_text;
+ char *e_info_charp;
+ char *e_info_charp2;
+ const char *pstr = text;
+ int char_length = 0;
+
+ list_index = 0;
+ byte_length = strlen(text);
+
+ /*
+ * Count length as number of characters (not bytes), for passing to
+ * substring
+ */
+ while (*pstr)
+ {
+ char_length++;
+ pstr += PQmblenBounded(pstr, pset.encoding);
+ }
+
+ /* Free any prior result */
+ PQclear(result);
+ result = NULL;
+
+ /* Set up suitably-escaped copies of textual inputs */
+ e_text = escape_string(text);
+
+ if (completion_info_charp)
+ e_info_charp = escape_string(completion_info_charp);
+ else
+ e_info_charp = NULL;
+
+ if (completion_info_charp2)
+ e_info_charp2 = escape_string(completion_info_charp2);
+ else
+ e_info_charp2 = NULL;
+
+ initPQExpBuffer(&query_buffer);
+
+ if (schema_query)
+ {
+ /* schema_query gives us the pieces to assemble */
+ const char *qualresult = schema_query->qualresult;
+
+ if (qualresult == NULL)
+ qualresult = schema_query->result;
+
+ /* Get unqualified names matching the input-so-far */
+ appendPQExpBuffer(&query_buffer, "SELECT %s FROM %s WHERE ",
+ schema_query->result,
+ schema_query->catname);
+ if (schema_query->selcondition)
+ appendPQExpBuffer(&query_buffer, "%s AND ",
+ schema_query->selcondition);
+ appendPQExpBuffer(&query_buffer, "substring(%s,1,%d)='%s'",
+ schema_query->result,
+ char_length, e_text);
+ appendPQExpBuffer(&query_buffer, " AND %s",
+ schema_query->viscondition);
+
+ /*
+ * When fetching relation names, suppress system catalogs unless
+ * the input-so-far begins with "pg_". This is a compromise
+ * between not offering system catalogs for completion at all, and
+ * having them swamp the result when the input is just "p".
+ */
+ if (strcmp(schema_query->catname,
+ "pg_catalog.pg_class c") == 0 &&
+ strncmp(text, "pg_", 3) != 0)
+ {
+ appendPQExpBufferStr(&query_buffer,
+ " AND c.relnamespace <> (SELECT oid FROM"
+ " pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')");
+ }
+
+ /*
+ * Add in matching schema names, but only if there is more than
+ * one potential match among schema names.
+ */
+ appendPQExpBuffer(&query_buffer, "\nUNION\n"
+ "SELECT pg_catalog.quote_ident(n.nspname) || '.' "
+ "FROM pg_catalog.pg_namespace n "
+ "WHERE substring(pg_catalog.quote_ident(n.nspname) || '.',1,%d)='%s'",
+ char_length, e_text);
+ appendPQExpBuffer(&query_buffer,
+ " AND (SELECT pg_catalog.count(*)"
+ " FROM pg_catalog.pg_namespace"
+ " WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d) ="
+ " substring('%s',1,pg_catalog.length(pg_catalog.quote_ident(nspname))+1)) > 1",
+ char_length, e_text);
+
+ /*
+ * Add in matching qualified names, but only if there is exactly
+ * one schema matching the input-so-far.
+ */
+ appendPQExpBuffer(&query_buffer, "\nUNION\n"
+ "SELECT pg_catalog.quote_ident(n.nspname) || '.' || %s "
+ "FROM %s, pg_catalog.pg_namespace n "
+ "WHERE %s = n.oid AND ",
+ qualresult,
+ schema_query->catname,
+ schema_query->namespace);
+ if (schema_query->selcondition)
+ appendPQExpBuffer(&query_buffer, "%s AND ",
+ schema_query->selcondition);
+ appendPQExpBuffer(&query_buffer, "substring(pg_catalog.quote_ident(n.nspname) || '.' || %s,1,%d)='%s'",
+ qualresult,
+ char_length, e_text);
+
+ /*
+ * This condition exploits the single-matching-schema rule to
+ * speed up the query
+ */
+ appendPQExpBuffer(&query_buffer,
+ " AND substring(pg_catalog.quote_ident(n.nspname) || '.',1,%d) ="
+ " substring('%s',1,pg_catalog.length(pg_catalog.quote_ident(n.nspname))+1)",
+ char_length, e_text);
+ appendPQExpBuffer(&query_buffer,
+ " AND (SELECT pg_catalog.count(*)"
+ " FROM pg_catalog.pg_namespace"
+ " WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d) ="
+ " substring('%s',1,pg_catalog.length(pg_catalog.quote_ident(nspname))+1)) = 1",
+ char_length, e_text);
+
+ /* If an addon query was provided, use it */
+ if (simple_query)
+ appendPQExpBuffer(&query_buffer, "\n%s", simple_query);
+ }
+ else
+ {
+ Assert(simple_query);
+ /* simple_query is an sprintf-style format string */
+ appendPQExpBuffer(&query_buffer, simple_query,
+ char_length, e_text,
+ e_info_charp, e_info_charp,
+ e_info_charp2, e_info_charp2);
+ }
+
+ /* Limit the number of records in the result */
+ appendPQExpBuffer(&query_buffer, "\nLIMIT %d",
+ completion_max_records);
+
+ result = exec_query(query_buffer.data);
+
+ termPQExpBuffer(&query_buffer);
+ free(e_text);
+ if (e_info_charp)
+ free(e_info_charp);
+ if (e_info_charp2)
+ free(e_info_charp2);
+ }
+
+ /* Find something that matches */
+ if (result && PQresultStatus(result) == PGRES_TUPLES_OK)
+ {
+ const char *item;
+
+ while (list_index < PQntuples(result) &&
+ (item = PQgetvalue(result, list_index++, 0)))
+ if (pg_strncasecmp(text, item, byte_length) == 0)
+ return pg_strdup(item);
+ }
+
+ /* If nothing matches, free the db structure and return null */
+ PQclear(result);
+ result = NULL;
+ return NULL;
+}
+
+
+/*
+ * This function returns in order one of a fixed, NULL pointer terminated list
+ * of strings (if matching). This can be used if there are only a fixed number
+ * SQL words that can appear at certain spot.
+ */
+static char *
+complete_from_list(const char *text, int state)
+{
+ static int string_length,
+ list_index,
+ matches;
+ static bool casesensitive;
+ const char *item;
+
+ /* need to have a list */
+ Assert(completion_charpp != NULL);
+
+ /* Initialization */
+ if (state == 0)
+ {
+ list_index = 0;
+ string_length = strlen(text);
+ casesensitive = completion_case_sensitive;
+ matches = 0;
+ }
+
+ while ((item = completion_charpp[list_index++]))
+ {
+ /* First pass is case sensitive */
+ if (casesensitive && strncmp(text, item, string_length) == 0)
+ {
+ matches++;
+ return pg_strdup(item);
+ }
+
+ /* Second pass is case insensitive, don't bother counting matches */
+ if (!casesensitive && pg_strncasecmp(text, item, string_length) == 0)
+ {
+ if (completion_case_sensitive)
+ return pg_strdup(item);
+ else
+
+ /*
+ * If case insensitive matching was requested initially,
+ * adjust the case according to setting.
+ */
+ return pg_strdup_keyword_case(item, text);
+ }
+ }
+
+ /*
+ * No matches found. If we're not case insensitive already, lets switch to
+ * being case insensitive and try again
+ */
+ if (casesensitive && matches == 0)
+ {
+ casesensitive = false;
+ list_index = 0;
+ state++;
+ return complete_from_list(text, state);
+ }
+
+ /* If no more matches, return null. */
+ return NULL;
+}
+
+
+/*
+ * This function returns one fixed string the first time even if it doesn't
+ * match what's there, and nothing the second time. The string
+ * to be used must be in completion_charp.
+ *
+ * If the given string is "", this has the effect of preventing readline
+ * from doing any completion. (Without this, readline tries to do filename
+ * completion which is seldom the right thing.)
+ *
+ * If the given string is not empty, readline will replace whatever the
+ * user typed with that string. This behavior might be useful if it's
+ * completely certain that we know what must appear at a certain spot,
+ * so that it's okay to overwrite misspellings. In practice, given the
+ * relatively lame parsing technology used in this file, the level of
+ * certainty is seldom that high, so that you probably don't want to
+ * use this. Use complete_from_list with a one-element list instead;
+ * that won't try to auto-correct "misspellings".
+ */
+static char *
+complete_from_const(const char *text, int state)
+{
+ Assert(completion_charp != NULL);
+ if (state == 0)
+ {
+ if (completion_case_sensitive)
+ return pg_strdup(completion_charp);
+ else
+
+ /*
+ * If case insensitive matching was requested initially, adjust
+ * the case according to setting.
+ */
+ return pg_strdup_keyword_case(completion_charp, text);
+ }
+ else
+ return NULL;
+}
+
+
+/*
+ * This function appends the variable name with prefix and suffix to
+ * the variable names array.
+ */
+static void
+append_variable_names(char ***varnames, int *nvars,
+ int *maxvars, const char *varname,
+ const char *prefix, const char *suffix)
+{
+ if (*nvars >= *maxvars)
+ {
+ *maxvars *= 2;
+ *varnames = (char **) pg_realloc(*varnames,
+ ((*maxvars) + 1) * sizeof(char *));
+ }
+
+ (*varnames)[(*nvars)++] = psprintf("%s%s%s", prefix, varname, suffix);
+}
+
+
+/*
+ * This function supports completion with the name of a psql variable.
+ * The variable names can be prefixed and suffixed with additional text
+ * to support quoting usages. If need_value is true, only variables
+ * that are currently set are included; otherwise, special variables
+ * (those that have hooks) are included even if currently unset.
+ */
+static char **
+complete_from_variables(const char *text, const char *prefix, const char *suffix,
+ bool need_value)
+{
+ char **matches;
+ char **varnames;
+ int nvars = 0;
+ int maxvars = 100;
+ int i;
+ struct _variable *ptr;
+
+ varnames = (char **) pg_malloc((maxvars + 1) * sizeof(char *));
+
+ for (ptr = pset.vars->next; ptr; ptr = ptr->next)
+ {
+ if (need_value && !(ptr->value))
+ continue;
+ append_variable_names(&varnames, &nvars, &maxvars, ptr->name,
+ prefix, suffix);
+ }
+
+ varnames[nvars] = NULL;
+ COMPLETE_WITH_LIST_CS((const char *const *) varnames);
+
+ for (i = 0; i < nvars; i++)
+ free(varnames[i]);
+ free(varnames);
+
+ return matches;
+}
+
+
+/*
+ * This function wraps rl_filename_completion_function() to strip quotes from
+ * the input before searching for matches and to quote any matches for which
+ * the consuming command will require it.
+ *
+ * Caller must set completion_charp to a zero- or one-character string
+ * containing the escape character. This is necessary since \copy has no
+ * escape character, but every other backslash command recognizes "\" as an
+ * escape character.
+ *
+ * Caller must also set completion_force_quote to indicate whether to force
+ * quotes around the result. (The SQL COPY command requires that.)
+ */
+static char *
+complete_from_files(const char *text, int state)
+{
+#ifdef USE_FILENAME_QUOTING_FUNCTIONS
+
+ /*
+ * If we're using a version of Readline that supports filename quoting
+ * hooks, rely on those, and invoke rl_filename_completion_function()
+ * without messing with its arguments. Readline does stuff internally
+ * that does not work well at all if we try to handle dequoting here.
+ * Instead, Readline will call quote_file_name() and dequote_file_name()
+ * (see below) at appropriate times.
+ *
+ * ... or at least, mostly it will. There are some paths involving
+ * unmatched file names in which Readline never calls quote_file_name(),
+ * and if left to its own devices it will incorrectly append a quote
+ * anyway. Set rl_completion_suppress_quote to prevent that. If we do
+ * get to quote_file_name(), we'll clear this again. (Yes, this seems
+ * like it's working around Readline bugs.)
+ */
+#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
+ rl_completion_suppress_quote = 1;
+#endif
+
+ /* If user typed a quote, force quoting (never remove user's quote) */
+ if (*text == '\'')
+ completion_force_quote = true;
+
+ return rl_filename_completion_function(text, state);
+#else
+
+ /*
+ * Otherwise, we have to do the best we can.
+ */
+ static const char *unquoted_text;
+ char *unquoted_match;
+ char *ret = NULL;
+
+ /* If user typed a quote, force quoting (never remove user's quote) */
+ if (*text == '\'')
+ completion_force_quote = true;
+
+ if (state == 0)
+ {
+ /* Initialization: stash the unquoted input. */
+ unquoted_text = strtokx(text, "", NULL, "'", *completion_charp,
+ false, true, pset.encoding);
+ /* expect a NULL return for the empty string only */
+ if (!unquoted_text)
+ {
+ Assert(*text == '\0');
+ unquoted_text = text;
+ }
+ }
+
+ unquoted_match = rl_filename_completion_function(unquoted_text, state);
+ if (unquoted_match)
+ {
+ struct stat statbuf;
+ bool is_dir = (stat(unquoted_match, &statbuf) == 0 &&
+ S_ISDIR(statbuf.st_mode) != 0);
+
+ /* Re-quote the result, if needed. */
+ ret = quote_if_needed(unquoted_match, " \t\r\n\"`",
+ '\'', *completion_charp,
+ completion_force_quote,
+ pset.encoding);
+ if (ret)
+ free(unquoted_match);
+ else
+ ret = unquoted_match;
+
+ /*
+ * If it's a directory, replace trailing quote with a slash; this is
+ * usually more convenient. (If we didn't quote, leave this to
+ * libedit.)
+ */
+ if (*ret == '\'' && is_dir)
+ {
+ char *retend = ret + strlen(ret) - 1;
+
+ Assert(*retend == '\'');
+ *retend = '/';
+ /* Try to prevent libedit from adding a space, too */
+#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
+ rl_completion_append_character = '\0';
+#endif
+ }
+ }
+
+ return ret;
+#endif /* USE_FILENAME_QUOTING_FUNCTIONS */
+}
+
+
+/* HELPER FUNCTIONS */
+
+
+/*
+ * Make a pg_strdup copy of s and convert the case according to
+ * COMP_KEYWORD_CASE setting, using ref as the text that was already entered.
+ */
+static char *
+pg_strdup_keyword_case(const char *s, const char *ref)
+{
+ char *ret,
+ *p;
+ unsigned char first = ref[0];
+
+ ret = pg_strdup(s);
+
+ if (pset.comp_case == PSQL_COMP_CASE_LOWER ||
+ ((pset.comp_case == PSQL_COMP_CASE_PRESERVE_LOWER ||
+ pset.comp_case == PSQL_COMP_CASE_PRESERVE_UPPER) && islower(first)) ||
+ (pset.comp_case == PSQL_COMP_CASE_PRESERVE_LOWER && !isalpha(first)))
+ {
+ for (p = ret; *p; p++)
+ *p = pg_tolower((unsigned char) *p);
+ }
+ else
+ {
+ for (p = ret; *p; p++)
+ *p = pg_toupper((unsigned char) *p);
+ }
+
+ return ret;
+}
+
+
+/*
+ * escape_string - Escape argument for use as string literal.
+ *
+ * The returned value has to be freed.
+ */
+static char *
+escape_string(const char *text)
+{
+ size_t text_length;
+ char *result;
+
+ text_length = strlen(text);
+
+ result = pg_malloc(text_length * 2 + 1);
+ PQescapeStringConn(pset.db, result, text, text_length, NULL);
+
+ return result;
+}
+
+
+/*
+ * Execute a query and report any errors. This should be the preferred way of
+ * talking to the database in this file.
+ */
+static PGresult *
+exec_query(const char *query)
+{
+ PGresult *result;
+
+ if (query == NULL || !pset.db || PQstatus(pset.db) != CONNECTION_OK)
+ return NULL;
+
+ result = PQexec(pset.db, query);
+
+ if (PQresultStatus(result) != PGRES_TUPLES_OK)
+ {
+#ifdef NOT_USED
+ pg_log_error("tab completion query failed: %s\nQuery was:\n%s",
+ PQerrorMessage(pset.db), query);
+#endif
+ PQclear(result);
+ result = NULL;
+ }
+
+ return result;
+}
+
+
+/*
+ * Parse all the word(s) before point.
+ *
+ * Returns a malloc'd array of character pointers that point into the malloc'd
+ * data array returned to *buffer; caller must free() both of these when done.
+ * *nwords receives the number of words found, ie, the valid length of the
+ * return array.
+ *
+ * Words are returned right to left, that is, previous_words[0] gets the last
+ * word before point, previous_words[1] the next-to-last, etc.
+ */
+static char **
+get_previous_words(int point, char **buffer, int *nwords)
+{
+ char **previous_words;
+ char *buf;
+ char *outptr;
+ int words_found = 0;
+ int i;
+
+ /*
+ * If we have anything in tab_completion_query_buf, paste it together with
+ * rl_line_buffer to construct the full query. Otherwise we can just use
+ * rl_line_buffer as the input string.
+ */
+ if (tab_completion_query_buf && tab_completion_query_buf->len > 0)
+ {
+ i = tab_completion_query_buf->len;
+ buf = pg_malloc(point + i + 2);
+ memcpy(buf, tab_completion_query_buf->data, i);
+ buf[i++] = '\n';
+ memcpy(buf + i, rl_line_buffer, point);
+ i += point;
+ buf[i] = '\0';
+ /* Readjust point to reference appropriate offset in buf */
+ point = i;
+ }
+ else
+ buf = rl_line_buffer;
+
+ /*
+ * Allocate an array of string pointers and a buffer to hold the strings
+ * themselves. The worst case is that the line contains only
+ * non-whitespace WORD_BREAKS characters, making each one a separate word.
+ * This is usually much more space than we need, but it's cheaper than
+ * doing a separate malloc() for each word.
+ */
+ previous_words = (char **) pg_malloc(point * sizeof(char *));
+ *buffer = outptr = (char *) pg_malloc(point * 2);
+
+ /*
+ * First we look for a non-word char before the current point. (This is
+ * probably useless, if readline is on the same page as we are about what
+ * is a word, but if so it's cheap.)
+ */
+ for (i = point - 1; i >= 0; i--)
+ {
+ if (strchr(WORD_BREAKS, buf[i]))
+ break;
+ }
+ point = i;
+
+ /*
+ * Now parse words, working backwards, until we hit start of line. The
+ * backwards scan has some interesting but intentional properties
+ * concerning parenthesis handling.
+ */
+ while (point >= 0)
+ {
+ int start,
+ end;
+ bool inquotes = false;
+ int parentheses = 0;
+
+ /* now find the first non-space which then constitutes the end */
+ end = -1;
+ for (i = point; i >= 0; i--)
+ {
+ if (!isspace((unsigned char) buf[i]))
+ {
+ end = i;
+ break;
+ }
+ }
+ /* if no end found, we're done */
+ if (end < 0)
+ break;
+
+ /*
+ * Otherwise we now look for the start. The start is either the last
+ * character before any word-break character going backwards from the
+ * end, or it's simply character 0. We also handle open quotes and
+ * parentheses.
+ */
+ for (start = end; start > 0; start--)
+ {
+ if (buf[start] == '"')
+ inquotes = !inquotes;
+ if (!inquotes)
+ {
+ if (buf[start] == ')')
+ parentheses++;
+ else if (buf[start] == '(')
+ {
+ if (--parentheses <= 0)
+ break;
+ }
+ else if (parentheses == 0 &&
+ strchr(WORD_BREAKS, buf[start - 1]))
+ break;
+ }
+ }
+
+ /* Return the word located at start to end inclusive */
+ previous_words[words_found++] = outptr;
+ i = end - start + 1;
+ memcpy(outptr, &buf[start], i);
+ outptr += i;
+ *outptr++ = '\0';
+
+ /* Continue searching */
+ point = start - 1;
+ }
+
+ /* Release parsing input workspace, if we made one above */
+ if (buf != rl_line_buffer)
+ free(buf);
+
+ *nwords = words_found;
+ return previous_words;
+}
+
+/*
+ * Look up the type for the GUC variable with the passed name.
+ *
+ * Returns NULL if the variable is unknown. Otherwise the returned string,
+ * containing the type, has to be freed.
+ */
+static char *
+get_guctype(const char *varname)
+{
+ PQExpBufferData query_buffer;
+ char *e_varname;
+ PGresult *result;
+ char *guctype = NULL;
+
+ e_varname = escape_string(varname);
+
+ initPQExpBuffer(&query_buffer);
+ appendPQExpBuffer(&query_buffer,
+ "SELECT vartype FROM pg_catalog.pg_settings "
+ "WHERE pg_catalog.lower(name) = pg_catalog.lower('%s')",
+ e_varname);
+
+ result = exec_query(query_buffer.data);
+ termPQExpBuffer(&query_buffer);
+ free(e_varname);
+
+ if (PQresultStatus(result) == PGRES_TUPLES_OK && PQntuples(result) > 0)
+ guctype = pg_strdup(PQgetvalue(result, 0, 0));
+
+ PQclear(result);
+
+ return guctype;
+}
+
+#ifdef USE_FILENAME_QUOTING_FUNCTIONS
+
+/*
+ * Quote a filename according to SQL rules, returning a malloc'd string.
+ * completion_charp must point to escape character or '\0', and
+ * completion_force_quote must be set correctly, as per comments for
+ * complete_from_files().
+ */
+static char *
+quote_file_name(char *fname, int match_type, char *quote_pointer)
+{
+ char *s;
+ struct stat statbuf;
+
+ /* Quote if needed. */
+ s = quote_if_needed(fname, " \t\r\n\"`",
+ '\'', *completion_charp,
+ completion_force_quote,
+ pset.encoding);
+ if (!s)
+ s = pg_strdup(fname);
+
+ /*
+ * However, some of the time we have to strip the trailing quote from what
+ * we send back. Never strip the trailing quote if the user already typed
+ * one; otherwise, suppress the trailing quote if we have multiple/no
+ * matches (because we don't want to add a quote if the input is seemingly
+ * unfinished), or if the input was already quoted (because Readline will
+ * do arguably-buggy things otherwise), or if the file does not exist, or
+ * if it's a directory.
+ */
+ if (*s == '\'' &&
+ completion_last_char != '\'' &&
+ (match_type != SINGLE_MATCH ||
+ (quote_pointer && *quote_pointer == '\'') ||
+ stat(fname, &statbuf) != 0 ||
+ S_ISDIR(statbuf.st_mode)))
+ {
+ char *send = s + strlen(s) - 1;
+
+ Assert(*send == '\'');
+ *send = '\0';
+ }
+
+ /*
+ * And now we can let Readline do its thing with possibly adding a quote
+ * on its own accord. (This covers some additional cases beyond those
+ * dealt with above.)
+ */
+#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE
+ rl_completion_suppress_quote = 0;
+#endif
+
+ /*
+ * If user typed a leading quote character other than single quote (i.e.,
+ * double quote), zap it, so that we replace it with the correct single
+ * quote.
+ */
+ if (quote_pointer && *quote_pointer != '\'')
+ *quote_pointer = '\0';
+
+ return s;
+}
+
+/*
+ * Dequote a filename, if it's quoted.
+ * completion_charp must point to escape character or '\0', as per
+ * comments for complete_from_files().
+ */
+static char *
+dequote_file_name(char *fname, int quote_char)
+{
+ char *unquoted_fname;
+
+ /*
+ * If quote_char is set, it's not included in "fname". We have to add it
+ * or strtokx will not interpret the string correctly (notably, it won't
+ * recognize escapes).
+ */
+ if (quote_char == '\'')
+ {
+ char *workspace = (char *) pg_malloc(strlen(fname) + 2);
+
+ workspace[0] = quote_char;
+ strcpy(workspace + 1, fname);
+ unquoted_fname = strtokx(workspace, "", NULL, "'", *completion_charp,
+ false, true, pset.encoding);
+ free(workspace);
+ }
+ else
+ unquoted_fname = strtokx(fname, "", NULL, "'", *completion_charp,
+ false, true, pset.encoding);
+
+ /* expect a NULL return for the empty string only */
+ if (!unquoted_fname)
+ {
+ Assert(*fname == '\0');
+ unquoted_fname = fname;
+ }
+
+ /* readline expects a malloc'd result that it is to free */
+ return pg_strdup(unquoted_fname);
+}
+
+#endif /* USE_FILENAME_QUOTING_FUNCTIONS */
+
+#endif /* USE_READLINE */
diff --git a/src/bin/psql/tab-complete.h b/src/bin/psql/tab-complete.h
new file mode 100644
index 0000000..7083186
--- /dev/null
+++ b/src/bin/psql/tab-complete.h
@@ -0,0 +1,17 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/tab-complete.h
+ */
+#ifndef TAB_COMPLETE_H
+#define TAB_COMPLETE_H
+
+#include "pqexpbuffer.h"
+
+extern PQExpBuffer tab_completion_query_buf;
+
+extern void initialize_readline(void);
+
+#endif /* TAB_COMPLETE_H */
diff --git a/src/bin/psql/variables.c b/src/bin/psql/variables.c
new file mode 100644
index 0000000..84349fc
--- /dev/null
+++ b/src/bin/psql/variables.c
@@ -0,0 +1,422 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/variables.c
+ */
+#include "postgres_fe.h"
+
+#include "common.h"
+#include "common/logging.h"
+#include "variables.h"
+
+/*
+ * Check whether a variable's name is allowed.
+ *
+ * We allow any non-ASCII character, as well as ASCII letters, digits, and
+ * underscore. Keep this in sync with the definition of variable_char in
+ * psqlscan.l and psqlscanslash.l.
+ */
+static bool
+valid_variable_name(const char *name)
+{
+ const unsigned char *ptr = (const unsigned char *) name;
+
+ /* Mustn't be zero-length */
+ if (*ptr == '\0')
+ return false;
+
+ while (*ptr)
+ {
+ if (IS_HIGHBIT_SET(*ptr) ||
+ strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"
+ "_0123456789", *ptr) != NULL)
+ ptr++;
+ else
+ return false;
+ }
+
+ return true;
+}
+
+/*
+ * A "variable space" is represented by an otherwise-unused struct _variable
+ * that serves as list header.
+ *
+ * The list entries are kept in name order (according to strcmp). This
+ * is mainly to make the results of PrintVariables() more pleasing.
+ */
+VariableSpace
+CreateVariableSpace(void)
+{
+ struct _variable *ptr;
+
+ ptr = pg_malloc(sizeof *ptr);
+ ptr->name = NULL;
+ ptr->value = NULL;
+ ptr->substitute_hook = NULL;
+ ptr->assign_hook = NULL;
+ ptr->next = NULL;
+
+ return ptr;
+}
+
+/*
+ * Get string value of variable, or NULL if it's not defined.
+ *
+ * Note: result is valid until variable is next assigned to.
+ */
+const char *
+GetVariable(VariableSpace space, const char *name)
+{
+ struct _variable *current;
+
+ if (!space)
+ return NULL;
+
+ for (current = space->next; current; current = current->next)
+ {
+ int cmp = strcmp(current->name, name);
+
+ if (cmp == 0)
+ {
+ /* this is correct answer when value is NULL, too */
+ return current->value;
+ }
+ if (cmp > 0)
+ break; /* it's not there */
+ }
+
+ return NULL;
+}
+
+/*
+ * Try to interpret "value" as a boolean value, and if successful,
+ * store it in *result. Otherwise don't clobber *result.
+ *
+ * Valid values are: true, false, yes, no, on, off, 1, 0; as well as unique
+ * prefixes thereof.
+ *
+ * "name" is the name of the variable we're assigning to, to use in error
+ * report if any. Pass name == NULL to suppress the error report.
+ *
+ * Return true when "value" is syntactically valid, false otherwise.
+ */
+bool
+ParseVariableBool(const char *value, const char *name, bool *result)
+{
+ size_t len;
+ bool valid = true;
+
+ /* Treat "unset" as an empty string, which will lead to error below */
+ if (value == NULL)
+ value = "";
+
+ len = strlen(value);
+
+ if (len > 0 && pg_strncasecmp(value, "true", len) == 0)
+ *result = true;
+ else if (len > 0 && pg_strncasecmp(value, "false", len) == 0)
+ *result = false;
+ else if (len > 0 && pg_strncasecmp(value, "yes", len) == 0)
+ *result = true;
+ else if (len > 0 && pg_strncasecmp(value, "no", len) == 0)
+ *result = false;
+ /* 'o' is not unique enough */
+ else if (pg_strncasecmp(value, "on", (len > 2 ? len : 2)) == 0)
+ *result = true;
+ else if (pg_strncasecmp(value, "off", (len > 2 ? len : 2)) == 0)
+ *result = false;
+ else if (pg_strcasecmp(value, "1") == 0)
+ *result = true;
+ else if (pg_strcasecmp(value, "0") == 0)
+ *result = false;
+ else
+ {
+ /* string is not recognized; don't clobber *result */
+ if (name)
+ pg_log_error("unrecognized value \"%s\" for \"%s\": Boolean expected",
+ value, name);
+ valid = false;
+ }
+ return valid;
+}
+
+/*
+ * Try to interpret "value" as an integer value, and if successful,
+ * store it in *result. Otherwise don't clobber *result.
+ *
+ * "name" is the name of the variable we're assigning to, to use in error
+ * report if any. Pass name == NULL to suppress the error report.
+ *
+ * Return true when "value" is syntactically valid, false otherwise.
+ */
+bool
+ParseVariableNum(const char *value, const char *name, int *result)
+{
+ char *end;
+ long numval;
+
+ /* Treat "unset" as an empty string, which will lead to error below */
+ if (value == NULL)
+ value = "";
+
+ errno = 0;
+ numval = strtol(value, &end, 0);
+ if (errno == 0 && *end == '\0' && end != value && numval == (int) numval)
+ {
+ *result = (int) numval;
+ return true;
+ }
+ else
+ {
+ /* string is not recognized; don't clobber *result */
+ if (name)
+ pg_log_error("invalid value \"%s\" for \"%s\": integer expected",
+ value, name);
+ return false;
+ }
+}
+
+/*
+ * Print values of all variables.
+ */
+void
+PrintVariables(VariableSpace space)
+{
+ struct _variable *ptr;
+
+ if (!space)
+ return;
+
+ for (ptr = space->next; ptr; ptr = ptr->next)
+ {
+ if (ptr->value)
+ printf("%s = '%s'\n", ptr->name, ptr->value);
+ if (cancel_pressed)
+ break;
+ }
+}
+
+/*
+ * Set the variable named "name" to value "value",
+ * or delete it if "value" is NULL.
+ *
+ * Returns true if successful, false if not; in the latter case a suitable
+ * error message has been printed, except for the unexpected case of
+ * space or name being NULL.
+ */
+bool
+SetVariable(VariableSpace space, const char *name, const char *value)
+{
+ struct _variable *current,
+ *previous;
+
+ if (!space || !name)
+ return false;
+
+ if (!valid_variable_name(name))
+ {
+ /* Deletion of non-existent variable is not an error */
+ if (!value)
+ return true;
+ pg_log_error("invalid variable name: \"%s\"", name);
+ return false;
+ }
+
+ for (previous = space, current = space->next;
+ current;
+ previous = current, current = current->next)
+ {
+ int cmp = strcmp(current->name, name);
+
+ if (cmp == 0)
+ {
+ /*
+ * Found entry, so update, unless assign hook returns false.
+ *
+ * We must duplicate the passed value to start with. This
+ * simplifies the API for substitute hooks. Moreover, some assign
+ * hooks assume that the passed value has the same lifespan as the
+ * variable. Having to free the string again on failure is a
+ * small price to pay for keeping these APIs simple.
+ */
+ char *new_value = value ? pg_strdup(value) : NULL;
+ bool confirmed;
+
+ if (current->substitute_hook)
+ new_value = current->substitute_hook(new_value);
+
+ if (current->assign_hook)
+ confirmed = current->assign_hook(new_value);
+ else
+ confirmed = true;
+
+ if (confirmed)
+ {
+ if (current->value)
+ pg_free(current->value);
+ current->value = new_value;
+
+ /*
+ * If we deleted the value, and there are no hooks to
+ * remember, we can discard the variable altogether.
+ */
+ if (new_value == NULL &&
+ current->substitute_hook == NULL &&
+ current->assign_hook == NULL)
+ {
+ previous->next = current->next;
+ free(current->name);
+ free(current);
+ }
+ }
+ else if (new_value)
+ pg_free(new_value); /* current->value is left unchanged */
+
+ return confirmed;
+ }
+ if (cmp > 0)
+ break; /* it's not there */
+ }
+
+ /* not present, make new entry ... unless we were asked to delete */
+ if (value)
+ {
+ current = pg_malloc(sizeof *current);
+ current->name = pg_strdup(name);
+ current->value = pg_strdup(value);
+ current->substitute_hook = NULL;
+ current->assign_hook = NULL;
+ current->next = previous->next;
+ previous->next = current;
+ }
+ return true;
+}
+
+/*
+ * Attach substitute and/or assign hook functions to the named variable.
+ * If you need only one hook, pass NULL for the other.
+ *
+ * If the variable doesn't already exist, create it with value NULL, just so
+ * we have a place to store the hook function(s). (The substitute hook might
+ * immediately change the NULL to something else; if not, this state is
+ * externally the same as the variable not being defined.)
+ *
+ * The substitute hook, if given, is immediately called on the variable's
+ * value. Then the assign hook, if given, is called on the variable's value.
+ * This is meant to let it update any derived psql state. If the assign hook
+ * doesn't like the current value, it will print a message to that effect,
+ * but we'll ignore it. Generally we do not expect any such failure here,
+ * because this should get called before any user-supplied value is assigned.
+ */
+void
+SetVariableHooks(VariableSpace space, const char *name,
+ VariableSubstituteHook shook,
+ VariableAssignHook ahook)
+{
+ struct _variable *current,
+ *previous;
+
+ if (!space || !name)
+ return;
+
+ if (!valid_variable_name(name))
+ return;
+
+ for (previous = space, current = space->next;
+ current;
+ previous = current, current = current->next)
+ {
+ int cmp = strcmp(current->name, name);
+
+ if (cmp == 0)
+ {
+ /* found entry, so update */
+ current->substitute_hook = shook;
+ current->assign_hook = ahook;
+ if (shook)
+ current->value = (*shook) (current->value);
+ if (ahook)
+ (void) (*ahook) (current->value);
+ return;
+ }
+ if (cmp > 0)
+ break; /* it's not there */
+ }
+
+ /* not present, make new entry */
+ current = pg_malloc(sizeof *current);
+ current->name = pg_strdup(name);
+ current->value = NULL;
+ current->substitute_hook = shook;
+ current->assign_hook = ahook;
+ current->next = previous->next;
+ previous->next = current;
+ if (shook)
+ current->value = (*shook) (current->value);
+ if (ahook)
+ (void) (*ahook) (current->value);
+}
+
+/*
+ * Return true iff the named variable has substitute and/or assign hook
+ * functions.
+ */
+bool
+VariableHasHook(VariableSpace space, const char *name)
+{
+ struct _variable *current;
+
+ Assert(space);
+ Assert(name);
+
+ for (current = space->next; current; current = current->next)
+ {
+ int cmp = strcmp(current->name, name);
+
+ if (cmp == 0)
+ return (current->substitute_hook != NULL ||
+ current->assign_hook != NULL);
+ if (cmp > 0)
+ break; /* it's not there */
+ }
+
+ return false;
+}
+
+/*
+ * Convenience function to set a variable's value to "on".
+ */
+bool
+SetVariableBool(VariableSpace space, const char *name)
+{
+ return SetVariable(space, name, "on");
+}
+
+/*
+ * Attempt to delete variable.
+ *
+ * If unsuccessful, print a message and return "false".
+ * Deleting a nonexistent variable is not an error.
+ */
+bool
+DeleteVariable(VariableSpace space, const char *name)
+{
+ return SetVariable(space, name, NULL);
+}
+
+/*
+ * Emit error with suggestions for variables or commands
+ * accepting enum-style arguments.
+ * This function just exists to standardize the wording.
+ * suggestions should follow the format "fee, fi, fo, fum".
+ */
+void
+PsqlVarEnumError(const char *name, const char *value, const char *suggestions)
+{
+ pg_log_error("unrecognized value \"%s\" for \"%s\"\n"
+ "Available values are: %s.",
+ value, name, suggestions);
+}
diff --git a/src/bin/psql/variables.h b/src/bin/psql/variables.h
new file mode 100644
index 0000000..b932472
--- /dev/null
+++ b/src/bin/psql/variables.h
@@ -0,0 +1,97 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
+ *
+ * This implements a sort of variable repository. One could also think of it
+ * as a cheap version of an associative array. Each variable has a string
+ * name and a string value. The value can't be NULL, or more precisely
+ * that's not distinguishable from the variable being unset.
+ *
+ * src/bin/psql/variables.h
+ */
+#ifndef VARIABLES_H
+#define VARIABLES_H
+
+/*
+ * Variables can be given "assign hook" functions. The assign hook can
+ * prevent invalid values from being assigned, and can update internal C
+ * variables to keep them in sync with the variable's current value.
+ *
+ * An assign hook function is called before any attempted assignment, with the
+ * proposed new value of the variable (or with NULL, if an \unset is being
+ * attempted). If it returns false, the assignment doesn't occur --- it
+ * should print an error message with pg_log_error() to tell the user why.
+ *
+ * When an assign hook function is installed with SetVariableHooks(), it is
+ * called with the variable's current value (or with NULL, if it wasn't set
+ * yet). But its return value is ignored in this case. The hook should be
+ * set before any possibly-invalid value can be assigned.
+ */
+typedef bool (*VariableAssignHook) (const char *newval);
+
+/*
+ * Variables can also be given "substitute hook" functions. The substitute
+ * hook can replace values (including NULL) with other values, allowing
+ * normalization of variable contents. For example, for a boolean variable,
+ * we wish to interpret "\unset FOO" as "\set FOO off", and we can do that
+ * by installing a substitute hook. (We can use the same substitute hook
+ * for all bool or nearly-bool variables, which is why this responsibility
+ * isn't part of the assign hook.)
+ *
+ * The substitute hook is called before any attempted assignment, and before
+ * the assign hook if any, passing the proposed new value of the variable as a
+ * malloc'd string (or NULL, if an \unset is being attempted). It can return
+ * the same value, or a different malloc'd string, or modify the string
+ * in-place. It should free the passed-in value if it's not returning it.
+ * The substitute hook generally should not complain about erroneous values;
+ * that's a job for the assign hook.
+ *
+ * When a substitute hook is installed with SetVariableHooks(), it is applied
+ * to the variable's current value (typically NULL, if it wasn't set yet).
+ * That also happens before applying the assign hook.
+ */
+typedef char *(*VariableSubstituteHook) (char *newval);
+
+/*
+ * Data structure representing one variable.
+ *
+ * Note: if value == NULL then the variable is logically unset, but we are
+ * keeping the struct around so as not to forget about its hook function(s).
+ */
+struct _variable
+{
+ char *name;
+ char *value;
+ VariableSubstituteHook substitute_hook;
+ VariableAssignHook assign_hook;
+ struct _variable *next;
+};
+
+/* Data structure representing a set of variables */
+typedef struct _variable *VariableSpace;
+
+
+VariableSpace CreateVariableSpace(void);
+const char *GetVariable(VariableSpace space, const char *name);
+
+bool ParseVariableBool(const char *value, const char *name,
+ bool *result);
+
+bool ParseVariableNum(const char *value, const char *name,
+ int *result);
+
+void PrintVariables(VariableSpace space);
+
+bool SetVariable(VariableSpace space, const char *name, const char *value);
+bool SetVariableBool(VariableSpace space, const char *name);
+bool DeleteVariable(VariableSpace space, const char *name);
+
+void SetVariableHooks(VariableSpace space, const char *name,
+ VariableSubstituteHook shook,
+ VariableAssignHook ahook);
+bool VariableHasHook(VariableSpace space, const char *name);
+
+void PsqlVarEnumError(const char *name, const char *value, const char *suggestions);
+
+#endif /* VARIABLES_H */