From 311bcfc6b3acdd6fd152798c7f287ddf74fa2a98 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 16 Apr 2024 21:46:48 +0200 Subject: Adding upstream version 15.4. Signed-off-by: Daniel Baumann --- src/bin/psql/.gitignore | 5 + src/bin/psql/Makefile | 90 + src/bin/psql/command.c | 5606 +++++++++++++++++++++++++++ src/bin/psql/command.h | 49 + src/bin/psql/common.c | 2388 ++++++++++++ src/bin/psql/common.h | 44 + src/bin/psql/copy.c | 727 ++++ src/bin/psql/copy.h | 24 + src/bin/psql/create_help.pl | 219 ++ src/bin/psql/crosstabview.c | 713 ++++ src/bin/psql/crosstabview.h | 29 + src/bin/psql/describe.c | 7007 +++++++++++++++++++++++++++++++++ src/bin/psql/describe.h | 149 + src/bin/psql/help.c | 766 ++++ src/bin/psql/help.h | 21 + src/bin/psql/input.c | 552 +++ src/bin/psql/input.h | 51 + src/bin/psql/large_obj.c | 264 ++ src/bin/psql/large_obj.h | 15 + src/bin/psql/mainloop.c | 662 ++++ src/bin/psql/mainloop.h | 17 + src/bin/psql/nls.mk | 15 + src/bin/psql/po/cs.po | 6603 +++++++++++++++++++++++++++++++ src/bin/psql/po/de.po | 6486 +++++++++++++++++++++++++++++++ src/bin/psql/po/el.po | 6535 +++++++++++++++++++++++++++++++ src/bin/psql/po/es.po | 6405 ++++++++++++++++++++++++++++++ src/bin/psql/po/fr.po | 7011 +++++++++++++++++++++++++++++++++ src/bin/psql/po/it.po | 6647 ++++++++++++++++++++++++++++++++ src/bin/psql/po/ja.po | 6476 +++++++++++++++++++++++++++++++ src/bin/psql/po/ka.po | 6456 +++++++++++++++++++++++++++++++ src/bin/psql/po/ko.po | 6597 +++++++++++++++++++++++++++++++ src/bin/psql/po/ru.po | 7067 ++++++++++++++++++++++++++++++++++ src/bin/psql/po/sv.po | 6479 +++++++++++++++++++++++++++++++ src/bin/psql/po/uk.po | 6427 +++++++++++++++++++++++++++++++ src/bin/psql/po/zh_CN.po | 6476 +++++++++++++++++++++++++++++++ src/bin/psql/prompt.c | 382 ++ src/bin/psql/prompt.h | 17 + src/bin/psql/psqlrc.sample | 8 + src/bin/psql/psqlscanslash.c | 3485 +++++++++++++++++ src/bin/psql/psqlscanslash.h | 40 + src/bin/psql/psqlscanslash.l | 829 ++++ src/bin/psql/settings.h | 170 + src/bin/psql/sql_help.c | 6239 ++++++++++++++++++++++++++++++ src/bin/psql/sql_help.h | 30 + src/bin/psql/startup.c | 1268 ++++++ src/bin/psql/stringutils.c | 342 ++ src/bin/psql/stringutils.h | 28 + src/bin/psql/t/001_basic.pl | 328 ++ src/bin/psql/t/010_tab_completion.pl | 452 +++ src/bin/psql/t/020_cancel.pl | 80 + src/bin/psql/tab-complete.c | 6238 ++++++++++++++++++++++++++++++ src/bin/psql/tab-complete.h | 17 + src/bin/psql/variables.c | 422 ++ src/bin/psql/variables.h | 97 + 54 files changed, 125550 insertions(+) create mode 100644 src/bin/psql/.gitignore create mode 100644 src/bin/psql/Makefile create mode 100644 src/bin/psql/command.c create mode 100644 src/bin/psql/command.h create mode 100644 src/bin/psql/common.c create mode 100644 src/bin/psql/common.h create mode 100644 src/bin/psql/copy.c create mode 100644 src/bin/psql/copy.h create mode 100644 src/bin/psql/create_help.pl create mode 100644 src/bin/psql/crosstabview.c create mode 100644 src/bin/psql/crosstabview.h create mode 100644 src/bin/psql/describe.c create mode 100644 src/bin/psql/describe.h create mode 100644 src/bin/psql/help.c create mode 100644 src/bin/psql/help.h create mode 100644 src/bin/psql/input.c create mode 100644 src/bin/psql/input.h create mode 100644 src/bin/psql/large_obj.c create mode 100644 src/bin/psql/large_obj.h create mode 100644 src/bin/psql/mainloop.c create mode 100644 src/bin/psql/mainloop.h create mode 100644 src/bin/psql/nls.mk create mode 100644 src/bin/psql/po/cs.po create mode 100644 src/bin/psql/po/de.po create mode 100644 src/bin/psql/po/el.po create mode 100644 src/bin/psql/po/es.po create mode 100644 src/bin/psql/po/fr.po create mode 100644 src/bin/psql/po/it.po create mode 100644 src/bin/psql/po/ja.po create mode 100644 src/bin/psql/po/ka.po create mode 100644 src/bin/psql/po/ko.po create mode 100644 src/bin/psql/po/ru.po create mode 100644 src/bin/psql/po/sv.po create mode 100644 src/bin/psql/po/uk.po create mode 100644 src/bin/psql/po/zh_CN.po create mode 100644 src/bin/psql/prompt.c create mode 100644 src/bin/psql/prompt.h create mode 100644 src/bin/psql/psqlrc.sample create mode 100644 src/bin/psql/psqlscanslash.c create mode 100644 src/bin/psql/psqlscanslash.h create mode 100644 src/bin/psql/psqlscanslash.l create mode 100644 src/bin/psql/settings.h create mode 100644 src/bin/psql/sql_help.c create mode 100644 src/bin/psql/sql_help.h create mode 100644 src/bin/psql/startup.c create mode 100644 src/bin/psql/stringutils.c create mode 100644 src/bin/psql/stringutils.h create mode 100644 src/bin/psql/t/001_basic.pl create mode 100644 src/bin/psql/t/010_tab_completion.pl create mode 100644 src/bin/psql/t/020_cancel.pl create mode 100644 src/bin/psql/tab-complete.c create mode 100644 src/bin/psql/tab-complete.h create mode 100644 src/bin/psql/variables.c create mode 100644 src/bin/psql/variables.h (limited to 'src/bin/psql') 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..58ec4a8 --- /dev/null +++ b/src/bin/psql/Makefile @@ -0,0 +1,90 @@ +#------------------------------------------------------------------------- +# +# Makefile for src/bin/psql +# +# Portions Copyright (c) 1996-2022, 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..897fbee --- /dev/null +++ b/src/bin/psql/command.c @@ -0,0 +1,5606 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/command.c + */ +#include "postgres_fe.h" + +#include +#include +#include +#include +#ifndef WIN32 +#include /* for stat() */ +#include /* for setitimer() */ +#include /* open() flags */ +#include /* for geteuid(), getpid(), stat() */ +#else +#include +#include +#include +#include +#include /* for stat() */ +#endif + +#include "catalog/pg_class_d.h" +#include "command.h" +#include "common.h" +#include "common/logging.h" +#include "common/string.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 "libpq/pqcomm.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 bool exec_command_dfo(PsqlScanState scan_state, const char *cmd, + const char *pattern, + bool show_verbose, bool show_system); +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_getenv(PsqlScanState scan_state, bool active_branch, + const char *cmd); +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 bool 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 discard_on_quit, 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, bool is_func); +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_error_hint("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 result code is 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, "getenv") == 0) + status = exec_command_getenv(scan_state, active_branch, cmd); + 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) + (void) 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 + /* This should match get_home_path() */ + dir = getenv("HOME"); + if (dir == NULL || dir[0] == '\0') + { + uid_t user_id = geteuid(); + struct passwd *pw; + + errno = 0; /* clear errno before call */ + pw = getpwuid(user_id); + if (pw) + dir = pw->pw_dir; + else + { + pg_log_error("could not get home directory for user ID %ld: %s", + (long) user_id, + errno ? strerror(errno) : _("user does not exist")); + success = false; + } + } +#else /* WIN32 */ + + /* + * On Windows, 'cd' without arguments prints the current + * directory, so if someone wants to code this here instead... + */ + dir = "/"; +#endif /* WIN32 */ + } + + if (success && + chdir(dir) < 0) + { + 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 (is_unixsock_path(host)) + { + /* hostaddr overrides 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 result 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': + if (strncmp(cmd, "dconfig", 7) == 0) + success = describeConfigurationParameters(pattern, + show_verbose, + show_system); + else + 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 = exec_command_dfo(scan_state, cmd, 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 = listLargeObjects(show_verbose); + break; + case 'L': + success = listLanguages(pattern, show_verbose, show_system); + break; + case 'n': + success = listSchemas(pattern, show_verbose, show_system); + break; + case 'o': + success = exec_command_dfo(scan_state, cmd, 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 'X': /* Extended Statistics */ + success = listExtendedStats(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; +} + +/* \df and \do; messy enough to split out of exec_command_d */ +static bool +exec_command_dfo(PsqlScanState scan_state, const char *cmd, + const char *pattern, + bool show_verbose, bool show_system) +{ + bool success; + char *arg_patterns[FUNC_MAX_ARGS]; + int num_arg_patterns = 0; + + /* Collect argument-type patterns too */ + if (pattern) /* otherwise it was just \df or \do */ + { + char *ap; + + while ((ap = psql_scan_slash_option(scan_state, + OT_NORMAL, NULL, true)) != NULL) + { + arg_patterns[num_arg_patterns++] = ap; + if (num_arg_patterns >= FUNC_MAX_ARGS) + break; /* protect limited-size array */ + } + } + + if (cmd[1] == 'f') + success = describeFunctions(&cmd[2], pattern, + arg_patterns, num_arg_patterns, + show_verbose, show_system); + else + success = describeOperators(pattern, + arg_patterns, num_arg_patterns, + show_verbose, show_system); + + while (--num_arg_patterns >= 0) + free(arg_patterns[num_arg_patterns]); + + return success; +} + +/* + * \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) + { + bool discard_on_quit; + + expand_tilde(&fname); + if (fname) + { + canonicalize_path(fname); + /* Always clear buffer if the file isn't modified */ + discard_on_quit = true; + } + else + { + /* + * If query_buf is empty, recall previous query for + * editing. But in that case, the query buffer should be + * emptied if editing doesn't modify the file. + */ + discard_on_quit = copy_previous_query(query_buf, + previous_buf); + } + + if (do_edit(fname, query_buf, lineno, discard_on_quit, 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 (!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 ", "BEGIN ", or + * "RETURN ", 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 || + strncmp(lines, "BEGIN ", 6) == 0 || + strncmp(lines, "RETURN ", 7) == 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, true, &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, "ed, 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; +} + +/* + * \getenv -- set variable from environment variable + */ +static backslashResult +exec_command_getenv(PsqlScanState scan_state, bool active_branch, + const char *cmd) +{ + bool success = true; + + if (active_branch) + { + char *myvar = psql_scan_slash_option(scan_state, + OT_NORMAL, NULL, false); + char *envvar = psql_scan_slash_option(scan_state, + OT_NORMAL, NULL, false); + + if (!myvar || !envvar) + { + pg_log_error("\\%s: missing required argument", cmd); + success = false; + } + else + { + char *envval = getenv(envvar); + + if (envval && !SetVariable(pset.vars, myvar, envval)) + success = false; + } + free(myvar); + free(envvar); + } + else + ignore_slash_options(scan_state); + + return success ? PSQL_CMD_SKIP_LINE : PSQL_CMD_ERROR; +} + +/* + * \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 -- beginning of an \if..\endif block + * + * 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 -- alternative branch in an \if..\endif block + * + * is evaluated the same as in \if . + */ +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 = listLargeObjects(false); + else if (strcmp(cmd + 3, "list+") == 0) + success = listLargeObjects(true); + + 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 *user = psql_scan_slash_option(scan_state, + OT_SQLID, NULL, true); + char *pw1 = NULL; + char *pw2 = NULL; + PQExpBufferData buf; + PromptInterruptContext prompt_ctx; + + if (user == NULL) + { + /* By default, the command applies to CURRENT_USER */ + PGresult *res; + + res = PSQLexec("SELECT CURRENT_USER"); + if (!res) + return PSQL_CMD_ERROR; + + user = pg_strdup(PQgetvalue(res, 0, 0)); + PQclear(res); + } + + /* Set up to let SIGINT cancel simple_prompt_extended() */ + prompt_ctx.jmpbuf = sigint_interrupt_jmp; + prompt_ctx.enabled = &sigint_interrupt_enabled; + prompt_ctx.canceled = false; + + initPQExpBuffer(&buf); + printfPQExpBuffer(&buf, _("Enter new password for user \"%s\": "), user); + + pw1 = simple_prompt_extended(buf.data, false, &prompt_ctx); + if (!prompt_ctx.canceled) + pw2 = simple_prompt_extended("Enter it again: ", false, &prompt_ctx); + + if (prompt_ctx.canceled) + { + /* fail silently */ + success = false; + } + else if (strcmp(pw1, pw2) != 0) + { + pg_log_error("Passwords didn't match."); + success = false; + } + else + { + char *encrypted_password; + + encrypted_password = PQencryptPasswordConn(pset.db, pw1, user, NULL); + + if (!encrypted_password) + { + pg_log_info("%s", PQerrorMessage(pset.db)); + success = false; + } + else + { + PGresult *res; + + printfPQExpBuffer(&buf, "ALTER USER %s PASSWORD ", + fmtId(user)); + appendStringLiteralConn(&buf, encrypted_password, pset.db); + res = PSQLexec(buf.data); + if (!res) + success = false; + else + PQclear(res); + PQfreemem(encrypted_password); + } + } + + free(user); + if (pw1) + free(pw1); + if (pw2) + free(pw2); + termPQExpBuffer(&buf); + } + 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; + PromptInterruptContext prompt_ctx; + + /* Set up to let SIGINT cancel simple_prompt_extended() */ + prompt_ctx.jmpbuf = sigint_interrupt_jmp; + prompt_ctx.enabled = &sigint_interrupt_enabled; + prompt_ctx.canceled = false; + + if (arg2) + { + prompt_text = arg1; + opt = arg2; + } + else + opt = arg1; + + if (!pset.inputfile) + { + result = simple_prompt_extended(prompt_text, true, &prompt_ctx); + } + 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 (prompt_ctx.canceled || + (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 */ + setenv(envvar, envval, 1); + success = true; + } + 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 (!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) + { + /* add line numbers */ + print_with_linenumbers(output, buf->data, is_func); + } + 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 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 */ + (void) 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, "e, 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). + * + * Returns "true" if the previous query was copied into the query + * buffer, else "false". + */ +static bool +copy_previous_query(PQExpBuffer query_buf, PQExpBuffer previous_buf) +{ + if (query_buf && query_buf->len == 0) + { + appendPQExpBufferStr(query_buf, previous_buf->data); + return true; + } + return false; +} + +/* + * 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. + * If 'canceled' is provided, *canceled will be set to true if the prompt + * is canceled via SIGINT, and to false otherwise. + */ +static char * +prompt_for_password(const char *username, bool *canceled) +{ + char *result; + PromptInterruptContext prompt_ctx; + + /* Set up to let SIGINT cancel simple_prompt_extended() */ + prompt_ctx.jmpbuf = sigint_interrupt_jmp; + prompt_ctx.enabled = &sigint_interrupt_enabled; + prompt_ctx.canceled = false; + + if (username == NULL || username[0] == '\0') + result = simple_prompt_extended("Password: ", false, &prompt_ctx); + else + { + char *prompt_text; + + prompt_text = psprintf(_("Password for user %s: "), username); + result = simple_prompt_extended(prompt_text, false, &prompt_ctx); + free(prompt_text); + } + + if (canceled) + *canceled = prompt_ctx.canceled; + + return result; +} + +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. If we are told to re-use + * parameters, parameters from the previous connection are used where the + * command's own options do not supply a value. Otherwise, libpq defaults + * are used. + * + * 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; + + has_connection_string = dbname ? + recognized_connection_string(dbname) : false; + + /* Complain if we have additional arguments after a connection string. */ + if (has_connection_string && (user || host || port)) + { + pg_log_error("Do not give user, host, or port separately when using a connection string"); + return 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 we intend to re-use connection parameters, collect them out of the + * old connection, then replace individual values as necessary. (We may + * need to resort to looking at pset.dead_conn, if the connection died + * previously.) 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) + { + if (o_conn) + cinfo = PQconninfo(o_conn); + else if (pset.dead_conn) + cinfo = PQconninfo(pset.dead_conn); + else + { + /* This is reachable after a non-interactive \connect failure */ + pg_log_error("No database connection exists to re-use parameters from"); + return false; + } + } + 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) + { + bool canceled = false; + + /* + * 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, + &canceled); + success = !canceled; + } + + /* + * 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) + { + bool canceled = false; + + /* + * 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), &canceled); + PQfinish(n_conn); + n_conn = NULL; + success = !canceled; + 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. + * + * Unlike CheckConnection(), we close the old connection + * immediately to prevent its parameters from being re-used. + * This is so that a script cannot accidentally reuse + * parameters it did not expect to. Otherwise, the state + * cleanup should be the same as in CheckConnection(). + */ + PQfinish(o_conn); + pset.db = NULL; + ResetCancelConn(); + UnsyncVariables(); + } + + /* On the same reasoning, release any dead_conn to prevent reuse */ + if (pset.dead_conn) + { + PQfinish(pset.dead_conn); + pset.dead_conn = NULL; + } + } + + 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 (is_unixsock_path(host)) + { + /* hostaddr overrides 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)); + } + + /* Drop no-longer-needed connection(s) */ + if (o_conn) + PQfinish(o_conn); + if (pset.dead_conn) + { + PQfinish(pset.dead_conn); + pset.dead_conn = NULL; + } + + 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); + + /* + * Warn if server's major version is newer than ours, or if server + * predates our support cutoff (currently 9.2). + */ + if (pset.sversion / 100 > client_ver / 100 || + pset.sversion < 90200) + 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 *compression; + + if (!PQsslInUse(pset.db)) + return; /* no SSL */ + + protocol = PQsslAttribute(pset.db, "protocol"); + cipher = PQsslAttribute(pset.db, "cipher"); + compression = PQsslAttribute(pset.db, "compression"); + + printf(_("SSL connection (protocol: %s, cipher: %s, compression: %s)\n"), + protocol ? protocol : _("unknown"), + cipher ? cipher : _("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); +} + + +/* + * helper for do_edit(): actually invoke the editor + * + * Returns true on success, false if we failed to invoke the editor or + * it returned nonzero status. (An error message is printed for failed- + * to-invoke cases, but not if the editor returns nonzero status.) + */ +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; +} + + +/* + * do_edit -- handler for \e + * + * If you do not specify a filename, the current query buffer will be copied + * into a temporary file. + * + * After this function is done, the resulting file will be copied back into the + * query buffer. As an exception to this, the query buffer will be emptied + * if the file was not modified (or the editor failed) and the caller passes + * "discard_on_quit" = true. + * + * If "edited" isn't NULL, *edited will be set to true if the query buffer + * is successfully replaced. + */ +static bool +do_edit(const char *filename_arg, PQExpBuffer query_buf, + int lineno, bool discard_on_quit, 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; + resetPQExpBuffer(query_buf); + } + else if (edited) + { + *edited = true; + } + + fclose(stream); + } + } + else + { + /* + * If the file was not modified, and the caller requested it, discard + * the query buffer. + */ + if (discard_on_quit) + resetPQExpBuffer(query_buf); + } + + /* 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 = ""; /* 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 .\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; + const char *pagerprog = NULL; + FILE *pagerpipe = NULL; + int title_len; + int res = 0; +#ifdef HAVE_POSIX_DECL_SIGWAIT + sigset_t sigalrm_sigchld_sigint; + sigset_t sigalrm_sigchld; + sigset_t sigint; + struct itimerval interval; + bool done = false; +#endif + + if (!query_buf || query_buf->len <= 0) + { + pg_log_error("\\watch cannot be used with an empty query"); + return false; + } + +#ifdef HAVE_POSIX_DECL_SIGWAIT + sigemptyset(&sigalrm_sigchld_sigint); + sigaddset(&sigalrm_sigchld_sigint, SIGCHLD); + sigaddset(&sigalrm_sigchld_sigint, SIGALRM); + sigaddset(&sigalrm_sigchld_sigint, SIGINT); + + sigemptyset(&sigalrm_sigchld); + sigaddset(&sigalrm_sigchld, SIGCHLD); + sigaddset(&sigalrm_sigchld, SIGALRM); + + sigemptyset(&sigint); + sigaddset(&sigint, SIGINT); + + /* + * Block SIGALRM and SIGCHLD before we start the timer and the pager (if + * configured), to avoid races. sigwait() will receive them. + */ + sigprocmask(SIG_BLOCK, &sigalrm_sigchld, NULL); + + /* + * Set a timer to interrupt sigwait() so we can run the query at the + * requested intervals. + */ + interval.it_value.tv_sec = sleep_ms / 1000; + interval.it_value.tv_usec = (sleep_ms % 1000) * 1000; + interval.it_interval = interval.it_value; + if (setitimer(ITIMER_REAL, &interval, NULL) < 0) + { + pg_log_error("could not set timer: %m"); + done = true; + } +#endif + + /* + * For \watch, we ignore the size of the result and always use the pager + * as long as we're talking to a terminal and "\pset pager" is enabled. + * However, we'll only use the pager identified by PSQL_WATCH_PAGER. We + * ignore the regular PSQL_PAGER or PAGER environment variables, because + * traditional pagers probably won't be very useful for showing a stream + * of results. + */ +#ifdef HAVE_POSIX_DECL_SIGWAIT + pagerprog = getenv("PSQL_WATCH_PAGER"); + /* if variable is empty or all-white-space, don't use pager */ + if (pagerprog && strspn(pagerprog, " \t\r\n") == strlen(pagerprog)) + pagerprog = NULL; +#endif + if (pagerprog && myopt.topt.pager && + isatty(fileno(stdin)) && isatty(fileno(stdout))) + { + disable_sigpipe_trap(); + pagerpipe = popen(pagerprog, "w"); + + if (!pagerpipe) + /* silently proceed without pager */ + restore_sigpipe_trap(); + } + + /* + * 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 unless + * PSQL_WATCH_PAGER was successfully launched. + */ + if (!pagerpipe) + 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]; + + /* + * 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 result */ + res = PSQLexecWatch(query_buf->data, &myopt, pagerpipe); + + /* + * PSQLexecWatch handles the case where we can no longer repeat the + * query, and returns 0 or -1. + */ + if (res <= 0) + break; + + if (pagerpipe && ferror(pagerpipe)) + break; + +#ifndef HAVE_POSIX_DECL_SIGWAIT + + /* + * 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). + */ + sigint_interrupt_enabled = true; + for (long i = sleep_ms; i > 0;) + { + long s = Min(i, 1000L); + + pg_usleep(s * 1000L); + if (cancel_pressed) + break; + i -= s; + } + sigint_interrupt_enabled = false; +#else + /* sigwait() will handle SIGINT. */ + sigprocmask(SIG_BLOCK, &sigint, NULL); + if (cancel_pressed) + done = true; + + /* Wait for SIGINT, SIGCHLD or SIGALRM. */ + while (!done) + { + int signal_received; + + errno = sigwait(&sigalrm_sigchld_sigint, &signal_received); + if (errno != 0) + { + /* Some other signal arrived? */ + if (errno == EINTR) + continue; + else + { + pg_log_error("could not wait for signals: %m"); + done = true; + break; + } + } + /* On ^C or pager exit, it's time to stop running the query. */ + if (signal_received == SIGINT || signal_received == SIGCHLD) + done = true; + /* Otherwise, we must have SIGALRM. Time to run the query again. */ + break; + } + + /* Unblock SIGINT so that slow queries can be interrupted. */ + sigprocmask(SIG_UNBLOCK, &sigint, NULL); + if (done) + break; +#endif + } + + if (pagerpipe) + { + pclose(pagerpipe); + restore_sigpipe_trap(); + } + else + { + /* + * If the terminal driver echoed "^C", libedit/libreadline might be + * confused about the cursor position. Therefore, inject a newline + * before the next prompt is displayed. We only do this when not + * using a pager, because pagers are expected to restore the screen to + * a sane state on exit. + */ + fprintf(stdout, "\n"); + fflush(stdout); + } + +#ifdef HAVE_POSIX_DECL_SIGWAIT + /* Disable the interval timer. */ + memset(&interval, 0, sizeof(interval)); + setitimer(ITIMER_REAL, &interval, NULL); + /* Unblock SIGINT, SIGCHLD and SIGALRM. */ + sigprocmask(SIG_UNBLOCK, &sigalrm_sigchld_sigint, NULL); +#endif + + 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 PG 9.4, views may 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 + { + 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); + } + 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 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. + * + * For functions, lineno "1" should correspond to the first line of the + * function body; lines before that are unnumbered. We expect that + * pg_get_functiondef() will emit that on a line beginning with "AS ", + * "BEGIN ", or "RETURN ", and that there can be no such line before + * the real start of the function body. + * + * Caution: this scribbles on *lines. + */ +static void +print_with_linenumbers(FILE *output, char *lines, bool is_func) +{ + bool in_header = is_func; + int lineno = 0; + + while (*lines != '\0') + { + char *eol; + + if (in_header && + (strncmp(lines, "AS ", 3) == 0 || + strncmp(lines, "BEGIN ", 6) == 0 || + strncmp(lines, "RETURN ", 7) == 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..7354ab5 --- /dev/null +++ b/src/bin/psql/command.h @@ -0,0 +1,49 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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..f5909f9 --- /dev/null +++ b/src/bin/psql/common.c @@ -0,0 +1,2388 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/common.c + */ +#include "postgres_fe.h" + +#include +#include +#include +#include +#include +#ifndef WIN32 +#include /* for write() */ +#else +#include /* for _write() */ +#include +#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" + +static bool DescribeQuery(const char *query, double *elapsed_msec); +static bool ExecQueryUsingCursor(const char *query, double *elapsed_msec); +static int ExecQueryAndProcessResults(const char *query, + double *elapsed_msec, + bool *svpt_gone_p, + bool is_watch, + const printQueryOpt *opt, + FILE *printQueryFout); +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_error("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; but stash away the failed + * connection so that we can still refer to its parameters in a + * later \connect attempt. Keep the state cleanup here in sync + * with do_connect(). + */ + if (pset.dead_conn) + PQfinish(pset.dead_conn); + pset.dead_conn = 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 show_error) +{ + 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 && show_error) + { + 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 *result, bool success) +{ + if (success) + { + const char *ntuples = PQcmdTuples(result); + + SetVariable(pset.vars, "ERROR", "false"); + SetVariable(pset.vars, "SQLSTATE", "00000"); + SetVariable(pset.vars, "ROW_COUNT", *ntuples ? ntuples : "0"); + } + else + { + const char *code = PQresultErrorField(result, PG_DIAG_SQLSTATE); + const char *mesg = PQresultErrorField(result, 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; + } + } +} + + +/* + * Consume all results + */ +static void +ClearOrSaveAllResults(void) +{ + PGresult *result; + + while ((result = PQgetResult(pset.db)) != NULL) + ClearOrSaveResult(result); +} + + +/* + * 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, true)) + { + 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 result. + * + * 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, FILE *printQueryFout) +{ + bool timing = pset.timing; + double elapsed_msec = 0; + int res; + + if (!pset.db) + { + pg_log_error("You are currently not connected to a database."); + return 0; + } + + SetCancelConn(pset.db); + + res = ExecQueryAndProcessResults(query, &elapsed_msec, NULL, true, opt, printQueryFout); + + ResetCancelConn(); + + /* Possible microtiming output */ + if (timing) + PrintTiming(elapsed_msec); + + return res; +} + + +/* + * 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 + * + * We use the options given by opt unless that's NULL, in which case + * we use pset.popt. + * + * Output is to printQueryFout unless that's NULL, in which case + * we use pset.queryFout. + * + * Returns true if successful, false otherwise. + */ +static bool +PrintQueryTuples(const PGresult *result, const printQueryOpt *opt, + FILE *printQueryFout) +{ + bool ok = true; + FILE *fout = printQueryFout ? printQueryFout : pset.queryFout; + + printQuery(result, opt ? opt : &pset.popt, fout, false, pset.logfile); + fflush(fout); + if (ferror(fout)) + { + pg_log_error("could not print result table: %m"); + ok = false; + } + + return ok; +} + + +/* + * 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; +} + + +/* + * Marshal the COPY data. Either path will get the + * connection out of its COPY state, then call PQresultStatus() + * once and report any error. Return whether all was ok. + * + * For COPY OUT, direct the output to copystream, or discard if that's NULL. + * For COPY IN, use pset.copyStream as data source if it's set, + * otherwise cur_cmd_source. + * + * Update *resultp if further processing is necessary; set to NULL otherwise. + * Return a result when queryFout can safely output a result status: on COPY + * IN, or on COPY OUT if written to something other than pset.queryFout. + * Returning NULL prevents the command status from being printed, which we + * want if the status line doesn't get taken as part of the COPY data. + */ +static bool +HandleCopyResult(PGresult **resultp, FILE *copystream) +{ + bool success; + PGresult *copy_result; + ExecStatusType result_status = PQresultStatus(*resultp); + + Assert(result_status == PGRES_COPY_OUT || + result_status == PGRES_COPY_IN); + + SetCancelConn(pset.db); + + if (result_status == PGRES_COPY_OUT) + { + success = handleCopyOut(pset.db, + copystream, + ©_result) + && (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; + } + } + else + { + /* COPY IN */ + /* Ignore the copystream argument passed to the function */ + copystream = pset.copyStream ? pset.copyStream : pset.cur_cmd_source; + success = handleCopyIn(pset.db, + copystream, + PQbinaryTuples(*resultp), + ©_result); + } + 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(*resultp); + *resultp = copy_result; + + return success; +} + +/* + * PrintQueryStatus: report command status as required + * + * Note: Utility function for use by PrintQueryResult() only. + */ +static void +PrintQueryStatus(PGresult *result, FILE *printQueryFout) +{ + char buf[16]; + FILE *fout = printQueryFout ? printQueryFout : pset.queryFout; + + if (!pset.quiet) + { + if (pset.popt.topt.format == PRINT_HTML) + { + fputs("

", fout); + html_escaped_print(PQcmdStatus(result), fout); + fputs("

\n", fout); + } + else + fprintf(fout, "%s\n", PQcmdStatus(result)); + fflush(fout); + } + + if (pset.logfile) + fprintf(pset.logfile, "%s\n", PQcmdStatus(result)); + + snprintf(buf, sizeof(buf), "%u", (unsigned int) PQoidValue(result)); + SetVariable(pset.vars, "LASTOID", buf); +} + + +/* + * PrintQueryResult: print out (or store or execute) query result as required + * + * Note: Utility function for use by SendQuery() only. + * + * last is true if this is the last result of a command string. + * opt and printQueryFout are defined as for PrintQueryTuples. + * printStatusFout is where to send command status; NULL means pset.queryFout. + * + * Returns true if the query executed successfully, false otherwise. + */ +static bool +PrintQueryResult(PGresult *result, bool last, + const printQueryOpt *opt, FILE *printQueryFout, + FILE *printStatusFout) +{ + bool success; + const char *cmdstatus; + + if (!result) + return false; + + switch (PQresultStatus(result)) + { + case PGRES_TUPLES_OK: + /* store or execute or print the data ... */ + if (last && pset.gset_prefix) + success = StoreQueryTuple(result); + else if (last && pset.gexec_flag) + success = ExecQueryTuples(result); + else if (last && pset.crosstab_flag) + success = PrintResultInCrosstab(result); + else if (last || pset.show_all_results) + success = PrintQueryTuples(result, opt, printQueryFout); + else + success = true; + + /* if it's INSERT/UPDATE/DELETE RETURNING, also print status */ + if (last || pset.show_all_results) + { + cmdstatus = PQcmdStatus(result); + if (strncmp(cmdstatus, "INSERT", 6) == 0 || + strncmp(cmdstatus, "UPDATE", 6) == 0 || + strncmp(cmdstatus, "DELETE", 6) == 0) + PrintQueryStatus(result, printStatusFout); + } + + break; + + case PGRES_COMMAND_OK: + if (last || pset.show_all_results) + PrintQueryStatus(result, printStatusFout); + success = true; + break; + + case PGRES_EMPTY_QUERY: + success = true; + break; + + case PGRES_COPY_OUT: + case PGRES_COPY_IN: + /* nothing to do here: already processed */ + 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(result)); + break; + } + + return success; +} + +/* + * SendQuery: send the query string to the backend + * (and print out result) + * + * 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) +{ + bool timing = pset.timing; + PGTransactionStatusType transaction_status; + double elapsed_msec = 0; + bool OK = false; + int i; + bool on_error_rollback_savepoint = false; + bool svpt_gone = 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)) + { + PGresult *result; + + result = PQexec(pset.db, "BEGIN"); + if (PQresultStatus(result) != PGRES_COMMAND_OK) + { + pg_log_info("%s", PQerrorMessage(pset.db)); + ClearOrSaveResult(result); + goto sendquery_cleanup; + } + ClearOrSaveResult(result); + 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)) + { + PGresult *result; + + result = PQexec(pset.db, "SAVEPOINT pg_psql_temporary_savepoint"); + if (PQresultStatus(result) != PGRES_COMMAND_OK) + { + pg_log_info("%s", PQerrorMessage(pset.db)); + ClearOrSaveResult(result); + goto sendquery_cleanup; + } + ClearOrSaveResult(result); + on_error_rollback_savepoint = true; + } + + if (pset.gdesc_flag) + { + /* Describe query's result columns, without executing it */ + OK = DescribeQuery(query, &elapsed_msec); + } + else if (pset.fetch_count <= 0 || pset.gexec_flag || + pset.crosstab_flag || !is_select_command(query)) + { + /* Default fetch-it-all-and-print mode */ + OK = (ExecQueryAndProcessResults(query, &elapsed_msec, &svpt_gone, false, NULL, NULL) > 0); + } + else + { + /* Fetch-in-segments mode */ + OK = ExecQueryUsingCursor(query, &elapsed_msec); + } + + 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: + + /* + * Release our savepoint, but do nothing if they are messing + * with savepoints themselves + */ + if (!svpt_gone) + 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; + + goto sendquery_cleanup; + } + PQclear(svptres); + } + } + + /* Possible microtiming output */ + if (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: + + /* global cancellation reset */ + ResetCancelConn(); + + /* 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) +{ + bool timing = pset.timing; + PGresult *result; + bool OK; + instr_time before, + after; + + *elapsed_msec = 0; + + if (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.) + */ + result = PQprepare(pset.db, "", query, 0, NULL); + if (PQresultStatus(result) != PGRES_COMMAND_OK) + { + pg_log_info("%s", PQerrorMessage(pset.db)); + SetResultVariables(result, false); + ClearOrSaveResult(result); + return false; + } + PQclear(result); + + result = PQdescribePrepared(pset.db, ""); + OK = AcceptResult(result, true) && + (PQresultStatus(result) == PGRES_COMMAND_OK); + if (OK && result) + { + if (PQnfields(result) > 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(result); i++) + { + const char *name; + char *escname; + + if (i > 0) + appendPQExpBufferStr(&buf, ","); + + name = PQfname(result, i); + escname = PQescapeLiteral(pset.db, name, strlen(name)); + + if (escname == NULL) + { + pg_log_info("%s", PQerrorMessage(pset.db)); + PQclear(result); + termPQExpBuffer(&buf); + return false; + } + + appendPQExpBuffer(&buf, "(%s, '%u'::pg_catalog.oid, %d)", + escname, + PQftype(result, i), + PQfmod(result, i)); + + PQfreemem(escname); + } + + appendPQExpBufferStr(&buf, ") s(name, tp, tpm)"); + PQclear(result); + + result = PQexec(pset.db, buf.data); + OK = AcceptResult(result, true); + + if (timing) + { + INSTR_TIME_SET_CURRENT(after); + INSTR_TIME_SUBTRACT(after, before); + *elapsed_msec += INSTR_TIME_GET_MILLISEC(after); + } + + if (OK && result) + OK = PrintQueryResult(result, true, NULL, NULL, NULL); + + termPQExpBuffer(&buf); + } + else + fprintf(pset.queryFout, + _("The command has no result, or the result has no columns.\n")); + } + + SetResultVariables(result, OK); + ClearOrSaveResult(result); + + return OK; +} + + +/* + * ExecQueryAndProcessResults: utility function for use by SendQuery() + * and PSQLexecWatch(). + * + * Sends query and cycles through PGresult objects. + * + * If our command string contained a COPY FROM STDIN or COPY TO STDOUT, the + * PGresult associated with these commands must be processed by providing an + * input or output stream. In that event, we'll marshal data for the COPY. + * + * For other commands, the results are processed normally, depending on their + * status. + * + * Returns 1 on complete success, 0 on interrupt and -1 or errors. Possible + * failure modes include purely client-side problems; check the transaction + * status for the server-side opinion. + * + * Note that on a combined query, failure does not mean that nothing was + * committed. + */ +static int +ExecQueryAndProcessResults(const char *query, + double *elapsed_msec, bool *svpt_gone_p, + bool is_watch, + const printQueryOpt *opt, FILE *printQueryFout) +{ + bool timing = pset.timing; + bool success; + instr_time before, + after; + PGresult *result; + FILE *gfile_fout = NULL; + bool gfile_is_pipe = false; + + if (timing) + INSTR_TIME_SET_CURRENT(before); + + success = PQsendQuery(pset.db, query); + + if (!success) + { + const char *error = PQerrorMessage(pset.db); + + if (strlen(error)) + pg_log_info("%s", error); + + CheckConnection(); + + return -1; + } + + /* + * 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 (is_watch && cancel_pressed) + { + ClearOrSaveAllResults(); + return 0; + } + + /* first result */ + result = PQgetResult(pset.db); + + while (result != NULL) + { + ExecStatusType result_status; + PGresult *next_result; + bool last; + + if (!AcceptResult(result, false)) + { + /* + * Some error occured, either a server-side failure or a failure + * to submit the command string. Record that. + */ + const char *error = PQresultErrorMessage(result); + + if (strlen(error)) + pg_log_info("%s", error); + + CheckConnection(); + if (!is_watch) + SetResultVariables(result, false); + + /* keep the result status before clearing it */ + result_status = PQresultStatus(result); + ClearOrSaveResult(result); + success = false; + + /* + * switch to next result + */ + if (result_status == PGRES_COPY_BOTH || + result_status == PGRES_COPY_OUT || + result_status == PGRES_COPY_IN) + + /* + * For some obscure reason PQgetResult does *not* return a + * NULL in copy cases despite the result having been cleared, + * but keeps returning an "empty" result that we have to + * ignore manually. + */ + result = NULL; + else + result = PQgetResult(pset.db); + + /* + * Get current timing measure in case an error occurs + */ + if (timing) + { + INSTR_TIME_SET_CURRENT(after); + INSTR_TIME_SUBTRACT(after, before); + *elapsed_msec = INSTR_TIME_GET_MILLISEC(after); + } + + continue; + } + else if (svpt_gone_p && !*svpt_gone_p) + { + /* + * Check if the user ran any command that would destroy our + * internal savepoint: If the user did COMMIT AND CHAIN, RELEASE + * or ROLLBACK, our savepoint is gone. If they issued a SAVEPOINT, + * releasing ours would remove theirs. + */ + const char *cmd = PQcmdStatus(result); + + *svpt_gone_p = (strcmp(cmd, "COMMIT") == 0 || + strcmp(cmd, "SAVEPOINT") == 0 || + strcmp(cmd, "RELEASE") == 0 || + strcmp(cmd, "ROLLBACK") == 0); + } + + result_status = PQresultStatus(result); + + /* must handle COPY before changing the current result */ + Assert(result_status != PGRES_COPY_BOTH); + if (result_status == PGRES_COPY_IN || + result_status == PGRES_COPY_OUT) + { + FILE *copy_stream = NULL; + + /* + * For COPY OUT, direct the output to the default place (probably + * a pager pipe) for \watch, or to pset.copyStream for \copy, + * otherwise to pset.gfname if that's set, otherwise to + * pset.queryFout. + */ + if (result_status == PGRES_COPY_OUT) + { + if (is_watch) + { + /* invoked by \watch */ + copy_stream = printQueryFout ? printQueryFout : pset.queryFout; + } + else if (pset.copyStream) + { + /* invoked by \copy */ + copy_stream = pset.copyStream; + } + else if (pset.gfname) + { + /* send to \g file, which we may have opened already */ + if (gfile_fout == NULL) + { + if (openQueryOutputFile(pset.gfname, + &gfile_fout, &gfile_is_pipe)) + { + if (gfile_is_pipe) + disable_sigpipe_trap(); + copy_stream = gfile_fout; + } + else + success = false; + } + else + copy_stream = gfile_fout; + } + else + { + /* fall back to the generic query output stream */ + copy_stream = pset.queryFout; + } + } + + /* + * Even if the output stream could not be opened, we call + * HandleCopyResult() with a NULL output stream to collect and + * discard the COPY data. + */ + success &= HandleCopyResult(&result, copy_stream); + } + + /* + * Check PQgetResult() again. In the typical case of a single-command + * string, it will return NULL. Otherwise, we'll have other results + * to process. We need to do that to check whether this is the last. + */ + next_result = PQgetResult(pset.db); + last = (next_result == NULL); + + /* + * Update current timing measure. + * + * It will include the display of previous results, if any. This + * cannot be helped because the server goes on processing further + * queries anyway while the previous ones are being displayed. The + * parallel execution of the client display hides the server time when + * it is shorter. + * + * With combined queries, timing must be understood as an upper bound + * of the time spent processing them. + */ + if (timing) + { + INSTR_TIME_SET_CURRENT(after); + INSTR_TIME_SUBTRACT(after, before); + *elapsed_msec = INSTR_TIME_GET_MILLISEC(after); + } + + /* this may or may not print something depending on settings */ + if (result != NULL) + { + /* + * If results need to be printed into the file specified by \g, + * open it, unless we already did. Note that when pset.gfname is + * set, the passed-in value of printQueryFout is not used for + * tuple output, but it's still used for status output. + */ + FILE *tuples_fout = printQueryFout; + bool do_print = true; + + if (PQresultStatus(result) == PGRES_TUPLES_OK && + pset.gfname) + { + if (gfile_fout == NULL) + { + if (openQueryOutputFile(pset.gfname, + &gfile_fout, &gfile_is_pipe)) + { + if (gfile_is_pipe) + disable_sigpipe_trap(); + } + else + success = do_print = false; + } + tuples_fout = gfile_fout; + } + if (do_print) + success &= PrintQueryResult(result, last, opt, + tuples_fout, printQueryFout); + } + + /* set variables on last result if all went well */ + if (!is_watch && last && success) + SetResultVariables(result, true); + + ClearOrSaveResult(result); + result = next_result; + + if (cancel_pressed) + { + ClearOrSaveAllResults(); + break; + } + } + + /* close \g file if we opened it */ + if (gfile_fout) + { + if (gfile_is_pipe) + { + pclose(gfile_fout); + restore_sigpipe_trap(); + } + else + fclose(gfile_fout); + } + + /* may need this to recover from conn loss during COPY */ + if (!CheckConnection()) + return -1; + + return cancel_pressed ? 0 : success ? 1 : -1; +} + + +/* + * 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 *result; + PQExpBufferData buf; + printQueryOpt my_popt = pset.popt; + bool timing = pset.timing; + 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 (timing) + INSTR_TIME_SET_CURRENT(before); + + /* if we're not in a transaction, start one */ + if (PQtransactionStatus(pset.db) == PQTRANS_IDLE) + { + result = PQexec(pset.db, "BEGIN"); + OK = AcceptResult(result, true) && + (PQresultStatus(result) == PGRES_COMMAND_OK); + ClearOrSaveResult(result); + if (!OK) + return false; + started_txn = true; + } + + /* Send DECLARE CURSOR */ + initPQExpBuffer(&buf); + appendPQExpBuffer(&buf, "DECLARE _psql_cursor NO SCROLL CURSOR FOR\n%s", + query); + + result = PQexec(pset.db, buf.data); + OK = AcceptResult(result, true) && + (PQresultStatus(result) == PGRES_COMMAND_OK); + if (!OK) + SetResultVariables(result, OK); + ClearOrSaveResult(result); + termPQExpBuffer(&buf); + if (!OK) + goto cleanup; + + if (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 (timing) + INSTR_TIME_SET_CURRENT(before); + + /* get fetch_count tuples at a time */ + result = PQexec(pset.db, fetch_cmd); + + if (timing) + { + INSTR_TIME_SET_CURRENT(after); + INSTR_TIME_SUBTRACT(after, before); + *elapsed_msec += INSTR_TIME_GET_MILLISEC(after); + } + + if (PQresultStatus(result) != PGRES_TUPLES_OK) + { + /* shut down pager before printing error message */ + if (is_pager) + { + ClosePager(fout); + is_pager = false; + } + + OK = AcceptResult(result, true); + Assert(!OK); + SetResultVariables(result, OK); + ClearOrSaveResult(result); + break; + } + + if (pset.gset_prefix) + { + /* StoreQueryTuple will complain if not exactly one row */ + OK = StoreQueryTuple(result); + ClearOrSaveResult(result); + break; + } + + /* + * Note we do not deal with \gdesc, \gexec or \crosstabview modes here + */ + + ntuples = PQntuples(result); + 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(result, &my_popt, fout, is_pager, pset.logfile); + + ClearOrSaveResult(result); + + /* 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 (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) + */ + result = PQexec(pset.db, "CLOSE _psql_cursor"); + if (OK) + { + OK = AcceptResult(result, true) && + (PQresultStatus(result) == PGRES_COMMAND_OK); + ClearOrSaveResult(result); + } + else + PQclear(result); + + if (started_txn) + { + result = PQexec(pset.db, OK ? "COMMIT" : "ROLLBACK"); + OK &= AcceptResult(result, true) && + (PQresultStatus(result) == PGRES_COMMAND_OK); + ClearOrSaveResult(result); + } + + if (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. + */ +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. + */ +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. + */ +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..d84c3a0 --- /dev/null +++ b/src/bin/psql/common.h @@ -0,0 +1,44 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/common.h + */ +#ifndef COMMON_H +#define COMMON_H + +#include + +#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, FILE *printQueryFout); + +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..424a429 --- /dev/null +++ b/src/bin/psql/copy.c @@ -0,0 +1,727 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/copy.c + */ +#include "postgres_fe.h" + +#include +#include +#ifndef WIN32 +#include /* for isatty */ +#else +#include /* 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: + * '' | PROGRAM '' | 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; + int buflen; + bool at_line_begin = true; + + /* + * In text mode, we have to read the input one line at a time, so that + * we can stop reading at the EOF marker (\.). We mustn't read beyond + * the EOF marker, because if the data was inlined in a SQL script, we + * would eat up the commands after the EOF marker. + */ + buflen = 0; + while (!copydone) + { + char *fgresult; + + if (at_line_begin && showprompt) + { + const char *prompt = get_prompt(PROMPT_COPY, NULL); + + fputs(prompt, stdout); + fflush(stdout); + } + + /* enable longjmp while waiting for input */ + sigint_interrupt_enabled = true; + + fgresult = fgets(&buf[buflen], COPYBUFSIZ - buflen, copystream); + + sigint_interrupt_enabled = false; + + if (!fgresult) + copydone = true; + else + { + int linelen; + + linelen = strlen(fgresult); + buflen += linelen; + + /* current line is done? */ + if (buf[buflen - 1] == '\n') + { + /* check for EOF marker, but not on a partial line */ + if (at_line_begin) + { + /* + * 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 ((linelen == 3 && memcmp(fgresult, "\\.\n", 3) == 0) || + (linelen == 4 && memcmp(fgresult, "\\.\r\n", 4) == 0)) + { + copydone = true; + } + } + + if (copystream == pset.cur_cmd_source) + { + pset.lineno++; + pset.stmt_lineno++; + } + at_line_begin = true; + } + else + at_line_begin = false; + } + + /* + * If the buffer is full, or we've reached the EOF, flush it. + * + * Make sure there's always space for four more bytes in the + * buffer, plus a NUL terminator. That way, an EOF marker is + * never split across two fgets() calls, which simplifies the + * logic. + */ + if (buflen >= COPYBUFSIZ - 5 || (copydone && buflen > 0)) + { + if (PQputCopyData(conn, buf, buflen) <= 0) + { + OK = false; + break; + } + + buflen = 0; + } + } + } + + /* 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. (libpq no longer supports protocol version 2, but + * keep the version checks just in case you're using a pre-v14 libpq.so at + * runtime) + */ + 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..effc05d --- /dev/null +++ b/src/bin/psql/copy.h @@ -0,0 +1,24 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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..78ab2ff --- /dev/null +++ b/src/bin/psql/create_help.pl @@ -0,0 +1,219 @@ +#! /usr/bin/perl + +################################################################# +# create_help.pl -- converts SGML docs to internal psql help +# +# Copyright (c) 2000-2022, 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(my $dh, $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 $dh) +{ + 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!\s*SQL - Language Statements\s*!i + or next; + + $filecontent =~ m!! + and $cmdid = $1; + + # Collect multiple refnames + LOOP: + { + $filecontent =~ m!\G.*?\s*([a-z ]+?)\s*!cgis + and push @cmdnames, $1 + and redo LOOP; + } + $filecontent =~ m!\s*(.+?)\s*!is + and $cmddesc = $1; + $filecontent =~ m!\s*(.+?)\s*!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+)[^>]*>(.+?)]*>!) + { + my $match = $2; + $match =~ s/<[^>]+>//g; + $match =~ s/%%/%/g; + push @params, $match; + $cmdsynopsis =~ s!<(\w+)[^>]*>.+?]*>!%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 "\t{\"$_\", +\t\tN_(\"$entries{$_}{cmddesc}\"), +\t\t\"$entries{$_}{cmdid}\", +\t\tsql_help_$id, +\t$entries{$_}{nl_count}}, + +"; +} + +print $cfile_handle " +\t{NULL, NULL, NULL}\t\t\t/* 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 $dh; diff --git a/src/bin/psql/crosstabview.c b/src/bin/psql/crosstabview.c new file mode 100644 index 0000000..2c29138 --- /dev/null +++ b/src/bin/psql/crosstabview.c @@ -0,0 +1,713 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 . If + * 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 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 *result, + 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 +PrintResultInCrosstab(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 result. + */ + 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 *result, + 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(result, field_for_rows), + false, + column_type_alignment(PQftype(result, + 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(result, 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(result); rn++) + { + int row_number; + int col_number; + pivot_field *rp, + *cp; + pivot_field elt; + + /* Find target row */ + if (!PQgetisnull(result, rn, field_for_rows)) + elt.name = PQgetvalue(result, 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(result, rn, field_for_columns)) + elt.name = PQgetvalue(result, 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(result, rn, field_for_data) ? + PQgetvalue(result, 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(¤t->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, ¤t->field); + + if (cmp != 0) + { + avlInsertNode(tree, + cmp > 0 ? ¤t->children[1] : ¤t->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..3b96906 --- /dev/null +++ b/src/bin/psql/crosstabview.h @@ -0,0 +1,29 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 PrintResultInCrosstab(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..3823dca --- /dev/null +++ b/src/bin/psql/describe.c @@ -0,0 +1,7007 @@ +/* + * 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 9.2 and up. It's okay to omit irrelevant + * information for an old server, but not to fail outright. (But failing + * against a pre-9.2 server is allowed.) + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/describe.c + */ +#include "postgres_fe.h" + +#include + +#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 const char *map_typename_pattern(const char *pattern); +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); +static bool validateSQLNamePattern(PQExpBuffer buf, const char *pattern, + bool have_where, bool force_escape, + const char *schemavar, const char *namevar, + const char *altnamevar, + const char *visibilityrule, + bool *added_clause, int maxparts); + + +/*---------------- + * 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" + " 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("Schema"), + gettext_noop("Name"), + gettext_noop("Result data type"), + 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"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "p.proname", NULL, + "pg_catalog.pg_function_is_visible(p.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "amname", NULL, + NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + initPQExpBuffer(&buf); + + 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")); + + if (verbose) + { + appendPQExpBufferStr(&buf, ",\n "); + printACLColumn(&buf, "spcacl"); + appendPQExpBuffer(&buf, + ",\n spcoptions AS \"%s\"" + ",\n pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS \"%s\"" + ",\n pg_catalog.shobj_description(oid, 'pg_tablespace') AS \"%s\"", + gettext_noop("Options"), + gettext_noop("Size"), + gettext_noop("Description")); + } + + appendPQExpBufferStr(&buf, + "\nFROM pg_catalog.pg_tablespace\n"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "spcname", NULL, + NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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 *func_pattern, + char **arg_patterns, int num_arg_patterns, + 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 (!showAggregate && !showNormal && !showProcedure && !showTrigger && !showWindow) + { + showAggregate = showNormal = showTrigger = showWindow = true; + if (pset.sversion >= 110000) + showProcedure = 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 + 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")); + + 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\"", + gettext_noop("Language")); + if (pset.sversion >= 140000) + appendPQExpBuffer(&buf, + ",\n COALESCE(pg_catalog.pg_get_function_sqlbody(p.oid), p.prosrc) as \"%s\"", + gettext_noop("Source code")); + else + appendPQExpBuffer(&buf, + ",\n p.prosrc as \"%s\"", + gettext_noop("Source code")); + appendPQExpBuffer(&buf, + ",\n pg_catalog.obj_description(p.oid, 'pg_proc') as \"%s\"", + 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"); + + for (int i = 0; i < num_arg_patterns; i++) + { + appendPQExpBuffer(&buf, + " LEFT JOIN pg_catalog.pg_type t%d ON t%d.oid = p.proargtypes[%d]\n" + " LEFT JOIN pg_catalog.pg_namespace nt%d ON nt%d.oid = t%d.typnamespace\n", + i, i, i, i, i, i); + } + + 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) + { + 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"); + } + appendPQExpBufferStr(&buf, " )\n"); + } + + if (!validateSQLNamePattern(&buf, func_pattern, have_where, false, + "n.nspname", "p.proname", NULL, + "pg_catalog.pg_function_is_visible(p.oid)", + NULL, 3)) + goto error_return; + + for (int i = 0; i < num_arg_patterns; i++) + { + if (strcmp(arg_patterns[i], "-") != 0) + { + /* + * Match type-name patterns against either internal or external + * name, like \dT. Unlike \dT, there seems no reason to + * discriminate against arrays or composite types. + */ + char nspname[64]; + char typname[64]; + char ft[64]; + char tiv[64]; + + snprintf(nspname, sizeof(nspname), "nt%d.nspname", i); + snprintf(typname, sizeof(typname), "t%d.typname", i); + snprintf(ft, sizeof(ft), + "pg_catalog.format_type(t%d.oid, NULL)", i); + snprintf(tiv, sizeof(tiv), + "pg_catalog.pg_type_is_visible(t%d.oid)", i); + if (!validateSQLNamePattern(&buf, + map_typename_pattern(arg_patterns[i]), + true, false, + nspname, typname, ft, tiv, + NULL, 3)) + goto error_return; + } + else + { + /* "-" pattern specifies no such parameter */ + appendPQExpBuffer(&buf, " AND t%d.typname IS NULL\n", i); + } + } + + if (!showSystem && !func_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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + + + +/* + * \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" + " 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" + " ORDER BY e.enumsortorder\n" + " ),\n" + " E'\\n'\n" + " ) AS \"%s\",\n" + " pg_catalog.pg_get_userbyid(t.typowner) AS \"%s\",\n", + gettext_noop("Internal name"), + gettext_noop("Size"), + gettext_noop("Elements"), + gettext_noop("Owner")); + 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 unless the pattern contains [] + */ + if (pattern == NULL || strstr(pattern, "[]") == NULL) + appendPQExpBufferStr(&buf, " AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid)\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 */ + if (!validateSQLNamePattern(&buf, map_typename_pattern(pattern), + true, false, + "n.nspname", "t.typname", + "pg_catalog.format_type(t.oid, NULL)", + "pg_catalog.pg_type_is_visible(t.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; +} + +/* + * Map some variant type names accepted by the backend grammar into + * canonical type names. + * + * Helper for \dT and other functions that take typename patterns. + * This doesn't completely mask the fact that these names are special; + * for example, a pattern of "dec*" won't magically match "numeric". + * But it goes a long way to reduce the surprise factor. + */ +static const char * +map_typename_pattern(const char *pattern) +{ + static const char *const typename_map[] = { + /* + * These names are accepted by gram.y, although they are neither the + * "real" name seen in pg_type nor the canonical name printed by + * format_type(). + */ + "decimal", "numeric", + "float", "double precision", + "int", "integer", + + /* + * We also have to map the array names for cases where the canonical + * name is different from what pg_type says. + */ + "bool[]", "boolean[]", + "decimal[]", "numeric[]", + "float[]", "double precision[]", + "float4[]", "real[]", + "float8[]", "double precision[]", + "int[]", "integer[]", + "int2[]", "smallint[]", + "int4[]", "integer[]", + "int8[]", "bigint[]", + "time[]", "time without time zone[]", + "timetz[]", "time with time zone[]", + "timestamp[]", "timestamp without time zone[]", + "timestamptz[]", "timestamp with time zone[]", + "varbit[]", "bit varying[]", + "varchar[]", "character varying[]", + NULL + }; + + if (pattern == NULL) + return NULL; + for (int i = 0; typename_map[i] != NULL; i += 2) + { + if (pg_strcasecmp(pattern, typename_map[i]) == 0) + return typename_map[i + 1]; + } + return pattern; +} + + +/* + * \do + * Describe operators + */ +bool +describeOperators(const char *oper_pattern, + char **arg_patterns, int num_arg_patterns, + 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. Since 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 third-party modules may still be following the + * old convention. + * + * The support for postfix operators in this query is dead code as of + * Postgres 14, but we need to keep it for as long as we support talking + * to pre-v14 servers. + */ + + 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 (num_arg_patterns >= 2) + { + num_arg_patterns = 2; /* ignore any additional arguments */ + appendPQExpBufferStr(&buf, + " LEFT JOIN pg_catalog.pg_type t0 ON t0.oid = o.oprleft\n" + " LEFT JOIN pg_catalog.pg_namespace nt0 ON nt0.oid = t0.typnamespace\n" + " LEFT JOIN pg_catalog.pg_type t1 ON t1.oid = o.oprright\n" + " LEFT JOIN pg_catalog.pg_namespace nt1 ON nt1.oid = t1.typnamespace\n"); + } + else if (num_arg_patterns == 1) + { + appendPQExpBufferStr(&buf, + " LEFT JOIN pg_catalog.pg_type t0 ON t0.oid = o.oprright\n" + " LEFT JOIN pg_catalog.pg_namespace nt0 ON nt0.oid = t0.typnamespace\n"); + } + + if (!showSystem && !oper_pattern) + appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n" + " AND n.nspname <> 'information_schema'\n"); + + if (!validateSQLNamePattern(&buf, oper_pattern, + !showSystem && !oper_pattern, true, + "n.nspname", "o.oprname", NULL, + "pg_catalog.pg_operator_is_visible(o.oid)", + NULL, 3)) + goto error_return; + + if (num_arg_patterns == 1) + appendPQExpBufferStr(&buf, " AND o.oprleft = 0\n"); + + for (int i = 0; i < num_arg_patterns; i++) + { + if (strcmp(arg_patterns[i], "-") != 0) + { + /* + * Match type-name patterns against either internal or external + * name, like \dT. Unlike \dT, there seems no reason to + * discriminate against arrays or composite types. + */ + char nspname[64]; + char typname[64]; + char ft[64]; + char tiv[64]; + + snprintf(nspname, sizeof(nspname), "nt%d.nspname", i); + snprintf(typname, sizeof(typname), "t%d.typname", i); + snprintf(ft, sizeof(ft), + "pg_catalog.format_type(t%d.oid, NULL)", i); + snprintf(tiv, sizeof(tiv), + "pg_catalog.pg_type_is_visible(t%d.oid)", i); + if (!validateSQLNamePattern(&buf, + map_typename_pattern(arg_patterns[i]), + true, false, + nspname, typname, ft, tiv, + NULL, 3)) + goto error_return; + } + else + { + /* "-" pattern specifies no such parameter */ + appendPQExpBuffer(&buf, " AND t%d.typname IS NULL\n", i); + } + } + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + + +/* + * 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" + " d.datcollate as \"%s\",\n" + " d.datctype as \"%s\",\n", + gettext_noop("Name"), + gettext_noop("Owner"), + gettext_noop("Encoding"), + gettext_noop("Collate"), + gettext_noop("Ctype")); + if (pset.sversion >= 150000) + appendPQExpBuffer(&buf, + " d.daticulocale as \"%s\",\n" + " CASE d.datlocprovider WHEN 'c' THEN 'libc' WHEN 'i' THEN 'icu' END AS \"%s\",\n", + gettext_noop("ICU Locale"), + gettext_noop("Locale Provider")); + else + appendPQExpBuffer(&buf, + " NULL as \"%s\",\n" + " 'libc' AS \"%s\",\n", + gettext_noop("ICU Locale"), + gettext_noop("Locale Provider")); + appendPQExpBufferStr(&buf, " "); + printACLColumn(&buf, "d.datacl"); + if (verbose) + 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\"" + ",\n t.spcname as \"%s\"" + ",\n pg_catalog.shobj_description(d.oid, 'pg_database') as \"%s\"", + gettext_noop("Size"), + gettext_noop("Tablespace"), + gettext_noop("Description")); + appendPQExpBufferStr(&buf, + "\nFROM pg_catalog.pg_database d\n"); + if (verbose) + appendPQExpBufferStr(&buf, + " JOIN pg_catalog.pg_tablespace t on d.dattablespace = t.oid\n"); + + if (pattern) + { + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "d.datname", NULL, NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + } + + 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"); + + 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::pg_catalog.text || 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::pg_catalog.text || 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.* + */ + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "c.relname", NULL, + "n.nspname !~ '^pg_' AND pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + goto error_return; + + appendPQExpBufferStr(&buf, "ORDER BY 1, 2;"); + + res = PSQLexec(buf.data); + if (!res) + goto error_return; + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + + +/* + * \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}; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, + "n.nspname", + "pg_catalog.pg_get_userbyid(d.defaclrole)", + NULL, + NULL, 3)) + goto error_return; + + appendPQExpBufferStr(&buf, "ORDER BY 1, 2, 3;"); + + res = PSQLexec(buf.data); + if (!res) + goto error_return; + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + + +/* + * 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"); + + if (!validateSQLNamePattern(&buf, pattern, !showSystem && !pattern, + false, "n.nspname", "pgc.conname", NULL, + "pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + goto error_return; + + /* 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"); + + if (!validateSQLNamePattern(&buf, pattern, !showSystem && !pattern, + false, "n.nspname", "pgc.conname", NULL, + "pg_catalog.pg_type_is_visible(t.oid)", + NULL, 3)) + goto error_return; + + /* 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"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "o.opcname", NULL, + "pg_catalog.pg_opclass_is_visible(o.oid)", + NULL, 3)) + goto error_return; + + /* 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"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "opf.opfname", NULL, + "pg_catalog.pg_opfamily_is_visible(opf.oid)", + NULL, 3)) + goto error_return; + + /* 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"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "r.rulename", NULL, + "pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + goto error_return; + + /* 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"); + + if (!validateSQLNamePattern(&buf, pattern, !showSystem && !pattern, false, + "n.nspname", "t.tgname", NULL, + "pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + goto error_return; + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + + +/* + * 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"); + + if (!validateSQLNamePattern(&buf, pattern, !showSystem && !pattern, false, + "n.nspname", "c.relname", NULL, + "pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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[12]; + 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, + attcompression_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 + { + 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); + } + + 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 = pg_strdup(PQgetvalue(res, 0, 9)); + tableinfo.tablespace = atooid(PQgetvalue(res, 0, 10)); + tableinfo.reloftype = (strcmp(PQgetvalue(res, 0, 11), "") != 0) ? + pg_strdup(PQgetvalue(res, 0, 11)) : NULL; + tableinfo.relpersistence = *(PQgetvalue(res, 0, 12)); + 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; + + /* 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); + + if (tableinfo.relpersistence == 'u') + printfPQExpBuffer(&title, _("Unlogged sequence \"%s.%s\""), + schemaname, relationname); + else + 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++; + 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"); + 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 */ + if (tableinfo.relkind == RELKIND_FOREIGN_TABLE) + { + 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++; + + /* compression info, if relevant to relkind */ + if (pset.sversion >= 140000 && + !pset.hide_compression && + (tableinfo.relkind == RELKIND_RELATION || + tableinfo.relkind == RELKIND_PARTITIONED_TABLE || + tableinfo.relkind == RELKIND_MATVIEW)) + { + appendPQExpBufferStr(&buf, ",\n a.attcompression AS attcompression"); + attcompression_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 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 (attcompression_col >= 0) + headers[cols++] = gettext_noop("Compression"); + 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 mode, if relevant */ + 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); + } + + /* Column compression, if relevant */ + if (attcompression_col >= 0) + { + char *compression = PQgetvalue(res, i, attcompression_col); + + /* these strings are literal in our syntax, so not translated. */ + printTableAddCell(&cont, (compression[0] == 'p' ? "pglz" : + (compression[0] == 'l' ? "lz4" : + (compression[0] == '\0' ? "" : + "???"))), + 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),\n "); + + appendPQExpBuffer(&buf, + pset.sversion >= 140000 ? "inhdetachpending" : + "false as inhdetachpending"); + + /* 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); + char *detached = PQgetvalue(result, 0, 2); + + printfPQExpBuffer(&tmpbuf, _("Partition of: %s %s%s"), parent_name, + partdef, + strcmp(detached, "t") == 0 ? " DETACH PENDING" : ""); + printTableAddFooter(&cont, tmpbuf.data); + + if (verbose) + { + char *partconstraintdef = NULL; + + if (!PQgetisnull(result, 0, 3)) + partconstraintdef = PQgetvalue(result, 0, 3); + /* 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, " + "i.indisvalid,\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 " + "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"); + + if (pset.sversion >= 90400) + appendPQExpBufferStr(&buf, "i.indisreplident,\n"); + else + appendPQExpBufferStr(&buf, "false AS indisreplident,\n"); + + if (pset.sversion >= 150000) + appendPQExpBufferStr(&buf, "i.indnullsnotdistinct,\n"); + else + appendPQExpBufferStr(&buf, "false AS indnullsnotdistinct,\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 *indnullsnotdistinct = PQgetvalue(result, 0, 7); + char *indamname = PQgetvalue(result, 0, 8); + char *indtable = PQgetvalue(result, 0, 9); + char *indpred = PQgetvalue(result, 0, 10); + + if (strcmp(indisprimary, "t") == 0) + printfPQExpBuffer(&tmpbuf, _("primary key, ")); + else if (strcmp(indisunique, "t") == 0) + { + printfPQExpBuffer(&tmpbuf, _("unique")); + if (strcmp(indnullsnotdistinct, "t") == 0) + appendPQExpBufferStr(&tmpbuf, _(" nulls not distinct")); + appendPQExpBuffer(&tmpbuf, _(", ")); + } + 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, i.indisvalid, " + "pg_catalog.pg_get_indexdef(i.indexrelid, 0, true),\n " + "pg_catalog.pg_get_constraintdef(con.oid, true), " + "contype, condeferrable, condeferred"); + if (pset.sversion >= 90400) + appendPQExpBufferStr(&buf, ", i.indisreplident"); + else + appendPQExpBufferStr(&buf, ", false AS indisreplident"); + appendPQExpBufferStr(&buf, ", c2.reltablespace"); + appendPQExpBuffer(&buf, + "\nFROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i\n" + " LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x'))\n" + "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 */ + 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 >= 140000) + { + printfPQExpBuffer(&buf, + "SELECT oid, " + "stxrelid::pg_catalog.regclass, " + "stxnamespace::pg_catalog.regnamespace::pg_catalog.text AS nsp, " + "stxname,\n" + "pg_catalog.pg_get_statisticsobjdef_columns(oid) AS columns,\n" + " 'd' = any(stxkind) AS ndist_enabled,\n" + " 'f' = any(stxkind) AS deps_enabled,\n" + " 'm' = any(stxkind) AS mcv_enabled,\n" + "stxstattarget\n" + "FROM pg_catalog.pg_statistic_ext\n" + "WHERE stxrelid = '%s'\n" + "ORDER BY nsp, stxname;", + 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; + bool has_ndistinct; + bool has_dependencies; + bool has_mcv; + bool has_all; + bool has_some; + + has_ndistinct = (strcmp(PQgetvalue(result, i, 5), "t") == 0); + has_dependencies = (strcmp(PQgetvalue(result, i, 6), "t") == 0); + has_mcv = (strcmp(PQgetvalue(result, i, 7), "t") == 0); + + printfPQExpBuffer(&buf, " "); + + /* statistics object name (qualified with namespace) */ + appendPQExpBuffer(&buf, "\"%s.%s\"", + PQgetvalue(result, i, 2), + PQgetvalue(result, i, 3)); + + /* + * When printing kinds we ignore expression statistics, + * which are used only internally and can't be specified + * by user. We don't print the kinds when none are + * specified (in which case it has to be statistics on a + * single expr) or when all are specified (in which case + * we assume it's expanded by CREATE STATISTICS). + */ + has_all = (has_ndistinct && has_dependencies && has_mcv); + has_some = (has_ndistinct || has_dependencies || has_mcv); + + if (has_some && !has_all) + { + appendPQExpBufferStr(&buf, " ("); + + /* options */ + if (has_ndistinct) + { + appendPQExpBufferStr(&buf, "ndistinct"); + gotone = true; + } + + if (has_dependencies) + { + appendPQExpBuffer(&buf, "%sdependencies", gotone ? ", " : ""); + gotone = true; + } + + if (has_mcv) + { + appendPQExpBuffer(&buf, "%smcv", gotone ? ", " : ""); + } + + appendPQExpBufferChar(&buf, ')'); + } + + 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); + } + else 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\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) + { + 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); + 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) + { + if (pset.sversion >= 150000) + { + printfPQExpBuffer(&buf, + "SELECT pubname\n" + " , NULL\n" + " , NULL\n" + "FROM pg_catalog.pg_publication p\n" + " JOIN pg_catalog.pg_publication_namespace pn ON p.oid = pn.pnpubid\n" + " JOIN pg_catalog.pg_class pc ON pc.relnamespace = pn.pnnspid\n" + "WHERE pc.oid ='%s' and pg_catalog.pg_relation_is_publishable('%s')\n" + "UNION\n" + "SELECT pubname\n" + " , pg_get_expr(pr.prqual, c.oid)\n" + " , (CASE WHEN pr.prattrs IS NOT NULL THEN\n" + " (SELECT string_agg(attname, ', ')\n" + " FROM pg_catalog.generate_series(0, pg_catalog.array_upper(pr.prattrs::pg_catalog.int2[], 1)) s,\n" + " pg_catalog.pg_attribute\n" + " WHERE attrelid = pr.prrelid AND attnum = prattrs[s])\n" + " ELSE NULL END) " + "FROM pg_catalog.pg_publication p\n" + " JOIN pg_catalog.pg_publication_rel pr ON p.oid = pr.prpubid\n" + " JOIN pg_catalog.pg_class c ON c.oid = pr.prrelid\n" + "WHERE pr.prrelid = '%s'\n" + "UNION\n" + "SELECT pubname\n" + " , NULL\n" + " , NULL\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, oid, oid); + } + else + { + printfPQExpBuffer(&buf, + "SELECT pubname\n" + " , NULL\n" + " , NULL\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" + " , NULL\n" + " , NULL\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)); + + /* column list (if any) */ + if (!PQgetisnull(result, i, 2)) + appendPQExpBuffer(&buf, " (%s)", + PQgetvalue(result, i, 2)); + + /* row filter (if any) */ + if (!PQgetisnull(result, i, 1)) + appendPQExpBuffer(&buf, " WHERE %s", + PQgetvalue(result, i, 1)); + + 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, true), " + "t.tgenabled, t.tgisinternal,\n"); + + /* + * Detect whether each trigger is inherited, and if so, get the name + * of the topmost table it's inherited from. We have no easy way to + * do that pre-v13, for lack of the tgparentid column. Even with + * tgparentid, a straightforward search for the topmost parent would + * require a recursive CTE, which seems unduly expensive. We cheat a + * bit by assuming parent triggers will match by tgname; then, joining + * with pg_partition_ancestors() allows the planner to make use of + * pg_trigger_tgrelid_tgname_index if it wishes. We ensure we find + * the correct topmost parent by stopping at the first-in-partition- + * ancestry-order trigger that has tgparentid = 0. (There might be + * unrelated, non-inherited triggers with the same name further up the + * stack, so this is important.) + */ + if (pset.sversion >= 130000) + appendPQExpBufferStr(&buf, + " CASE WHEN t.tgparentid != 0 THEN\n" + " (SELECT u.tgrelid::pg_catalog.regclass\n" + " FROM pg_catalog.pg_trigger AS u,\n" + " pg_catalog.pg_partition_ancestors(t.tgrelid) WITH ORDINALITY AS a(relid, depth)\n" + " WHERE u.tgname = t.tgname AND u.tgrelid = a.relid\n" + " AND u.tgparentid = 0\n" + " ORDER BY a.depth LIMIT 1)\n" + " END AS parent\n"); + else + appendPQExpBufferStr(&buf, " NULL AS parent\n"); + + appendPQExpBuffer(&buf, + "FROM pg_catalog.pg_trigger t\n" + "WHERE t.tgrelid = '%s' AND ", + oid); + + /* + * tgisinternal is set true for inherited triggers of partitions in + * servers between v11 and v14, though these must still be shown to + * the user. So we use another property that is true for such + * inherited triggers to avoid them being hidden, which is their + * dependence on another trigger. + */ + if (pset.sversion >= 110000 && pset.sversion < 150000) + 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 + /* display/warn about disabled internal triggers */ + appendPQExpBufferStr(&buf, "(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D'))"); + 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: + printfPQExpBuffer(&buf, _("Disabled user 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 >= 140000) + printfPQExpBuffer(&buf, + "SELECT c.oid::pg_catalog.regclass, c.relkind," + " inhdetachpending," + " 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 >= 100000) + printfPQExpBuffer(&buf, + "SELECT c.oid::pg_catalog.regclass, c.relkind," + " false AS inhdetachpending," + " 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 + printfPQExpBuffer(&buf, + "SELECT c.oid::pg_catalog.regclass, c.relkind," + " false AS inhdetachpending, 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); + + 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, 3)) + appendPQExpBuffer(&buf, " %s", PQgetvalue(result, i, 3)); + if (child_relkind == RELKIND_PARTITIONED_TABLE || + child_relkind == RELKIND_PARTITIONED_INDEX) + appendPQExpBufferStr(&buf, ", PARTITIONED"); + if (strcmp(PQgetvalue(result, i, 2), "t") == 0) + appendPQExpBufferStr(&buf, " (DETACH PENDING)"); + 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. + */ + 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); + + 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) + { + appendPQExpBufferStr(&buf, "\n, pg_catalog.shobj_description(r.oid, 'pg_authid') AS description"); + ncols++; + } + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "r.rolname", NULL, NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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); + /* ignores implicit memberships from superuser & pg_database_owner */ + printTableAddHeader(&cont, gettext_noop("Member of"), true, align); + + if (verbose) + 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 (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) + 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; + + 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")); + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "r.rolname", NULL, NULL, &havewhere, 1)) + goto error_return; + if (!validateSQLNamePattern(&buf, pattern2, havewhere, false, + NULL, "d.datname", NULL, NULL, + NULL, 1)) + goto error_return; + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + + +/* + * 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, 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); + + 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 " CppAsString2(RELKIND_TOASTVALUE) " 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("TOAST table"), + 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. + */ + 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. + */ + + /* + * Access methods exist for tables, materialized views and indexes. + * This has been introduced in PostgreSQL 12 for tables. + */ + if (pset.sversion >= 120000 && !pset.hide_tableam && + (showTables || showMatViews || showIndexes)) + appendPQExpBuffer(&buf, + ",\n am.amname as \"%s\"", + gettext_noop("Access method")); + + appendPQExpBuffer(&buf, + ",\n pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) as \"%s\"" + ",\n pg_catalog.obj_description(c.oid, 'pg_class') as \"%s\"", + gettext_noop("Size"), + 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 (pset.sversion >= 120000 && !pset.hide_tableam && + (showTables || showMatViews || showIndexes)) + appendPQExpBufferStr(&buf, + "\n LEFT JOIN pg_catalog.pg_am am ON am.oid = c.relam"); + + 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) ","); + /* with 'S' or a pattern, allow 't' to match TOAST tables too */ + if (showSystem || pattern) + appendPQExpBufferStr(&buf, CppAsString2(RELKIND_TOASTVALUE) ","); + } + 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 !~ '^pg_toast'\n" + " AND n.nspname <> 'information_schema'\n"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "c.relname", NULL, + "pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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::pg_catalog.regclass as \"%s\"", + gettext_noop("Parent name")); + + if (showIndexes) + appendPQExpBuffer(&buf, + ",\n c2.oid::pg_catalog.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 !~ '^pg_toast'\n" + " AND n.nspname <> 'information_schema'\n"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "c.relname", NULL, + "pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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" + " pg_catalog.pg_get_userbyid(l.lanowner) as \"%s\",\n" + " l.lanpltrusted AS \"%s\"", + gettext_noop("Name"), + gettext_noop("Owner"), + 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 " + "l.laninline::pg_catalog.regprocedure AS \"%s\",\n ", + gettext_noop("Internal language"), + gettext_noop("Call handler"), + gettext_noop("Validator"), + 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) + { + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "l.lanname", NULL, NULL, + NULL, 2)) + { + termPQExpBuffer(&buf); + return false; + } + } + + 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" + " (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" + " 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("Schema"), + gettext_noop("Name"), + gettext_noop("Type"), + gettext_noop("Collation"), + gettext_noop("Nullable"), + gettext_noop("Default"), + gettext_noop("Check")); + + if (verbose) + { + 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"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "t.typname", NULL, + "pg_catalog.pg_type_is_visible(t.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "c.conname", NULL, + "pg_catalog.pg_conversion_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; +} + +/* + * \dconfig + * + * Describes configuration parameters. + */ +bool +describeConfigurationParameters(const char *pattern, bool verbose, + bool showSystem) +{ + PQExpBufferData buf; + PGresult *res; + printQueryOpt myopt = pset.popt; + + initPQExpBuffer(&buf); + printfPQExpBuffer(&buf, + "SELECT s.name AS \"%s\", " + "pg_catalog.current_setting(s.name) AS \"%s\"", + gettext_noop("Parameter"), + gettext_noop("Value")); + + if (verbose) + { + appendPQExpBuffer(&buf, + ", s.vartype AS \"%s\", s.context AS \"%s\", ", + gettext_noop("Type"), + gettext_noop("Context")); + if (pset.sversion >= 150000) + printACLColumn(&buf, "p.paracl"); + else + appendPQExpBuffer(&buf, "NULL AS \"%s\"", + gettext_noop("Access privileges")); + } + + appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_settings s\n"); + + if (verbose && pset.sversion >= 150000) + appendPQExpBufferStr(&buf, + " LEFT JOIN pg_catalog.pg_parameter_acl p\n" + " ON pg_catalog.lower(s.name) = p.parname\n"); + + if (pattern) + processSQLNamePattern(pset.db, &buf, pattern, + false, false, + NULL, "pg_catalog.lower(s.name)", NULL, + NULL, NULL, NULL); + else + appendPQExpBufferStr(&buf, "WHERE s.source <> 'default' AND\n" + " s.setting IS DISTINCT FROM s.boot_val\n"); + + appendPQExpBufferStr(&buf, "ORDER BY 1;"); + + res = PSQLexec(buf.data); + termPQExpBuffer(&buf); + if (!res) + return false; + + myopt.nullPrint = NULL; + if (pattern) + myopt.title = _("List of configuration parameters"); + else + myopt.title = _("List of non-default configuration parameters"); + myopt.translate_header = true; + + 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}; + + if (pset.sversion < 90300) + { + char sverbuf[32]; + + pg_log_error("The server (version %s) does not support event triggers.", + formatPGVersionNumber(pset.sversion, false, + sverbuf, sizeof(sverbuf))); + return true; + } + + 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 "); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "evtname", NULL, NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; +} + +/* + * \dX + * + * Describes extended statistics. + */ +bool +listExtendedStats(const char *pattern) +{ + PQExpBufferData buf; + PGresult *res; + printQueryOpt myopt = pset.popt; + + if (pset.sversion < 100000) + { + char sverbuf[32]; + + pg_log_error("The server (version %s) does not support extended statistics.", + formatPGVersionNumber(pset.sversion, false, + sverbuf, sizeof(sverbuf))); + return true; + } + + initPQExpBuffer(&buf); + printfPQExpBuffer(&buf, + "SELECT \n" + "es.stxnamespace::pg_catalog.regnamespace::pg_catalog.text AS \"%s\", \n" + "es.stxname AS \"%s\", \n", + gettext_noop("Schema"), + gettext_noop("Name")); + + if (pset.sversion >= 140000) + appendPQExpBuffer(&buf, + "pg_catalog.format('%%s FROM %%s', \n" + " pg_catalog.pg_get_statisticsobjdef_columns(es.oid), \n" + " es.stxrelid::pg_catalog.regclass) AS \"%s\"", + gettext_noop("Definition")); + else + appendPQExpBuffer(&buf, + "pg_catalog.format('%%s FROM %%s', \n" + " (SELECT pg_catalog.string_agg(pg_catalog.quote_ident(a.attname),', ') \n" + " FROM pg_catalog.unnest(es.stxkeys) s(attnum) \n" + " JOIN pg_catalog.pg_attribute a \n" + " ON (es.stxrelid = a.attrelid \n" + " AND a.attnum = s.attnum \n" + " AND NOT a.attisdropped)), \n" + "es.stxrelid::pg_catalog.regclass) AS \"%s\"", + gettext_noop("Definition")); + + appendPQExpBuffer(&buf, + ",\nCASE WHEN 'd' = any(es.stxkind) THEN 'defined' \n" + "END AS \"%s\", \n" + "CASE WHEN 'f' = any(es.stxkind) THEN 'defined' \n" + "END AS \"%s\"", + gettext_noop("Ndistinct"), + gettext_noop("Dependencies")); + + /* + * Include the MCV statistics kind. + */ + if (pset.sversion >= 120000) + { + appendPQExpBuffer(&buf, + ",\nCASE WHEN 'm' = any(es.stxkind) THEN 'defined' \n" + "END AS \"%s\" ", + gettext_noop("MCV")); + } + + appendPQExpBufferStr(&buf, + " \nFROM pg_catalog.pg_statistic_ext es \n"); + + if (!validateSQLNamePattern(&buf, pattern, + false, false, + "es.stxnamespace::pg_catalog.regnamespace::pg_catalog.text", "es.stxname", + NULL, "pg_catalog.pg_statistics_obj_is_visible(es.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + appendPQExpBufferStr(&buf, "ORDER BY 1, 2;"); + + res = PSQLexec(buf.data); + termPQExpBuffer(&buf); + if (!res) + return false; + + myopt.nullPrint = NULL; + myopt.title = _("List of extended statistics"); + myopt.translate_header = true; + + 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. + */ + 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")); + + 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 + */ + if (!validateSQLNamePattern(&buf, pattern, true, false, + "ns.nspname", "ts.typname", + "pg_catalog.format_type(ts.oid, NULL)", + "pg_catalog.pg_type_is_visible(ts.oid)", + NULL, 3)) + goto error_return; + + appendPQExpBufferStr(&buf, ") OR (true"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "nt.nspname", "tt.typname", + "pg_catalog.format_type(tt.oid, NULL)", + "pg_catalog.pg_type_is_visible(tt.oid)", + NULL, 3)) + goto error_return; + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + +/* + * \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, false, true, false}; + + 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 >= 150000) + appendPQExpBuffer(&buf, + ",\n c.colliculocale AS \"%s\"", + gettext_noop("ICU Locale")); + else + appendPQExpBuffer(&buf, + ",\n c.collcollate AS \"%s\"", + gettext_noop("ICU Locale")); + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "c.collname", NULL, + "pg_catalog.pg_collation_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + int pub_schema_tuples = 0; + char **footers = NULL; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, + !showSystem && !pattern, false, + NULL, "n.nspname", NULL, + NULL, + NULL, 2)) + goto error_return; + + appendPQExpBufferStr(&buf, "ORDER BY 1;"); + + res = PSQLexec(buf.data); + if (!res) + goto error_return; + + myopt.nullPrint = NULL; + myopt.title = _("List of schemas"); + myopt.translate_header = true; + + if (pattern && pset.sversion >= 150000) + { + PGresult *result; + int i; + + printfPQExpBuffer(&buf, + "SELECT pubname \n" + "FROM pg_catalog.pg_publication p\n" + " JOIN pg_catalog.pg_publication_namespace pn ON p.oid = pn.pnpubid\n" + " JOIN pg_catalog.pg_namespace n ON n.oid = pn.pnnspid \n" + "WHERE n.nspname = '%s'\n" + "ORDER BY 1", + pattern); + result = PSQLexec(buf.data); + if (!result) + goto error_return; + else + pub_schema_tuples = PQntuples(result); + + if (pub_schema_tuples > 0) + { + /* + * Allocate memory for footers. Size of footers will be 1 (for + * storing "Publications:" string) + publication schema mapping + * count + 1 (for storing NULL). + */ + footers = (char **) pg_malloc((1 + pub_schema_tuples + 1) * sizeof(char *)); + footers[0] = pg_strdup(_("Publications:")); + + /* Might be an empty set - that's ok */ + for (i = 0; i < pub_schema_tuples; i++) + { + printfPQExpBuffer(&buf, " \"%s\"", + PQgetvalue(result, i, 0)); + + footers[i + 1] = pg_strdup(buf.data); + } + + footers[i + 1] = NULL; + myopt.footers = footers; + } + + PQclear(result); + } + + printQuery(res, &myopt, pset.queryFout, false, pset.logfile); + + termPQExpBuffer(&buf); + PQclear(res); + + /* Free the memory allocated for the footer */ + if (footers) + { + char **footer = NULL; + + for (footer = footers; *footer; footer++) + pg_free(*footer); + + pg_free(footers); + } + + return true; + +error_return: + termPQExpBuffer(&buf); + return false; +} + + +/* + * \dFp + * list text search parsers + */ +bool +listTSParsers(const char *pattern, bool verbose) +{ + PQExpBufferData buf; + PGresult *res; + printQueryOpt myopt = pset.popt; + + 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") + ); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + "n.nspname", "p.prsname", NULL, + "pg_catalog.pg_ts_parser_is_visible(p.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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" + ); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + "n.nspname", "p.prsname", NULL, + "pg_catalog.pg_ts_parser_is_visible(p.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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) + { + termPQExpBuffer(&title); + 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; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + "n.nspname", "d.dictname", NULL, + "pg_catalog.pg_ts_dict_is_visible(d.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + "n.nspname", "t.tmplname", NULL, + "pg_catalog.pg_ts_template_is_visible(t.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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 (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") + ); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + "n.nspname", "c.cfgname", NULL, + "pg_catalog.pg_ts_config_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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" + ); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + "n.nspname", "c.cfgname", NULL, + "pg_catalog.pg_ts_config_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + initPQExpBuffer(&buf); + printfPQExpBuffer(&buf, + "SELECT fdw.fdwname AS \"%s\",\n" + " pg_catalog.pg_get_userbyid(fdw.fdwowner) AS \"%s\",\n" + " fdw.fdwhandler::pg_catalog.regproc AS \"%s\",\n" + " fdw.fdwvalidator::pg_catalog.regproc AS \"%s\"", + gettext_noop("Name"), + gettext_noop("Owner"), + gettext_noop("Handler"), + 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\"" + ",\n d.description AS \"%s\" ", + gettext_noop("FDW options"), + gettext_noop("Description")); + } + + appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_foreign_data_wrapper fdw\n"); + + if (verbose) + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "fdwname", NULL, NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "s.srvname", NULL, NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "um.srvname", "um.usename", NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + "n.nspname", "c.relname", NULL, + "pg_catalog.pg_table_is_visible(c.oid)", + NULL, 3)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + 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")); + + if (!validateSQLNamePattern(&buf, pattern, + false, false, + NULL, "e.extname", NULL, + NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + + initPQExpBuffer(&buf); + printfPQExpBuffer(&buf, + "SELECT e.extname, e.oid\n" + "FROM pg_catalog.pg_extension e\n"); + + if (!validateSQLNamePattern(&buf, pattern, + false, false, + NULL, "e.extname", NULL, + NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; +} + +/* + * validateSQLNamePattern + * + * Wrapper around string_utils's processSQLNamePattern which also checks the + * pattern's validity. In addition to that function's parameters, takes a + * 'maxparts' parameter specifying the maximum number of dotted names the + * pattern is allowed to have, and a 'added_clause' parameter that returns by + * reference whether a clause was added to 'buf'. Returns whether the pattern + * passed validation, after logging any errors. + */ +static bool +validateSQLNamePattern(PQExpBuffer buf, const char *pattern, bool have_where, + bool force_escape, const char *schemavar, + const char *namevar, const char *altnamevar, + const char *visibilityrule, bool *added_clause, + int maxparts) +{ + PQExpBufferData dbbuf; + int dotcnt; + bool added; + + initPQExpBuffer(&dbbuf); + added = processSQLNamePattern(pset.db, buf, pattern, have_where, force_escape, + schemavar, namevar, altnamevar, + visibilityrule, &dbbuf, &dotcnt); + if (added_clause != NULL) + *added_clause = added; + + if (dotcnt >= maxparts) + { + pg_log_error("improper qualified name (too many dotted names): %s", + pattern); + goto error_return; + } + + if (maxparts > 1 && dotcnt == maxparts - 1) + { + if (PQdb(pset.db) == NULL) + { + pg_log_error("You are currently not connected to a database."); + goto error_return; + } + if (strcmp(PQdb(pset.db), dbbuf.data) != 0) + { + pg_log_error("cross-database references are not implemented: %s", + pattern); + goto error_return; + } + } + termPQExpBuffer(&dbbuf); + return true; + +error_return: + termPQExpBuffer(&dbbuf); + return false; +} + +/* + * \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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "pubname", NULL, + NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; +} + +/* + * Add footer to publication description. + */ +static bool +addFooterToPublicationDesc(PQExpBuffer buf, const char *footermsg, + bool as_schema, printTableContent *const cont) +{ + PGresult *res; + int count = 0; + int i = 0; + + res = PSQLexec(buf->data); + if (!res) + return false; + else + count = PQntuples(res); + + if (count > 0) + printTableAddFooter(cont, footermsg); + + for (i = 0; i < count; i++) + { + if (as_schema) + printfPQExpBuffer(buf, " \"%s\"", PQgetvalue(res, i, 0)); + else + { + printfPQExpBuffer(buf, " \"%s.%s\"", PQgetvalue(res, i, 0), + PQgetvalue(res, i, 1)); + + if (!PQgetisnull(res, i, 3)) + appendPQExpBuffer(buf, " (%s)", PQgetvalue(res, i, 3)); + + if (!PQgetisnull(res, i, 2)) + appendPQExpBuffer(buf, " WHERE %s", PQgetvalue(res, i, 2)); + } + + printTableAddFooter(cont, buf->data); + } + + 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; + + PQExpBufferData title; + printTableContent cont; + + 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"); + + if (!validateSQLNamePattern(&buf, pattern, false, false, + NULL, "pubname", NULL, + NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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; + char *pubid = PQgetvalue(res, i, 0); + char *pubname = PQgetvalue(res, i, 1); + bool puballtables = strcmp(PQgetvalue(res, i, 3), "t") == 0; + printTableOpt myopt = pset.popt.topt; + + 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) + { + /* Get the tables for the specified publication */ + printfPQExpBuffer(&buf, + "SELECT n.nspname, c.relname"); + if (pset.sversion >= 150000) + { + appendPQExpBufferStr(&buf, + ", pg_get_expr(pr.prqual, c.oid)"); + appendPQExpBufferStr(&buf, + ", (CASE WHEN pr.prattrs IS NOT NULL THEN\n" + " pg_catalog.array_to_string(" + " ARRAY(SELECT attname\n" + " FROM\n" + " pg_catalog.generate_series(0, pg_catalog.array_upper(pr.prattrs::pg_catalog.int2[], 1)) s,\n" + " pg_catalog.pg_attribute\n" + " WHERE attrelid = c.oid AND attnum = prattrs[s]), ', ')\n" + " ELSE NULL END)"); + } + else + appendPQExpBufferStr(&buf, + ", NULL, NULL"); + appendPQExpBuffer(&buf, + "\nFROM 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); + if (!addFooterToPublicationDesc(&buf, _("Tables:"), false, &cont)) + goto error_return; + + if (pset.sversion >= 150000) + { + /* Get the schemas for the specified publication */ + printfPQExpBuffer(&buf, + "SELECT n.nspname\n" + "FROM pg_catalog.pg_namespace n\n" + " JOIN pg_catalog.pg_publication_namespace pn ON n.oid = pn.pnnspid\n" + "WHERE pn.pnpubid = '%s'\n" + "ORDER BY 1", pubid); + if (!addFooterToPublicationDesc(&buf, _("Tables from schemas:"), + true, &cont)) + goto error_return; + } + } + + printTable(&cont, pset.queryFout, false, pset.logfile); + printTableCleanup(&cont); + + termPQExpBuffer(&title); + } + + termPQExpBuffer(&buf); + PQclear(res); + + return true; + +error_return: + printTableCleanup(&cont); + PQclear(res); + termPQExpBuffer(&buf); + termPQExpBuffer(&title); + return false; +} + +/* + * \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, 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) + { + /* Binary mode and streaming are only supported in v14 and higher */ + if (pset.sversion >= 140000) + appendPQExpBuffer(&buf, + ", subbinary AS \"%s\"\n" + ", substream AS \"%s\"\n", + gettext_noop("Binary"), + gettext_noop("Streaming")); + + /* Two_phase and disable_on_error are only supported in v15 and higher */ + if (pset.sversion >= 150000) + appendPQExpBuffer(&buf, + ", subtwophasestate AS \"%s\"\n" + ", subdisableonerr AS \"%s\"\n", + gettext_noop("Two-phase commit"), + gettext_noop("Disable on error")); + + appendPQExpBuffer(&buf, + ", subsynccommit AS \"%s\"\n" + ", subconninfo AS \"%s\"\n", + gettext_noop("Synchronous commit"), + gettext_noop("Conninfo")); + + /* Skip LSN is only supported in v15 and higher */ + if (pset.sversion >= 150000) + appendPQExpBuffer(&buf, + ", subskiplsn AS \"%s\"\n", + gettext_noop("Skip LSN")); + } + + /* 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())"); + + if (!validateSQLNamePattern(&buf, pattern, true, false, + NULL, "subname", NULL, + NULL, + NULL, 1)) + { + termPQExpBuffer(&buf); + return false; + } + + 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) +{ + appendPQExpBuffer(buf, + "pg_catalog.array_to_string(%s, E'\\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")); + appendPQExpBufferStr(&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) + appendPQExpBufferStr(&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) + if (!validateSQLNamePattern(&buf, access_method_pattern, + false, false, NULL, "am.amname", NULL, NULL, + &have_where, 1)) + goto error_return; + if (type_pattern) + { + /* Match type name pattern against either internal or external name */ + if (!validateSQLNamePattern(&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)", + NULL, 3)) + goto error_return; + } + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + +/* + * \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")); + appendPQExpBufferStr(&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) + if (!validateSQLNamePattern(&buf, access_method_pattern, + false, false, NULL, "am.amname", NULL, NULL, + &have_where, 1)) + goto error_return; + 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 */ + if (!validateSQLNamePattern(&buf, type_pattern, true, false, + "tn.nspname", "t.typname", + "pg_catalog.format_type(t.oid, NULL)", + "pg_catalog.pg_type_is_visible(t.oid)", + NULL, 3)) + goto error_return; + appendPQExpBufferStr(&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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + +/* + * \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")); + appendPQExpBufferStr(&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) + appendPQExpBufferStr(&buf, + " LEFT JOIN pg_catalog.pg_opfamily ofs ON ofs.oid = o.amopsortfamily\n"); + + if (access_method_pattern) + { + if (!validateSQLNamePattern(&buf, access_method_pattern, + false, false, NULL, "am.amname", + NULL, NULL, + &have_where, 1)) + goto error_return; + } + + if (family_pattern) + { + if (!validateSQLNamePattern(&buf, family_pattern, have_where, false, + "nsf.nspname", "of.opfname", NULL, NULL, + NULL, 3)) + goto error_return; + } + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + +/* + * \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")); + + appendPQExpBufferStr(&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) + { + if (!validateSQLNamePattern(&buf, access_method_pattern, + false, false, NULL, "am.amname", + NULL, NULL, + &have_where, 1)) + goto error_return; + } + if (family_pattern) + { + if (!validateSQLNamePattern(&buf, family_pattern, have_where, false, + "ns.nspname", "of.opfname", NULL, NULL, + NULL, 3)) + goto error_return; + } + + 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; + +error_return: + termPQExpBuffer(&buf); + return false; +} + +/* + * \dl or \lo_list + * Lists large objects + */ +bool +listLargeObjects(bool verbose) +{ + PQExpBufferData buf; + PGresult *res; + printQueryOpt myopt = pset.popt; + + initPQExpBuffer(&buf); + + printfPQExpBuffer(&buf, + "SELECT oid as \"%s\",\n" + " pg_catalog.pg_get_userbyid(lomowner) as \"%s\",\n ", + gettext_noop("ID"), + gettext_noop("Owner")); + + if (verbose) + { + printACLColumn(&buf, "lomacl"); + appendPQExpBufferStr(&buf, ",\n "); + } + + appendPQExpBuffer(&buf, + "pg_catalog.obj_description(oid, 'pg_largeobject') as \"%s\"\n" + "FROM pg_catalog.pg_largeobject_metadata\n" + "ORDER BY oid", + gettext_noop("Description")); + + res = PSQLexec(buf.data); + termPQExpBuffer(&buf); + if (!res) + return 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/describe.h b/src/bin/psql/describe.h new file mode 100644 index 0000000..7872c71 --- /dev/null +++ b/src/bin/psql/describe.h @@ -0,0 +1,149 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 *func_pattern, + char **arg_patterns, int num_arg_patterns, + bool verbose, bool showSystem); + +/* \dT */ +extern bool describeTypes(const char *pattern, bool verbose, bool showSystem); + +/* \do */ +extern bool describeOperators(const char *oper_pattern, + char **arg_patterns, int num_arg_patterns, + 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); + +/* \dconfig */ +extern bool describeConfigurationParameters(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); + +/* \dX */ +extern bool listExtendedStats(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); + +/* \dl or \lo_list */ +extern bool listLargeObjects(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..f8ce1a0 --- /dev/null +++ b/src/bin/psql/help.c @@ -0,0 +1,766 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/help.c + */ +#include "postgres_fe.h" + +#ifndef WIN32 +#include /* for geteuid() */ +#else +#include +#endif + +#ifndef WIN32 +#include /* for ioctl() */ +#endif + +#ifdef HAVE_TERMIOS_H +#include +#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. + */ + +/* Some helper macros to make the code less verbose */ +#define HELP0(str) appendPQExpBufferStr(&buf, _(str)) +#define HELPN(str,...) appendPQExpBuffer(&buf, _(str), __VA_ARGS__) +#define ON(var) ((var) ? _("on") : _("off")) + + +/* + * usage + * + * print out command line arguments + */ +void +usage(unsigned short int pager) +{ + const char *env; + const char *user; + char *errstr; + PQExpBufferData buf; + int nlcount; + FILE *output; + + /* Find default user, in case we need it. */ + user = getenv("PGUSER"); + if (!user) + { + user = get_user_name(&errstr); + if (!user) + pg_fatal("%s", errstr); + } + + /* + * To avoid counting the output lines manually, build the output in "buf" + * and then count them. + */ + initPQExpBuffer(&buf); + + HELP0("psql is the PostgreSQL interactive terminal.\n\n"); + HELP0("Usage:\n"); + HELP0(" psql [OPTION]... [DBNAME [USERNAME]]\n\n"); + + HELP0("General options:\n"); + /* Display default database */ + env = getenv("PGDATABASE"); + if (!env) + env = user; + HELP0(" -c, --command=COMMAND run only single command (SQL or internal) and exit\n"); + HELPN(" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n", + env); + HELP0(" -f, --file=FILENAME execute commands from file, then exit\n"); + HELP0(" -l, --list list available databases, then exit\n"); + HELP0(" -v, --set=, --variable=NAME=VALUE\n" + " set psql variable NAME to VALUE\n" + " (e.g., -v ON_ERROR_STOP=1)\n"); + HELP0(" -V, --version output version information, then exit\n"); + HELP0(" -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"); + HELP0(" -1 (\"one\"), --single-transaction\n" + " execute as a single transaction (if non-interactive)\n"); + HELP0(" -?, --help[=options] show this help, then exit\n"); + HELP0(" --help=commands list backslash commands, then exit\n"); + HELP0(" --help=variables list special variables, then exit\n"); + + HELP0("\nInput and output options:\n"); + HELP0(" -a, --echo-all echo all input from script\n"); + HELP0(" -b, --echo-errors echo failed commands\n"); + HELP0(" -e, --echo-queries echo commands sent to server\n"); + HELP0(" -E, --echo-hidden display queries that internal commands generate\n"); + HELP0(" -L, --log-file=FILENAME send session log to file\n"); + HELP0(" -n, --no-readline disable enhanced command line editing (readline)\n"); + HELP0(" -o, --output=FILENAME send query results to file (or |pipe)\n"); + HELP0(" -q, --quiet run quietly (no messages, only query output)\n"); + HELP0(" -s, --single-step single-step mode (confirm each query)\n"); + HELP0(" -S, --single-line single-line mode (end of line terminates SQL command)\n"); + + HELP0("\nOutput format options:\n"); + HELP0(" -A, --no-align unaligned table output mode\n"); + HELP0(" --csv CSV (Comma-Separated Values) table output mode\n"); + HELPN(" -F, --field-separator=STRING\n" + " field separator for unaligned output (default: \"%s\")\n", + DEFAULT_FIELD_SEP); + HELP0(" -H, --html HTML table output mode\n"); + HELP0(" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"); + HELP0(" -R, --record-separator=STRING\n" + " record separator for unaligned output (default: newline)\n"); + HELP0(" -t, --tuples-only print rows only\n"); + HELP0(" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"); + HELP0(" -x, --expanded turn on expanded table output\n"); + HELP0(" -z, --field-separator-zero\n" + " set field separator for unaligned output to zero byte\n"); + HELP0(" -0, --record-separator-zero\n" + " set record separator for unaligned output to zero byte\n"); + + HELP0("\nConnection options:\n"); + /* Display default host */ + env = getenv("PGHOST"); + HELPN(" -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n", + env ? env : _("local socket")); + /* Display default port */ + env = getenv("PGPORT"); + HELPN(" -p, --port=PORT database server port (default: \"%s\")\n", + env ? env : DEF_PGPORT_STR); + /* Display default user */ + HELPN(" -U, --username=USERNAME database user name (default: \"%s\")\n", + user); + HELP0(" -w, --no-password never prompt for password\n"); + HELP0(" -W, --password force password prompt (should happen automatically)\n"); + + HELP0("\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"); + HELPN("Report bugs to <%s>.\n", PACKAGE_BUGREPORT); + HELPN("%s home page: <%s>\n", PACKAGE_NAME, PACKAGE_URL); + + /* Now we can count the lines. */ + nlcount = 0; + for (const char *ptr = buf.data; *ptr; ptr++) + { + if (*ptr == '\n') + nlcount++; + } + + /* And dump the output, with appropriate pagination. */ + output = PageOutput(nlcount, pager ? &(pset.popt.topt) : NULL); + + fputs(buf.data, output); + + ClosePager(output); + + termPQExpBuffer(&buf); +} + + +/* + * slashUsage + * + * print out help for the backslash commands + */ +void +slashUsage(unsigned short int pager) +{ + PQExpBufferData buf; + int nlcount; + FILE *output; + char *currdb; + + currdb = PQdb(pset.db); + + /* + * To avoid counting the output lines manually, build the output in "buf" + * and then count them. + */ + initPQExpBuffer(&buf); + + HELP0("General\n"); + HELP0(" \\copyright show PostgreSQL usage and distribution terms\n"); + HELP0(" \\crosstabview [COLUMNS] execute query and display result in crosstab\n"); + HELP0(" \\errverbose show most recent error message at maximum verbosity\n"); + HELP0(" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" + " \\g with no arguments is equivalent to a semicolon\n"); + HELP0(" \\gdesc describe result of query, without executing it\n"); + HELP0(" \\gexec execute query, then execute each value in its result\n"); + HELP0(" \\gset [PREFIX] execute query and store result in psql variables\n"); + HELP0(" \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n"); + HELP0(" \\q quit psql\n"); + HELP0(" \\watch [SEC] execute query every SEC seconds\n"); + HELP0("\n"); + + HELP0("Help\n"); + + HELP0(" \\? [commands] show help on backslash commands\n"); + HELP0(" \\? options show help on psql command-line options\n"); + HELP0(" \\? variables show help on special variables\n"); + HELP0(" \\h [NAME] help on syntax of SQL commands, * for all commands\n"); + HELP0("\n"); + + HELP0("Query Buffer\n"); + HELP0(" \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"); + HELP0(" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"); + HELP0(" \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"); + HELP0(" \\p show the contents of the query buffer\n"); + HELP0(" \\r reset (clear) the query buffer\n"); +#ifdef USE_READLINE + HELP0(" \\s [FILE] display history or save it to file\n"); +#endif + HELP0(" \\w FILE write query buffer to file\n"); + HELP0("\n"); + + HELP0("Input/Output\n"); + HELP0(" \\copy ... perform SQL COPY with data stream to the client host\n"); + HELP0(" \\echo [-n] [STRING] write string to standard output (-n for no newline)\n"); + HELP0(" \\i FILE execute commands from file\n"); + HELP0(" \\ir FILE as \\i, but relative to location of current script\n"); + HELP0(" \\o [FILE] send all query results to file or |pipe\n"); + HELP0(" \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n"); + HELP0(" \\warn [-n] [STRING] write string to standard error (-n for no newline)\n"); + HELP0("\n"); + + HELP0("Conditional\n"); + HELP0(" \\if EXPR begin conditional block\n"); + HELP0(" \\elif EXPR alternative within current conditional block\n"); + HELP0(" \\else final alternative within current conditional block\n"); + HELP0(" \\endif end conditional block\n"); + HELP0("\n"); + + HELP0("Informational\n"); + HELP0(" (options: S = show system objects, + = additional detail)\n"); + HELP0(" \\d[S+] list tables, views, and sequences\n"); + HELP0(" \\d[S+] NAME describe table, view, sequence, or index\n"); + HELP0(" \\da[S] [PATTERN] list aggregates\n"); + HELP0(" \\dA[+] [PATTERN] list access methods\n"); + HELP0(" \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n"); + HELP0(" \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n"); + HELP0(" \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n"); + HELP0(" \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n"); + HELP0(" \\db[+] [PATTERN] list tablespaces\n"); + HELP0(" \\dc[S+] [PATTERN] list conversions\n"); + HELP0(" \\dconfig[+] [PATTERN] list configuration parameters\n"); + HELP0(" \\dC[+] [PATTERN] list casts\n"); + HELP0(" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"); + HELP0(" \\dD[S+] [PATTERN] list domains\n"); + HELP0(" \\ddp [PATTERN] list default privileges\n"); + HELP0(" \\dE[S+] [PATTERN] list foreign tables\n"); + HELP0(" \\des[+] [PATTERN] list foreign servers\n"); + HELP0(" \\det[+] [PATTERN] list foreign tables\n"); + HELP0(" \\deu[+] [PATTERN] list user mappings\n"); + HELP0(" \\dew[+] [PATTERN] list foreign-data wrappers\n"); + HELP0(" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" + " list [only agg/normal/procedure/trigger/window] functions\n"); + HELP0(" \\dF[+] [PATTERN] list text search configurations\n"); + HELP0(" \\dFd[+] [PATTERN] list text search dictionaries\n"); + HELP0(" \\dFp[+] [PATTERN] list text search parsers\n"); + HELP0(" \\dFt[+] [PATTERN] list text search templates\n"); + HELP0(" \\dg[S+] [PATTERN] list roles\n"); + HELP0(" \\di[S+] [PATTERN] list indexes\n"); + HELP0(" \\dl[+] list large objects, same as \\lo_list\n"); + HELP0(" \\dL[S+] [PATTERN] list procedural languages\n"); + HELP0(" \\dm[S+] [PATTERN] list materialized views\n"); + HELP0(" \\dn[S+] [PATTERN] list schemas\n"); + HELP0(" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" + " list operators\n"); + HELP0(" \\dO[S+] [PATTERN] list collations\n"); + HELP0(" \\dp [PATTERN] list table, view, and sequence access privileges\n"); + HELP0(" \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n"); + HELP0(" \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n"); + HELP0(" \\dRp[+] [PATTERN] list replication publications\n"); + HELP0(" \\dRs[+] [PATTERN] list replication subscriptions\n"); + HELP0(" \\ds[S+] [PATTERN] list sequences\n"); + HELP0(" \\dt[S+] [PATTERN] list tables\n"); + HELP0(" \\dT[S+] [PATTERN] list data types\n"); + HELP0(" \\du[S+] [PATTERN] list roles\n"); + HELP0(" \\dv[S+] [PATTERN] list views\n"); + HELP0(" \\dx[+] [PATTERN] list extensions\n"); + HELP0(" \\dX [PATTERN] list extended statistics\n"); + HELP0(" \\dy[+] [PATTERN] list event triggers\n"); + HELP0(" \\l[+] [PATTERN] list databases\n"); + HELP0(" \\sf[+] FUNCNAME show a function's definition\n"); + HELP0(" \\sv[+] VIEWNAME show a view's definition\n"); + HELP0(" \\z [PATTERN] same as \\dp\n"); + HELP0("\n"); + + HELP0("Large Objects\n"); + HELP0(" \\lo_export LOBOID FILE write large object to file\n"); + HELP0(" \\lo_import FILE [COMMENT]\n" + " read large object from file\n"); + HELP0(" \\lo_list[+] list large objects\n"); + HELP0(" \\lo_unlink LOBOID delete a large object\n"); + HELP0("\n"); + + HELP0("Formatting\n"); + HELP0(" \\a toggle between unaligned and aligned output mode\n"); + HELP0(" \\C [STRING] set table title, or unset if none\n"); + HELP0(" \\f [STRING] show or set field separator for unaligned query output\n"); + HELPN(" \\H toggle HTML output mode (currently %s)\n", + ON(pset.popt.topt.format == PRINT_HTML)); + HELP0(" \\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"); + HELPN(" \\t [on|off] show only rows (currently %s)\n", + ON(pset.popt.topt.tuples_only)); + HELP0(" \\T [STRING] set HTML
tag attributes, or unset if none\n"); + HELPN(" \\x [on|off|auto] toggle expanded output (currently %s)\n", + pset.popt.topt.expanded == 2 ? _("auto") : ON(pset.popt.topt.expanded)); + HELP0("\n"); + + HELP0("Connection\n"); + if (currdb) + HELPN(" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" + " connect to new database (currently \"%s\")\n", + currdb); + else + HELP0(" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" + " connect to new database (currently no connection)\n"); + HELP0(" \\conninfo display information about current connection\n"); + HELP0(" \\encoding [ENCODING] show or set client encoding\n"); + HELP0(" \\password [USERNAME] securely change the password for a user\n"); + HELP0("\n"); + + HELP0("Operating System\n"); + HELP0(" \\cd [DIR] change the current working directory\n"); + HELP0(" \\getenv PSQLVAR ENVVAR fetch environment variable\n"); + HELP0(" \\setenv NAME [VALUE] set or unset environment variable\n"); + HELPN(" \\timing [on|off] toggle timing of commands (currently %s)\n", + ON(pset.timing)); + HELP0(" \\! [COMMAND] execute command in shell or start interactive shell\n"); + HELP0("\n"); + + HELP0("Variables\n"); + HELP0(" \\prompt [TEXT] NAME prompt user to set internal variable\n"); + HELP0(" \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"); + HELP0(" \\unset NAME unset (delete) internal variable\n"); + + /* Now we can count the lines. */ + nlcount = 0; + for (const char *ptr = buf.data; *ptr; ptr++) + { + if (*ptr == '\n') + nlcount++; + } + + /* And dump the output, with appropriate pagination. */ + output = PageOutput(nlcount, pager ? &(pset.popt.topt) : NULL); + + fputs(buf.data, output); + + ClosePager(output); + + termPQExpBuffer(&buf); +} + + +/* + * helpVariables + * + * show list of available variables (options) from command line + */ +void +helpVariables(unsigned short int pager) +{ + PQExpBufferData buf; + int nlcount; + FILE *output; + + /* + * To avoid counting the output lines manually, build the output in "buf" + * and then count them. + */ + initPQExpBuffer(&buf); + + HELP0("List of specially treated variables\n\n"); + + HELP0("psql variables:\n"); + HELP0("Usage:\n"); + HELP0(" psql --set=NAME=VALUE\n or \\set NAME VALUE inside psql\n\n"); + + HELP0(" AUTOCOMMIT\n" + " if set, successful SQL commands are automatically committed\n"); + HELP0(" COMP_KEYWORD_CASE\n" + " determines the case used to complete SQL key words\n" + " [lower, upper, preserve-lower, preserve-upper]\n"); + HELP0(" DBNAME\n" + " the currently connected database name\n"); + HELP0(" ECHO\n" + " controls what input is written to standard output\n" + " [all, errors, none, queries]\n"); + HELP0(" ECHO_HIDDEN\n" + " if set, display internal queries executed by backslash commands;\n" + " if set to \"noexec\", just show them without execution\n"); + HELP0(" ENCODING\n" + " current client character set encoding\n"); + HELP0(" ERROR\n" + " true if last query failed, else false\n"); + HELP0(" FETCH_COUNT\n" + " the number of result rows to fetch and display at a time (0 = unlimited)\n"); + HELP0(" HIDE_TABLEAM\n" + " if set, table access methods are not displayed\n"); + HELP0(" HIDE_TOAST_COMPRESSION\n" + " if set, compression methods are not displayed\n"); + HELP0(" HISTCONTROL\n" + " controls command history [ignorespace, ignoredups, ignoreboth]\n"); + HELP0(" HISTFILE\n" + " file name used to store the command history\n"); + HELP0(" HISTSIZE\n" + " maximum number of commands to store in the command history\n"); + HELP0(" HOST\n" + " the currently connected database server host\n"); + HELP0(" IGNOREEOF\n" + " number of EOFs needed to terminate an interactive session\n"); + HELP0(" LASTOID\n" + " value of the last affected OID\n"); + HELP0(" LAST_ERROR_MESSAGE\n" + " LAST_ERROR_SQLSTATE\n" + " message and SQLSTATE of last error, or empty string and \"00000\" if none\n"); + HELP0(" ON_ERROR_ROLLBACK\n" + " if set, an error doesn't stop a transaction (uses implicit savepoints)\n"); + HELP0(" ON_ERROR_STOP\n" + " stop batch execution after error\n"); + HELP0(" PORT\n" + " server port of the current connection\n"); + HELP0(" PROMPT1\n" + " specifies the standard psql prompt\n"); + HELP0(" PROMPT2\n" + " specifies the prompt used when a statement continues from a previous line\n"); + HELP0(" PROMPT3\n" + " specifies the prompt used during COPY ... FROM STDIN\n"); + HELP0(" QUIET\n" + " run quietly (same as -q option)\n"); + HELP0(" ROW_COUNT\n" + " number of rows returned or affected by last query, or 0\n"); + HELP0(" SERVER_VERSION_NAME\n" + " SERVER_VERSION_NUM\n" + " server's version (in short string or numeric format)\n"); + HELP0(" SHOW_ALL_RESULTS\n" + " show all results of a combined query (\\;) instead of only the last\n"); + HELP0(" SHOW_CONTEXT\n" + " controls display of message context fields [never, errors, always]\n"); + HELP0(" SINGLELINE\n" + " if set, end of line terminates SQL commands (same as -S option)\n"); + HELP0(" SINGLESTEP\n" + " single-step mode (same as -s option)\n"); + HELP0(" SQLSTATE\n" + " SQLSTATE of last query, or \"00000\" if no error\n"); + HELP0(" USER\n" + " the currently connected database user\n"); + HELP0(" VERBOSITY\n" + " controls verbosity of error reports [default, verbose, terse, sqlstate]\n"); + HELP0(" VERSION\n" + " VERSION_NAME\n" + " VERSION_NUM\n" + " psql's version (in verbose string, short string, or numeric format)\n"); + + HELP0("\nDisplay settings:\n"); + HELP0("Usage:\n"); + HELP0(" psql --pset=NAME[=VALUE]\n or \\pset NAME [VALUE] inside psql\n\n"); + + HELP0(" border\n" + " border style (number)\n"); + HELP0(" columns\n" + " target width for the wrapped format\n"); + HELP0(" expanded (or x)\n" + " expanded output [on, off, auto]\n"); + HELPN(" fieldsep\n" + " field separator for unaligned output (default \"%s\")\n", + DEFAULT_FIELD_SEP); + HELP0(" fieldsep_zero\n" + " set field separator for unaligned output to a zero byte\n"); + HELP0(" footer\n" + " enable or disable display of the table footer [on, off]\n"); + HELP0(" format\n" + " set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"); + HELP0(" linestyle\n" + " set the border line drawing style [ascii, old-ascii, unicode]\n"); + HELP0(" null\n" + " set the string to be printed in place of a null value\n"); + HELP0(" numericlocale\n" + " enable display of a locale-specific character to separate groups of digits\n"); + HELP0(" pager\n" + " control when an external pager is used [yes, no, always]\n"); + HELP0(" recordsep\n" + " record (line) separator for unaligned output\n"); + HELP0(" recordsep_zero\n" + " set record separator for unaligned output to a zero byte\n"); + HELP0(" 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"); + HELP0(" title\n" + " set the table title for subsequently printed tables\n"); + HELP0(" tuples_only\n" + " if set, only actual table data is shown\n"); + HELP0(" unicode_border_linestyle\n" + " unicode_column_linestyle\n" + " unicode_header_linestyle\n" + " set the style of Unicode line drawing [single, double]\n"); + + HELP0("\nEnvironment variables:\n"); + HELP0("Usage:\n"); + +#ifndef WIN32 + HELP0(" NAME=VALUE [NAME=VALUE] psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"); +#else + HELP0(" set NAME=VALUE\n psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"); +#endif + + HELP0(" COLUMNS\n" + " number of columns for wrapped format\n"); + HELP0(" PGAPPNAME\n" + " same as the application_name connection parameter\n"); + HELP0(" PGDATABASE\n" + " same as the dbname connection parameter\n"); + HELP0(" PGHOST\n" + " same as the host connection parameter\n"); + HELP0(" PGPASSFILE\n" + " password file name\n"); + HELP0(" PGPASSWORD\n" + " connection password (not recommended)\n"); + HELP0(" PGPORT\n" + " same as the port connection parameter\n"); + HELP0(" PGUSER\n" + " same as the user connection parameter\n"); + HELP0(" PSQL_EDITOR, EDITOR, VISUAL\n" + " editor used by the \\e, \\ef, and \\ev commands\n"); + HELP0(" PSQL_EDITOR_LINENUMBER_ARG\n" + " how to specify a line number when invoking the editor\n"); + HELP0(" PSQL_HISTORY\n" + " alternative location for the command history file\n"); + HELP0(" PSQL_PAGER, PAGER\n" + " name of external pager program\n"); +#ifndef WIN32 + HELP0(" PSQL_WATCH_PAGER\n" + " name of external pager program used for \\watch\n"); +#endif + HELP0(" PSQLRC\n" + " alternative location for the user's .psqlrc file\n"); + HELP0(" SHELL\n" + " shell used by the \\! command\n"); + HELP0(" TMPDIR\n" + " directory for temporary files\n"); + + /* Now we can count the lines. */ + nlcount = 0; + for (const char *ptr = buf.data; *ptr; ptr++) + { + if (*ptr == '\n') + nlcount++; + } + + /* And dump the output, with appropriate pagination. */ + output = PageOutput(nlcount, pager ? &(pset.popt.topt) : NULL); + + fputs(buf.data, output); + + ClosePager(output); + + termPQExpBuffer(&buf); +} + + +/* + * 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-2022, 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..798807b --- /dev/null +++ b/src/bin/psql/help.h @@ -0,0 +1,21 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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..416185d --- /dev/null +++ b/src/bin/psql/input.c @@ -0,0 +1,552 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/input.c + */ +#include "postgres_fe.h" + +#ifndef WIN32 +#include +#endif +#include +#include + +#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; + + /* set appropriate values for Readline's global variables */ + initialize_readline(); + +#ifdef HAVE_RL_VARIABLE_BIND + /* set comment-begin to a useful value for SQL */ + (void) rl_variable_bind("comment-begin", "-- "); +#endif + + /* this reads ~/.inputrc, so do it after rl_variable_bind */ + 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..41766db --- /dev/null +++ b/src/bin/psql/input.h @@ -0,0 +1,51 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 +#if defined(HAVE_READLINE_HISTORY_H) +#include +#endif +#elif defined(HAVE_EDITLINE_READLINE_H) +#include +#if defined(HAVE_EDITLINE_HISTORY_H) +#include +#endif +#elif defined(HAVE_READLINE_H) +#include +#if defined(HAVE_HISTORY_H) +#include +#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..64338d5 --- /dev/null +++ b/src/bin/psql/large_obj.c @@ -0,0 +1,264 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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("

", pset.queryFout); + + va_start(ap, fmt); + vfprintf(pset.queryFout, fmt, ap); + va_end(ap); + + if (pset.popt.topt.format == PRINT_HTML) + fputs("

\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; +} diff --git a/src/bin/psql/large_obj.h b/src/bin/psql/large_obj.h new file mode 100644 index 0000000..1242ea5 --- /dev/null +++ b/src/bin/psql/large_obj.h @@ -0,0 +1,15 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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); + +#endif /* LARGE_OBJ_H */ diff --git a/src/bin/psql/mainloop.c b/src/bin/psql/mainloop.c new file mode 100644 index 0000000..b0c4177 --- /dev/null +++ b/src/bin/psql/mainloop.c @@ -0,0 +1,662 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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_fatal("out of memory"); + + /* 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_fatal("out of memory"); + + /* + * 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 do so already. Then, if + * the query buffer is still empty, flush out any unsent history + * entry. This means that empty lines (containing only whitespace and + * perhaps a dash-dash comment) that precede a query will be recorded + * as separate history entries, not as part of that query. + */ + if (pset.cur_cmd_interactive) + { + if (!line_saved_in_history) + pg_append_history(line, history_buf); + if (query_buf->len == 0) + pg_send_history(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..80e0c99 --- /dev/null +++ b/src/bin/psql/mainloop.h @@ -0,0 +1,17 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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..6e294b1 --- /dev/null +++ b/src/bin/psql/nls.mk @@ -0,0 +1,15 @@ +# src/bin/psql/nls.mk +CATALOG_NAME = psql +AVAIL_LANGUAGES = cs de el es fr it ja ka ko ru sv 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 ../../port/thread.c +GETTEXT_TRIGGERS = $(FRONTEND_COMMON_GETTEXT_TRIGGERS) \ + HELP0 HELPN N_ simple_prompt simple_prompt_extended +GETTEXT_FLAGS = $(FRONTEND_COMMON_GETTEXT_FLAGS) \ + HELPN:1:c-format 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 , 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 \n" +"Language-Team: Czech \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 .\n" +msgstr "Oddělovač záznamů je .\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
tag attributes, or unset if none\n" +msgstr " \\T [ŘETĚZEC] nastavení atributů HTML tagu
\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 .\n" +#~ msgstr "Chyby posílejte na adresu .\n" diff --git a/src/bin/psql/po/de.po b/src/bin/psql/po/de.po new file mode 100644 index 0000000..912297d --- /dev/null +++ b/src/bin/psql/po/de.po @@ -0,0 +1,6486 @@ +# German message translation file for psql +# Peter Eisentraut , 2001 - 2023. +# +# Use these quotes: »%s« +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-02-03 13:16+0000\n" +"PO-Revision-Date: 2023-02-03 16:09+0100\n" +"Last-Translator: Peter Eisentraut \n" +"Language-Team: German \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:276 +#, c-format +msgid "error: " +msgstr "Fehler: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "Warnung: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "Detail: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "Tipp: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "konnte aktuelles Verzeichnis nicht ermitteln: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "ungültige Programmdatei »%s«" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "konnte Programmdatei »%s« nicht lesen" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "konnte kein »%s« zum Ausführen finden" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "konnte symbolische Verknüpfung »%s« nicht lesen: %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() fehlgeschlagen: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Abbruchsanforderung gesendet\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "Konnte Abbruchsanforderung nicht senden: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu Zeile)" +msgstr[1] "(%lu Zeilen)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Unterbrochen\n" + +#: ../../fe_utils/print.c:3173 +#, 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:3213 +#, 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:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "ungültiges Ausgabeformat (interner Fehler): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "rekursive Auswertung der Variable »%s« wird ausgelassen" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "konnte lokale Benutzer-ID %d nicht nachschlagen: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "lokaler Benutzer mit ID %d existiert nicht" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "ungültige Anweisung \\%s" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "Versuchen Sie \\? für Hilfe." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: überflüssiges Argument »%s« ignoriert" + +#: command.c:304 +#, 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:573 +#, 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:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: konnte nicht in das Verzeichnis »%s« wechseln: %m" + +#: command.c:617 +#, 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:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "kein Anfragepuffer" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "ungültige Zeilennummer: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "keine Änderungen" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: ungültiger Kodierungsname oder Umwandlungsprozedur nicht gefunden" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "Es gibt keinen vorangegangenen Fehler." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: rechte Klammer fehlt" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: notwendiges Argument fehlt" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: kann nicht nach \\else kommen" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: kein passendes \\if" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: kann nicht nach \\else kommen" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: kein passendes \\if" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: kein passendes \\if" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "Anfragepuffer ist leer." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Neues Passwort für Benutzer »%s« eingeben: " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "Geben Sie es noch einmal ein: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "Passwörter stimmten nicht überein." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: konnte Wert für Variable nicht lesen" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "Anfragepuffer wurde gelöscht." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "Befehlsgeschichte in Datei »%s« geschrieben.\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: Name der Umgebungsvariable darf kein »=« enthalten" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "Funktionsname wird benötigt" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "Sichtname wird benötigt" + +#: command.c:2593 +msgid "Timing is on." +msgstr "Zeitmessung ist an." + +#: command.c:2595 +msgid "Timing is off." +msgstr "Zeitmessung ist aus." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Passwort: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Passwort für Benutzer %s: " + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "Geben Sie Benutzer, Host oder Port nicht separat an, wenn eine Verbindungsangabe verwendet wird" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "Es gibt keine Verbindung, von der die Parameter verwendet werden können" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "Vorherige Verbindung wurde behalten" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, 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:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, Server %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "SSL-Verbindung (Protokoll: %s, Verschlüsselungsmethode: %s, Komprimierung: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "unbekannt" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "aus" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "an" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "GSSAPI-verschlüsselte Verbindung\n" + +#: command.c:3717 +#, 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:3822 +#, 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:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "konnte Editor »%s« nicht starten" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "konnte /bin/sh nicht starten" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "konnte temporäres Verzeichnis nicht finden: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "konnte temporäre Datei »%s« nicht öffnen: %m" + +#: command.c:4266 +#, 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:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: zulässige Linienstile sind ascii, old-ascii, unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: zulässige Unicode-Rahmnenlinienstile sind single, double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: zulässige Unicode-Spaltenlinienstile sind single, double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: zulässige Unicode-Kopflinienstile sind single, double" + +#: command.c:4393 +#, 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:4398 +#, 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:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: unbekannte Option: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "Rahmenstil ist %d.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "Zielbreite ist nicht gesetzt.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "Zielbreite ist %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Erweiterte Anzeige ist an.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "Erweiterte Anzeige wird automatisch verwendet.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Erweiterte Anzeige ist aus.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "Feldtrennzeichen für CSV ist »%s«.\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Feldtrennzeichen ist ein Null-Byte.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Feldtrennzeichen ist »%s«.\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "Standardfußzeile ist an.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "Standardfußzeile ist aus.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "Ausgabeformat ist »%s«.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "Linienstil ist %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null-Anzeige ist »%s«.\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "Lokalisiertes Format für numerische Daten ist an.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "Lokalisiertes Format für numerische Daten ist aus.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Pager wird für lange Ausgaben verwendet.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "Pager wird immer verwendet.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "Pager-Verwendung ist aus.\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Satztrennzeichen ist ein Null-Byte.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "Satztrennzeichen ist .\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Satztrennzeichen ist »%s«.\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Tabellenattribute sind »%s«.\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Tabellenattribute sind nicht gesetzt.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Titel ist »%s«.\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "Titel ist nicht gesetzt.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "Nur Datenzeilen ist an.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "Nur Datenzeilen ist aus.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Unicode-Rahmenlinienstil ist »%s«.\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Unicode-Spaltenlinienstil ist »%s«.\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Unicode-Kopflinienstil ist »%s«.\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: fehlgeschlagen" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch kann nicht mit einer leeren Anfrage verwendet werden" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "konnte Timer nicht setzen: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (alle %gs)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (alle %gs)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "konnte nicht auf Signale warten: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"******** ANFRAGE *********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "»%s.%s« ist keine Sicht" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "konnte reloptions-Array nicht interpretieren" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "Escape kann nicht ohne aktive Verbindung ausgeführt werden" + +#: common.c:207 +#, 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:311 +#, c-format +msgid "connection to server was lost" +msgstr "Verbindung zum Server wurde verloren" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Die Verbindung zum Server wurde verloren. Versuche Reset: " + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "Fehlgeschlagen.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "Erfolgreich.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "unerwarteter PQresultStatus: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Zeit: %.3f ms\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Zeit: %.3f ms (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Zeit: %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, 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:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "Sie sind gegenwärtig nicht mit einer Datenbank verbunden." + +#: common.c:654 +#, 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:657 +#, 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:688 +#, c-format +msgid "could not print result table: %m" +msgstr "konnte Ergebnistabelle nicht ausgeben: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "keine Zeilen für \\gset zurückgegeben" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "mehr als eine Zeile für \\gset zurückgegeben" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "Versuch von \\gset in besonders behandelte Variable »%s« ignoriert" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "ANWEISUNG: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "unerwarteter Transaktionsstatus (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "Spalte" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Typ" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "abgebrochen wegen Lesenfehlers" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Schema" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Name" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Ergebnisdatentyp" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Argumentdatentypen" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Beschreibung" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Liste der Aggregatfunktionen" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "Der Server (Version %s) unterstützt keine Zugriffsmethoden." + +#: describe.c:168 +msgid "Index" +msgstr "Index" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Tabelle" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Handler" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Liste der Zugriffsmethoden" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Eigentümer" + +#: describe.c:231 +msgid "Location" +msgstr "Pfad" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Optionen" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Größe" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Liste der Tablespaces" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df akzeptiert nur [anptwS+] als Optionen" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "Agg" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "Fenster" + +#: describe.c:356 +msgid "proc" +msgstr "Proz" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "Funk" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "Trigger" + +#: describe.c:386 +msgid "immutable" +msgstr "unveränderlich" + +#: describe.c:387 +msgid "stable" +msgstr "stabil" + +#: describe.c:388 +msgid "volatile" +msgstr "volatil" + +#: describe.c:389 +msgid "Volatility" +msgstr "Volatilität" + +#: describe.c:397 +msgid "restricted" +msgstr "beschränkt" + +#: describe.c:398 +msgid "safe" +msgstr "sicher" + +#: describe.c:399 +msgid "unsafe" +msgstr "unsicher" + +#: describe.c:400 +msgid "Parallel" +msgstr "Parallel" + +#: describe.c:405 +msgid "definer" +msgstr "definer" + +#: describe.c:406 +msgid "invoker" +msgstr "invoker" + +#: describe.c:407 +msgid "Security" +msgstr "Sicherheit" + +#: describe.c:412 +msgid "Language" +msgstr "Sprache" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Quelltext" + +#: describe.c:594 +msgid "List of functions" +msgstr "Liste der Funktionen" + +#: describe.c:657 +msgid "Internal name" +msgstr "Interner Name" + +#: describe.c:659 +msgid "Elements" +msgstr "Elemente" + +#: describe.c:711 +msgid "List of data types" +msgstr "Liste der Datentypen" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Linker Typ" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Rechter Typ" + +#: describe.c:816 +msgid "Result type" +msgstr "Ergebnistyp" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Funktion" + +#: describe.c:902 +msgid "List of operators" +msgstr "Liste der Operatoren" + +#: describe.c:938 +msgid "Encoding" +msgstr "Kodierung" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Sortierfolge" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Zeichentyp" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "ICU-Locale" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Locale-Provider" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Tablespace" + +#: describe.c:990 +msgid "List of databases" +msgstr "Liste der Datenbanken" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "Tabelle" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "Sicht" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "materialisierte Sicht" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "Sequenz" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "Fremdtabelle" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "partitionierte Tabelle" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Spaltenprivilegien" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Policys" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Zugriffsprivilegien" + +#: describe.c:1188 +msgid "function" +msgstr "Funktion" + +#: describe.c:1190 +msgid "type" +msgstr "Typ" + +#: describe.c:1192 +msgid "schema" +msgstr "Schema" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Vorgegebene Zugriffsprivilegien" + +#: describe.c:1259 +msgid "Object" +msgstr "Objekt" + +#: describe.c:1273 +msgid "table constraint" +msgstr "Tabellen-Constraint" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "Domänen-Constraint" + +#: describe.c:1321 +msgid "operator class" +msgstr "Operatorklasse" + +#: describe.c:1345 +msgid "operator family" +msgstr "Operatorfamilie" + +#: describe.c:1368 +msgid "rule" +msgstr "Rule" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Objektbeschreibungen" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "Keine Relation namens »%s« gefunden" + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "Keine Relationen gefunden" + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "Keine Relation mit OID %s gefunden" + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "Start" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Minimum" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Maximum" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Inkrement" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "ja" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "nein" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "Zyklisch?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Cache" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Eigentümer: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Sequenz für Identitätsspalte: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Ungeloggte Sequenz »%s.%s«" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Sequenz »%s.%s«" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Ungeloggte Tabelle »%s.%s«" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Tabelle »%s.%s«" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Sicht »%s.%s«" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Ungeloggte materialisierte Sicht »%s.%s«" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Materialisierte Sicht »%s.%s«" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Ungeloggter Index »%s.%s«" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Index »%s.%s«" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Ungeloggter partitionierter Index »%s.%s«" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Partitionierter Index »%s.%s«" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST-Tabelle »%s.%s«" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Zusammengesetzter Typ »%s.%s«" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Fremdtabelle »%s.%s«" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Ungeloggte partitionierte Tabelle »%s.%s«" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Partitionierte Tabelle »%s.%s«" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Sortierfolge" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "NULL erlaubt?" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "Vorgabewert" + +#: describe.c:2029 +msgid "Key?" +msgstr "Schlüssel?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Definition" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "FDW-Optionen" + +#: describe.c:2035 +msgid "Storage" +msgstr "Speicherung" + +#: describe.c:2037 +msgid "Compression" +msgstr "Kompression" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Statistikziel" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Partition von: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Kein Partitions-Constraint" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Partitions-Constraint: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Partitionsschlüssel: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Gehört zu Tabelle: »%s.%s«" + +#: describe.c:2309 +msgid "primary key, " +msgstr "Primärschlüssel, " + +#: describe.c:2312 +msgid "unique" +msgstr "unique" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls not distinct" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "für Tabelle »%s.%s«" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", Prädikat (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", geclustert" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", ungültig" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", DEFERRABLE" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", INITIALLY DEFERRED" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", Replika-Identität" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Indexe:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Check-Constraints:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Fremdschlüssel-Constraints:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Fremdschlüsselverweise von:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Policys:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Policys (Sicherheit auf Zeilenebene erzwungen):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Policys (Sicherheit auf Zeilenebene eingeschaltet): (keine)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Policys (Sicherheit auf Zeilenebene erzwungen): (keine)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Policys (Sicherheit auf Zeilenebene ausgeschaltet):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Statistikobjekte:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Regeln:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Abgeschaltete Regeln:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Regeln, die immer aktiv werden:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Regeln, die nur im Replikat aktiv werden:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Publikationen:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Sichtdefinition:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Trigger:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Abgeschaltete Benutzer-Trigger:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Abgeschaltete interne Trigger:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Trigger, die immer aktiv werden:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Trigger, die nur im Replikat aktiv werden:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Server: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "FDW-Optionen: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Erbt von" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Anzahl Partitionen: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "Anzahl Partitionen: %d (Mit \\d+ alle anzeigen.)" + +#: describe.c:3424 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Anzahl Kindtabellen: %d (Mit \\d+ alle anzeigen.)" + +#: describe.c:3431 +msgid "Child tables" +msgstr "Kindtabellen" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Partitionen" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Getypte Tabelle vom Typ: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Replika-Identität" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Hat OIDs: ja" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Zugriffsmethode: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", Tablespace »%s«" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Liste der Rollen" + +#: describe.c:3670 +msgid "Role name" +msgstr "Rollenname" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Attribute" + +#: describe.c:3673 +msgid "Member of" +msgstr "Mitglied von" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Superuser" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "keine Vererbung" + +#: describe.c:3690 +msgid "Create role" +msgstr "Rolle erzeugen" + +#: describe.c:3693 +msgid "Create DB" +msgstr "DB erzeugen" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "kann nicht einloggen" + +#: describe.c:3699 +msgid "Replication" +msgstr "Replikation" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Bypass RLS" + +#: describe.c:3712 +msgid "No connections" +msgstr "keine Verbindungen" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d Verbindung" +msgstr[1] "%d Verbindungen" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Passwort gültig bis " + +#: describe.c:3777 +msgid "Role" +msgstr "Rolle" + +#: describe.c:3778 +msgid "Database" +msgstr "Datenbank" + +#: describe.c:3779 +msgid "Settings" +msgstr "Einstellung" + +#: describe.c:3803 +#, 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:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "Keine Einstellungen für Rolle »%s« gefunden" + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "Keine Einstellungen gefunden" + +#: describe.c:3814 +msgid "List of settings" +msgstr "Liste der Einstellungen" + +#: describe.c:3885 +msgid "index" +msgstr "Index" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "TOAST-Tabelle" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "partitionierter Index" + +#: describe.c:3910 +msgid "permanent" +msgstr "permanent" + +#: describe.c:3911 +msgid "temporary" +msgstr "temporär" + +#: describe.c:3912 +msgid "unlogged" +msgstr "ungeloggt" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Persistenz" + +#: describe.c:3929 +msgid "Access method" +msgstr "Zugriffsmethode" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Liste der Relationen" + +#: describe.c:4063 +#, 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:4074 +msgid "List of partitioned indexes" +msgstr "Liste partitionierter Indexe" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Liste partitionierte Tabellen" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Liste partitionierter Relationen" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Elternname" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Größe Leaf-Partition" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Gesamtgröße" + +#: describe.c:4258 +msgid "Trusted" +msgstr "Vertraut" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Interne Sprache" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Call-Handler" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Validator" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Inline-Handler" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Liste der Sprachen" + +#: describe.c:4346 +msgid "Check" +msgstr "Check" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Liste der Domänen" + +#: describe.c:4424 +msgid "Source" +msgstr "Quelle" + +#: describe.c:4425 +msgid "Destination" +msgstr "Ziel" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "Standard?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Liste der Konversionen" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Parameter" + +#: describe.c:4498 +msgid "Value" +msgstr "Wert" + +#: describe.c:4505 +msgid "Context" +msgstr "Kontext" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Liste der Konfigurationsparameter" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Liste der veränderten Konfigurationsparameter" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "Der Server (Version %s) unterstützt keine Ereignistrigger." + +#: describe.c:4587 +msgid "Event" +msgstr "Ereignis" + +#: describe.c:4589 +msgid "enabled" +msgstr "eingeschaltet" + +#: describe.c:4590 +msgid "replica" +msgstr "Replika" + +#: describe.c:4591 +msgid "always" +msgstr "immer" + +#: describe.c:4592 +msgid "disabled" +msgstr "ausgeschaltet" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Eingeschaltet" + +#: describe.c:4595 +msgid "Tags" +msgstr "Tags" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Liste der Ereignistrigger" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "Der Server (Version %s) unterstützt keine erweiterten Statistiken." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Abhängigkeiten" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Liste der erweiterten Statistiken" + +#: describe.c:4745 +msgid "Source type" +msgstr "Quelltyp" + +#: describe.c:4746 +msgid "Target type" +msgstr "Zieltyp" + +#: describe.c:4770 +msgid "in assignment" +msgstr "in Zuweisung" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Implizit?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Liste der Typumwandlungen" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Provider" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Deterministisch?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Liste der Sortierfolgen" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Liste der Schemas" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Liste der Textsucheparser" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "Kein Textsucheparser namens »%s« gefunden" + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "Keine Textsucheparser gefunden" + +#: describe.c:5245 +msgid "Start parse" +msgstr "Parsen starten" + +#: describe.c:5246 +msgid "Method" +msgstr "Methode" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Nächstes Token lesen" + +#: describe.c:5252 +msgid "End parse" +msgstr "Parsen beenden" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Überschrift ermitteln" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Tokentypen ermitteln" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Textsucheparser »%s.%s«" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Textsucheparser »%s«" + +#: describe.c:5289 +msgid "Token name" +msgstr "Tokenname" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Tokentypen für Parser »%s.%s«" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Tokentypen für Parser »%s«" + +#: describe.c:5350 +msgid "Template" +msgstr "Vorlage" + +#: describe.c:5351 +msgid "Init options" +msgstr "Initialisierungsoptionen" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Liste der Textsuchewörterbücher" + +#: describe.c:5411 +msgid "Init" +msgstr "Init" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Liste der Textsuchevorlagen" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Liste der Textsuchekonfigurationen" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "Keine Textsuchekonfiguration namens »%s« gefunden" + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "Keine Textsuchekonfigurationen gefunden" + +#: describe.c:5619 +msgid "Token" +msgstr "Token" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Wörterbücher" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Textsuchekonfiguration »%s.%s«" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Textsuchekonfiguration »%s«" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Parser: »%s.%s«" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Parser: »%s«" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Liste der Fremddaten-Wrapper" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Fremddaten-Wrapper" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Version" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Liste der Fremdserver" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Server" + +#: describe.c:5825 +msgid "User name" +msgstr "Benutzername" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Liste der Benutzerabbildungen" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Liste der Fremdtabellen" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Liste der installierten Erweiterungen" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "Keine Erweiterung namens »%s« gefunden" + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "Keine Erweiterungen gefunden" + +#: describe.c:6075 +msgid "Object description" +msgstr "Objektbeschreibung" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objekte in Erweiterung »%s«" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "falscher qualifizierter Name (zu viele Namensteile): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "Verweise auf andere Datenbanken sind nicht implementiert: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "Der Server (Version %s) unterstützt keine Publikationen." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Alle Tabellen" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Inserts" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Updates" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Deletes" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Truncates" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Über Wurzel" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Liste der Publikationen" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "Keine Publikation namens »%s« gefunden" + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "Keine Publikationen gefunden" + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Publikation %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Tabellen:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Tabellen aus Schemas:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "Der Server (Version %s) unterstützt keine Subskriptionen." + +#: describe.c:6497 +msgid "Publication" +msgstr "Publikation" + +#: describe.c:6506 +msgid "Binary" +msgstr "Binär" + +#: describe.c:6507 +msgid "Streaming" +msgstr "Streaming" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Two-Phase-Commit" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Bei Fehler abschalten" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Synchroner Commit" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Verbindungsinfo" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Skip-LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Liste der Subskriptionen" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "Eingabetyp" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Storage-Typ" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Operatorklasse" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Operatorfamilie" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Liste der Operatorklassen" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Passende Typen" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Liste der Operatorfamilien" + +#: describe.c:6807 +msgid "Operator" +msgstr "Operator" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Strategie" + +#: describe.c:6809 +msgid "ordering" +msgstr "Sortieren" + +#: describe.c:6810 +msgid "search" +msgstr "Suchen" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Zweck" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "Sortier-Opfamilie" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Liste der Operatoren in Operatorfamilien" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Registrierter linker Typ" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Registrierter rechter Typ" + +#: describe.c:6904 +msgid "Number" +msgstr "Nummer" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Liste der Unterstützungsfunktionen in Operatorfamilien" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "Large Objects" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql ist das interaktive PostgreSQL-Terminal.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Aufruf:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPTION]... [DBNAME [BENUTZERNAME]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Allgemeine Optionen:\n" + +#: help.c:84 +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:85 +#, 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:87 +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:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list verfügbare Datenbanken auflisten und beenden\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc Startdatei (~/.psqlrc) nicht lesen\n" + +#: help.c:94 +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:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] diese Hilfe anzeigen, dann beenden\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands Backslash-Befehle auflisten, dann beenden\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables besondere Variablen auflisten, dann beenden\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Eingabe- und Ausgabeoptionen:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all Skript-Inhalt wiedergeben\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors fehlgeschlagene Anweisungen wiedergeben\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries an den Server geschickte Anweisungen zeigen\n" + +#: help.c:104 +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden von internen Anweisungen erzeugte Anfragen zeigen\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr "" +" -L, --log-file=DATEINAME\n" +" Sitzungslog in Datei senden\n" + +#: help.c:106 +msgid " -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr " -n, --no-readline erweiterte Zeilenbearbeitung (Readline) ausschalten\n" + +#: help.c:107 +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:108 +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:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step Einzelschrittmodus (jede Anfrage bestätigen)\n" + +#: help.c:110 +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:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Ausgabeformatoptionen:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align unausgerichteter Tabellenausgabemodus\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv Tabellenausgabemodus CSV (Comma-Separated Values)\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html HTML-Tabellenausgabemodus\n" + +#: help.c:119 +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:120 +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:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only nur Datenzeilen ausgeben\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded erweiterte Tabellenausgabe einschalten\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Verbindungsoptionen:\n" + +#: help.c:133 +#, 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:134 +msgid "local socket" +msgstr "lokales Socket" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password niemals nach Passwort fragen\n" + +#: help.c:143 +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password nach Passwort fragen (sollte automatisch geschehen)\n" + +#: help.c:145 +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:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Berichten Sie Fehler an <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s Homepage: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "Allgemein\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright PostgreSQL-Urheberrechtsinformationen zeigen\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr "" +" \\crosstabview [SPALTEN] Anfrage ausführen und Ergebnis als Kreuztabelle\n" +" anzeigen\n" + +#: help.c:194 +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose letzte Fehlermeldung mit vollen Details anzeigen\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result 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:197 +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc Ergebnis der Anfrage beschreiben ohne sie auszuführen\n" + +#: help.c:198 +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:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr "" +" \\gset [PREFIX] SQL-Anweisung ausführen und Ergebnis in psql-Variablen\n" +" ablegen\n" + +#: help.c:200 +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:201 +msgid " \\q quit psql\n" +msgstr " \\q psql beenden\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEK] Anfrage alle SEK Sekunden ausführen\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Hilfe\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] Hilfe über Backslash-Befehle anzeigen\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options Hilfe über psql-Kommandozeilenoptionen anzeigen\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables Hilfe über besondere Variablen anzeigen\n" + +#: help.c:210 +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:213 +msgid "Query Buffer\n" +msgstr "Anfragepuffer\n" + +#: help.c:214 +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:215 +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNKNAME [ZEILE]] Funktionsdefinition mit externem Editor bearbeiten\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [SICHTNAME [ZEILE]] Sichtdefinition mit externem Editor bearbeiten\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p aktuellen Inhalt der Anfragepuffers zeigen\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r Anfragepuffer löschen\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [DATEI] Befehlsgeschichte ausgeben oder in Datei schreiben\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w DATEI Anfragepuffer in Datei schreiben\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "Eingabe/Ausgabe\n" + +#: help.c:226 +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:227 +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:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i DATEI Befehle aus Datei ausführen\n" + +#: help.c:229 +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:230 +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:231 +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:232 +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:235 +msgid "Conditional\n" +msgstr "Bedingte Anweisungen\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if AUSDRUCK Beginn einer bedingten Anweisung\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif AUSDRUCK Alternative in aktueller bedingter Anweisung\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else letzte Alternative in aktueller bedingter Anweisung\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif Ende einer bedingten Anweisung\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Informationen\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (Optionen: S = Systemobjekte zeigen, + = zusätzliche Details zeigen)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] Tabellen, Sichten und Sequenzen auflisten\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAME Tabelle, Sicht, Sequenz oder Index beschreiben\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [MUSTER] Aggregatfunktionen auflisten\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [MUSTER] Zugriffsmethoden auflisten\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMMUST [TYPMUST]] Operatorklassen auflisten\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMMUST [TYPMUST]] Operatorfamilien auflisten\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMMUST [OPFMUST]] Operatoren in Operatorfamilien auflisten\n" + +#: help.c:251 +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMMUST [OPFMUST]] Unterst.funktionen in Operatorfamilien auflisten\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [MUSTER] Tablespaces auflisten\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [MUSTER] Konversionen auflisten\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [MUSTER] Konfigurationsparameter auflisten\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [MUSTER] Typumwandlungen (Casts) auflisten\n" + +#: help.c:256 +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:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [MUSTER] Domänen auflisten\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [MUSTER] Vorgabeprivilegien auflisten\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MUSTER] Fremdtabellen auflisten\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [MUSTER] Fremdserver auflisten\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MUSTER] Fremdtabellen auflisten\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [MUSTER] Benutzerabbildungen auflisten\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [MUSTER] Fremddaten-Wrapper auflisten\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNKMUSTR [TYPMUSTR ...]]\n" +" Funktionen [nur Agg/normale/Proz/Trigger/Fenster] auflisten\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [MUSTER] Textsuchekonfigurationen auflisten\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [MUSTER] Textsuchewörterbücher auflisten\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [MUSTER] Textsucheparser auflisten\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [MUSTER] Textsuchevorlagen auflisten\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [MUSTER] Rollen auflisten\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [MUSTER] Indexe auflisten\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] Large Objects auflisten, wie \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MUSTER] prozedurale Sprachen auflisten\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [MUSTER] materialisierte Sichten auflisten\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MUSTER] Schemas auflisten\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPMUST [TYPMUST [TYPMUST]]]\n" +" Operatoren auflisten\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MUSTER] Sortierfolgen auflisten\n" + +#: help.c:279 +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:280 +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:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr " \\drds [ROLLMUST [DBMUST]] datenbankspezifische Rolleneinstellungen auflisten\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [MUSTER] Replikationspublikationen auflisten\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [MUSTER] Replikationssubskriptionen auflisten\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [MUSTER] Sequenzen auflisten\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [MUSTER] Tabellen auflisten\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [MUSTER] Datentypen auflisten\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [MUSTER] Rollen auflisten\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [MUSTER] Sichten auflisten\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MUSTER] Erweiterungen auflisten\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [MUSTER] erweiterte Statistiken auflisten\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [MUSTER] Ereignistrigger auflisten\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [MUSTER] Datenbanken auflisten\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNKNAME Funktionsdefinition zeigen\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] SICHTNAME Sichtdefinition zeigen\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [MUSTER] äquivalent zu \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "Large Objects\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr "" +" \\lo_export LOBOID DATEI\n" +" Large Object in Datei schreiben\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import DATEI [KOMMENTAR]\n" +" Large Object aus Datei lesen\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] Large Objects auflisten\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID Large Object löschen\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Formatierung\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr "" +" \\a zwischen unausgerichtetem und ausgerichtetem Ausgabemodus\n" +" umschalten\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C [TEXT] Tabellentitel setzen oder löschen\n" + +#: help.c:309 +msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgstr " \\f [ZEICHEN] Feldtrennzeichen zeigen oder setzen\n" + +#: help.c:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H HTML-Ausgabemodus umschalten (gegenwärtig %s)\n" + +#: help.c:312 +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:319 +#, 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:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [TEXT] HTML
-Tag-Attribute setzen oder löschen\n" + +#: help.c:322 +#, 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:323 +msgid "auto" +msgstr "auto" + +#: help.c:326 +msgid "Connection\n" +msgstr "Verbindung\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo Informationen über aktuelle Verbindung anzeigen\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [KODIERUNG] Client-Kodierung zeigen oder setzen\n" + +#: help.c:336 +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr "" +" \\password [BENUTZERNAME]\n" +" sicheres Ändern eines Benutzerpasswortes\n" + +#: help.c:339 +msgid "Operating System\n" +msgstr "Betriebssystem\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [VERZ] Arbeitsverzeichnis wechseln\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVVAR Umgebungsvariable auslesen\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAME [WERT] Umgebungsvariable setzen oder löschen\n" + +#: help.c:343 +#, 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:345 +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:348 +msgid "Variables\n" +msgstr "Variablen\n" + +#: help.c:349 +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [TEXT] NAME interne Variable vom Benutzer abfragen\n" + +#: help.c:350 +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:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NAME interne Variable löschen\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"Liste besonderer Variablen\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "psql-Variablen:\n" + +#: help.c:394 +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:396 +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:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" Name der aktuellen Datenbank\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" aktuelle Zeichensatzkodierung des Clients\n" + +#: help.c:411 +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:413 +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:415 +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:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" wenn gesetzt werden Kompressionsmethoden nicht angezeigt\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" kontrolliert Befehlsgeschichte [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr "" +" HISTFILE\n" +" Dateiname für die Befehlsgeschichte\n" + +#: help.c:423 +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:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" der aktuell verbundene Datenbankserverhost\n" + +#: help.c:427 +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:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" Wert der zuletzt beinträchtigten OID\n" + +#: help.c:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" Skriptausführung bei Fehler beenden\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" Serverport der aktuellen Verbindung\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" der normale psql-Prompt\n" + +#: help.c:442 +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:444 +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:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" stille Ausführung (wie Option -q)\n" + +#: help.c:448 +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:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" alle Ergebnisse einer kombinierten Anfrage (\\;) anzeigen statt nur das letzte\n" + +#: help.c:455 +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:457 +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:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" Einzelschrittmodus (wie Option -s)\n" + +#: help.c:461 +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:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" der aktuell verbundene Datenbankbenutzer\n" + +#: help.c:465 +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:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Anzeigeeinstellungen:\n" + +#: help.c:474 +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:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" Rahmenstil (Zahl)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" Zielbreite für das Format »wrapped«\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (oder x)\n" +" erweiterte Ausgabe [on, off, auto]\n" + +#: help.c:482 +#, 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:485 +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:487 +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:489 +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:491 +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:493 +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:495 +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:497 +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:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" Satztrennzeichen für unausgerichteten Ausgabemodus\n" + +#: help.c:501 +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:503 +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:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" setzt den Titel darauffolgend ausgegebener Tabellen\n" + +#: help.c:508 +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:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Umgebungsvariablen:\n" + +#: help.c:519 +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:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" Anzahl Spalten im Format »wrapped«\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" wie Verbindungsparameter »application_name«\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" wie Verbindungsparameter »dbname«\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" wie Verbindungsparameter »host«\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" Name der Passwortdatei\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" Verbindungspasswort (nicht empfohlen)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" wie Verbindungsparameter »port«\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" wie Verbindungsparameter »user«\n" + +#: help.c:540 +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:542 +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:544 +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:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" Name des externen Pager-Programms\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" Name des externen Pager-Programms für \\watch\n" + +#: help.c:552 +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:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" Shell für den Befehl \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" Verzeichnis für temporäre Dateien\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Verfügbare Hilfe:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "konnte Befehlsgeschichte nicht in Datei »%s« speichern: %m" + +#: input.c:535 +#, 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" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: abgebrochen" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Verwenden Sie »\\q«, um %s zu verlassen.\n" + +#: mainloop.c:214 +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:295 +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:297 +msgid "Use \\? for help." +msgstr "Verwenden Sie \\? für Hilfe." + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Dies ist psql, die Kommandozeilenschnittstelle für PostgreSQL." + +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Verwenden Sie \\q zum beenden." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Verwenden Sie Strg-D zum beenden." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Verwenden Sie Strg-C zum beenden." + +#: mainloop.c:459 mainloop.c:618 +#, 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:636 +#, c-format +msgid "reached EOF without finding closing \\endif(s)" +msgstr "Dateiende erreicht, aber schließendes \\endif fehlt" + +#: psqlscanslash.l:638 +#, c-format +msgid "unterminated quoted string" +msgstr "Zeichenkette in Anführungszeichen nicht abgeschlossen" + +#: psqlscanslash.l:811 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "Name" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "Aggregatsignatur" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "neuer_Name" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "neuer_Eigentümer" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "neues_Schema" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +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:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "Argmodus" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "Argname" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "Argtyp" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "Option" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "wobei Option Folgendes sein kann:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "allowconn" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "Verbindungslimit" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "istemplate" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "neuer_Tablespace" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "Konfigurationsparameter" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "Wert" + +#: sql_help.c:200 +msgid "target_role" +msgstr "Zielrolle" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "Schemaname" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "abgekürztes_Grant_oder_Revoke" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "wobei abgekürztes_Grant_oder_Revoke Folgendes sein kann:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "Rollenname" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "Ausdruck" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "Domänen-Constraint" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "Constraint-Name" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "neuer_Constraint-Name" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "neue_Version" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "Elementobjekt" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "wobei Elementobjekt Folgendes ist:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "Objektname" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "Aggregatname" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "Quelltyp" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "Zieltyp" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "Funktionsname" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "Operatorname" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "linker_Typ" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "rechter_Typ" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "Indexmethode" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "Prozedurname" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "Routinenname" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "Typname" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "Sprachname" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "und Aggregatsignatur Folgendes ist:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "Handler-Funktion" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "Validator-Funktion" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "Aktion" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "Spaltenname" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "neuer_Spaltenname" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "wobei Aktion Folgendes sein kann:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "Datentyp" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "Sortierfolge" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "Spalten-Constraint" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "ganze_Zahl" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "Attributoption" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "Tabellen-Constraint" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "Triggername" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "Elterntabelle" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "Erweiterungsname" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "Ausführungskosten" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "Ergebniszeilen" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "Support-Funktion" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "Rollenangabe" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "Benutzername" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "wobei Rollenangabe Folgendes sein kann:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "Gruppenname" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "Tablespace-Name" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "Indexname" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "Storage-Parameter" + +#: sql_help.c:607 +msgid "column_number" +msgstr "Spaltennummer" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "Large-Object-OID" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "Kompressionsmethode" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "neue_Zugriffsmethode" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "Res-Funktion" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "Join-Funktion" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "Strategienummer" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "Optyp" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "Sortierfamilienname" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "Unterst-Nummer" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "Argumenttyp" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "Tabellenname" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "Using-Ausdruck" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "Check-Ausdruck" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "Publikationsobjekt" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "Publikationsparameter" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "wobei Publikationsobjekt Folgendes sein kann:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "Passwort" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "Zeit" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "Datenbankname" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "Inkrement" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "Minwert" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "Maxwert" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "Start" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "Restart" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "Cache" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "neues_Ziel" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "Verbindungsinfo" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "Publikationsname" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "Publikationsoption" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "Refresh-Option" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "Subskriptionsparameter" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "Skip-Option" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "Partitionsname" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "Partitionsbegrenzungsangabe" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "Sequenzoptionen" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "Sequenzoption" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "Tabellen-Constraint-für-Index" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "Regelname" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "und Partitionsbegrenzungsangabe Folgendes ist:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "Partitionsbegrenzungsausdruck" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "numerische_Konstante" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "und Spalten-Constraint Folgendes ist:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "Vorgabeausdruck" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "Generierungsausdruck" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "Indexparameter" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "Reftabelle" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "Refspalte" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "Fremdschlüsselaktion" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "und Tabellen-Constraint Folgendes ist:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "Exclude-Element" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "Operator" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "Prädikat" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "und Tabellen-Constraint-für-Index Folgendes ist:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "Indexparameter bei UNIQUE-, PRIMARY KEY- und EXCLUDE-Constraints sind:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "Exclude-Element in einem EXCLUDE-Constraint ist:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "Opklasse" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "Fremdschlüsselaktion in FOREIGN KEY/REFERENCES ist:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "Tablespace-Option" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "Tokentyp" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "Wörterbuchname" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "altes_Wörterbuch" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "neues_Wörterbuch" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "Attributname" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "neuer_Attributname" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "neuer_Enum-Wert" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "Nachbar-Enum-Wert" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "existierender_Enum-Wert" + +#: sql_help.c:1589 +msgid "property" +msgstr "Eigenschaft" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "Servername" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "Sichtoptionsname" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "Sichtoptionswert" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "Tabelle-und-Spalten" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "wobei Option eine der folgenden sein kann:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "und Tabelle-und-Spalten Folgendes ist:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "Transaktionsmodus" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "wobei Transaktionsmodus Folgendes sein kann:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "Argument" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "Relationsname" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "Domänenname" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "Policy-Name" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "Regelname" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "Zeichenkettenkonstante" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "Transaktions-ID" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "Dateiname" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "Befehl" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "Bedingung" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "Anfrage" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "Formatname" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "Trennzeichen" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "Null-Zeichenkette" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "Quote-Zeichen" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "Escape-Zeichen" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "Kodierungsname" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "Zugriffsmethodentyp" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "Arg-Datentyp" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "Übergangsfunktion" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "Zustandsdatentyp" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "Zustandsdatengröße" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "Abschlussfunktion" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "Combine-Funktion" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "Serialisierungsfunktion" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "Deserialisierungsfunktion" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "Anfangswert" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "Moving-Übergangsfunktion" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "Moving-Inversfunktion" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "Moving-Zustandsdatentyp" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "Moving-Zustandsdatengröße" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "Moving-Abschlussfunktion" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "Moving-Anfangswert" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "Sortieroperator" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "oder die alte Syntax" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "Basistyp" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "Locale" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "Provider" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "Version" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "existierende_Sortierfolge" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "Quellkodierung" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "Zielkodierung" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "Vorlage" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "Kodierung" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "Strategie" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "ICU-Locale" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "Locale-Provider" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "Sortierfolgenversion" + +#: sql_help.c:2212 +msgid "oid" +msgstr "OID" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "Constraint" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "wobei Constraint Folgendes ist:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "Ereignis" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "Filtervariable" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "Filterwert" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "wobei Spalten-Constraint Folgendes ist:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "Rückgabetyp" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "Spaltentyp" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "Definition" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "Objektdatei" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "Linksymbol" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "SQL-Rumpf" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "Uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "Methode" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "Opklassen-Parameter" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "Handler" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "Inline-Handler" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "Valfunktion" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "Kommutator-Op" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "Umkehrungs-Op" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "Familienname" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "Storage-Typ" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "wobei Ereignis eins der folgenden sein kann:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "Schemaelement" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "Servertyp" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "Serverversion" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "FDW-Name" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "Statistikname" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "Statistikart" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "Subskriptionsname" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "Quelltabelle" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "Like-Option" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "und Like-Option Folgendes ist:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "Verzeichnis" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "Parser-Name" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "Quellkonfig" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "Startfunktion" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "Gettext-Funktion" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "Endfunktion" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "Lextypenfunktion" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "Headline-Funktion" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "Init-Funktion" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "Lexize-Funktion" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "From-SQL-Funktionsname" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "To-SQL-Funktionsname" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "verwiesener_Tabellenname" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "Übergangsrelationsname" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "Argumente" + +#: sql_help.c:3170 +msgid "label" +msgstr "Label" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "Untertyp" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "Untertyp-Operatorklasse" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "Canonical-Funktion" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "Untertyp-Diff-Funktion" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "Multirange-Typname" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "Eingabefunktion" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "Ausgabefunktion" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "Empfangsfunktion" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "Sendefunktion" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "Typmod-Eingabefunktion" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "Typmod-Ausgabefunktion" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "Analyze-Funktion" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "Subscript-Funktion" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "interne_Länge" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "Ausrichtung" + +#: sql_help.c:3189 +msgid "storage" +msgstr "Speicherung" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "wie_Typ" + +#: sql_help.c:3191 +msgid "category" +msgstr "Kategorie" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "bevorzugt" + +#: sql_help.c:3193 +msgid "default" +msgstr "Vorgabewert" + +#: sql_help.c:3194 +msgid "element" +msgstr "Element" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "Trennzeichen" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "sortierbar" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "With-Anfrage" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "Alias" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "From-Element" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "Cursor-Name" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "Ausgabeausdruck" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "Ausgabename" + +#: sql_help.c:3316 +msgid "code" +msgstr "Code" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "Parameter" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "Anweisung" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "Richtung" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "wobei Richtung eine der folgenden sein kann:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "Anzahl" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "Sequenzname" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "Argname" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "Argtyp" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "Large-Object-OID" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "fernes_Schema" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "lokales_Schema" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "Konfliktziel" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "Konfliktaktion" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "wobei Konfliktziel Folgendes sein kann:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "Indexspaltenname" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "Indexausdruck" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "Indexprädikat" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "und Konfliktaktion Folgendes sein kann:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "Sub-SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "Kanal" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "Sperrmodus" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "wobei Sperrmodus Folgendes sein kann:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "Zieltabellenname" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "Zielalias" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "Datenquelle" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "Verbundbedingung" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "When-Klausel" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "wobei Datenquelle Folgendes ist:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "Quelltabellenname" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "Quellanfrage" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "Quellalias" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "und When-Klausel Folgendes ist:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "Merge-Update" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "Merge-Delete" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "Merge-Insert" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "und Merge-Insert Folgendes ist:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "und Merge-Update Folgendes ist:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "und Merge-Delete Folgendes ist:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "Payload" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "alte_Rolle" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "neue_Rolle" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "Sicherungspunktsname" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "Gruppierelement" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "Fenstername" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "Fensterdefinition" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "Select" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "wobei From-Element Folgendes sein kann:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "Spaltenalias" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "Stichprobenmethode" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "Startwert" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "With-Anfragename" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "Spaltendefinition" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "Verbundtyp" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "Verbundspalte" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "Join-Using-Alias" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "und Gruppierelement eins der folgenden sein kann:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "und With-Anfrage ist:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "values" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "update" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "Search-Seq-Spaltenname" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "Cycle-Mark-Spaltenname" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "Cycle-Mark-Wert" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "Cycle-Mark-Standard" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "Cycle-Pfad-Spaltenname" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "neue_Tabelle" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "Snapshot-ID" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "Sortierausdruck" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "bricht die aktuelle Transaktion ab" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "ändert die Definition einer Aggregatfunktion" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "ändert die Definition einer Sortierfolge" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "ändert die Definition einer Zeichensatzkonversion" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "ändert eine Datenbank" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "definiert vorgegebene Zugriffsprivilegien" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "ändert die Definition einer Domäne" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "ändert die Definition eines Ereignistriggers" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "ändert die Definition einer Erweiterung" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "ändert die Definition eines Fremddaten-Wrappers" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "ändert die Definition einer Fremdtabelle" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "ändert die Definition einer Funktion" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "ändert Rollenname oder -mitglieder" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "ändert die Definition eines Index" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "ändert die Definition einer prozeduralen Sprache" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "ändert die Definition eines Large Object" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "ändert die Definition einer materialisierten Sicht" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "ändert die Definition eines Operators" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "ändert die Definition einer Operatorklasse" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "ändert die Definition einer Operatorfamilie" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "ändert die Definition einer Policy für Sicherheit auf Zeilenebene" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "ändert die Definition einer Prozedur" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "ändert die Definition einer Publikation" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "ändert eine Datenbankrolle" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "ändert die Definition einer Routine" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "ändert die Definition einer Regel" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "ändert die Definition eines Schemas" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "ändert die Definition eines Sequenzgenerators" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "ändert die Definition eines Fremdservers" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "ändert die Definition eines erweiterten Statistikobjekts" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "ändert die Definition einer Subskription" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "ändert einen Server-Konfigurationsparameter" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "ändert die Definition einer Tabelle" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "ändert die Definition eines Tablespace" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "ändert die Definition einer Textsuchekonfiguration" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "ändert die Definition eines Textsuchewörterbuchs" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "ändert die Definition eines Textsucheparsers" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "ändert die Definition einer Textsuchevorlage" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "ändert die Definition eines Triggers" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "ändert die Definition eines Typs" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "ändert die Definition einer Benutzerabbildung" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "ändert die Definition einer Sicht" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "sammelt Statistiken über eine Datenbank" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "startet einen Transaktionsblock" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "ruft eine Prozedur auf" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "erzwingt einen Checkpoint im Write-Ahead-Log" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "schließt einen Cursor" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "clustert eine Tabelle nach einem Index" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "definiert oder ändert den Kommentar eines Objektes" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "schließt die aktuelle Transaktion ab" + +#: sql_help.c:5434 +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:5440 +msgid "copy data between a file and a table" +msgstr "kopiert Daten zwischen einer Datei und einer Tabelle" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "definiert eine neue Zugriffsmethode" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "definiert eine neue Aggregatfunktion" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "definiert eine neue Typumwandlung" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "definiert eine neue Sortierfolge" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "definiert eine neue Kodierungskonversion" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "erzeugt eine neue Datenbank" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "definiert eine neue Domäne" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "definiert einen neuen Ereignistrigger" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "installiert eine Erweiterung" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "definiert einen neuen Fremddaten-Wrapper" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "definiert eine neue Fremdtabelle" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "definiert eine neue Funktion" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "definiert eine neue Datenbankrolle" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "definiert einen neuen Index" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "definiert eine neue prozedurale Sprache" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "definiert eine neue materialisierte Sicht" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "definiert einen neuen Operator" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "definiert eine neue Operatorklasse" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "definiert eine neue Operatorfamilie" + +#: sql_help.c:5560 +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:5566 +msgid "define a new procedure" +msgstr "definiert eine neue Prozedur" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "definiert eine neue Publikation" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "definiert eine neue Umschreiberegel" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "definiert ein neues Schema" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "definiert einen neuen Sequenzgenerator" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "definiert einen neuen Fremdserver" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "definiert erweiterte Statistiken" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "definiert eine neue Subskription" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "definiert eine neue Tabelle" + +#: sql_help.c:5626 sql_help.c:6148 +msgid "define a new table from the results of a query" +msgstr "definiert eine neue Tabelle aus den Ergebnissen einer Anfrage" + +#: sql_help.c:5632 +msgid "define a new tablespace" +msgstr "definiert einen neuen Tablespace" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "definiert eine neue Textsuchekonfiguration" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "definiert ein neues Textsuchewörterbuch" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "definiert einen neuen Textsucheparser" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "definiert eine neue Textsuchevorlage" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "definiert eine neue Transformation" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "definiert einen neuen Trigger" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "definiert einen neuen Datentyp" + +#: sql_help.c:5686 +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:5692 +msgid "define a new view" +msgstr "definiert eine neue Sicht" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "gibt einen vorbereiteten Befehl frei" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "definiert einen Cursor" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "löscht Zeilen einer Tabelle" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "verwirft den Sitzungszustand" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "führt einen anonymen Codeblock aus" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "entfernt eine Zugriffsmethode" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "entfernt eine Aggregatfunktion" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "entfernt eine Typumwandlung" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "entfernt eine Sortierfolge" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "entfernt eine Zeichensatzkonversion" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "entfernt eine Datenbank" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "entfernt eine Domäne" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "entfernt einen Ereignistrigger" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "entfernt eine Erweiterung" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "entfernt einen Fremddaten-Wrapper" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "entfernt eine Fremdtabelle" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "entfernt eine Funktion" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "entfernt eine Datenbankrolle" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "entfernt einen Index" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "entfernt eine prozedurale Sprache" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "entfernt eine materialisierte Sicht" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "entfernt einen Operator" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "entfernt eine Operatorklasse" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "entfernt eine Operatorfamilie" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "entfernt die einer Datenbankrolle gehörenden Datenbankobjekte" + +#: sql_help.c:5848 +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:5854 +msgid "remove a procedure" +msgstr "entfernt eine Prozedur" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "entfernt eine Publikation" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "entfernt eine Routine" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "entfernt eine Umschreiberegel" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "entfernt ein Schema" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "entfernt eine Sequenz" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "entfernt einen Fremdserverdeskriptor" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "entfernt erweiterte Statistiken" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "entfernt eine Subskription" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "entfernt eine Tabelle" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "entfernt einen Tablespace" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "entfernt eine Textsuchekonfiguration" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "entfernt ein Textsuchewörterbuch" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "entfernt einen Textsucheparser" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "entfernt eine Textsuchevorlage" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "entfernt eine Transformation" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "entfernt einen Trigger" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "entfernt einen Datentyp" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "entfernt eine Benutzerabbildung für einen Fremdserver" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "entfernt eine Sicht" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "führt einen vorbereiteten Befehl aus" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "zeigt den Ausführungsplan eines Befehls" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "liest Zeilen aus einer Anfrage mit einem Cursor" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "definiert Zugriffsprivilegien" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "importiert Tabellendefinitionen von einem Fremdserver" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "erzeugt neue Zeilen in einer Tabelle" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "hört auf eine Benachrichtigung" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "lädt eine dynamische Bibliotheksdatei" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "sperrt eine Tabelle" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "fügt Zeilen in eine Tabelle ein oder ändert oder löscht Zeilen einer Tabelle, abhängig von Bedingungen" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "positioniert einen Cursor" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "erzeugt eine Benachrichtigung" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "bereitet einen Befehl zur Ausführung vor" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "bereitet die aktuelle Transaktion für Two-Phase-Commit vor" + +#: sql_help.c:6076 +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:6082 +msgid "replace the contents of a materialized view" +msgstr "ersetzt den Inhalt einer materialisierten Sicht" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "baut Indexe neu" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "gibt einen zuvor definierten Sicherungspunkt frei" + +#: sql_help.c:6100 +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:6106 +msgid "remove access privileges" +msgstr "entfernt Zugriffsprivilegien" + +#: sql_help.c:6118 +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:6124 +msgid "roll back to a savepoint" +msgstr "rollt eine Transaktion bis zu einem Sicherungspunkt zurück" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "definiert einen neuen Sicherungspunkt in der aktuellen Transaktion" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "definiert oder ändert ein Security-Label eines Objektes" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "liest Zeilen aus einer Tabelle oder Sicht" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "ändert einen Konfigurationsparameter" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "setzt die Zeitsteuerung für Check-Constraints in der aktuellen Transaktion" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "setzt den aktuellen Benutzernamen der aktuellen Sitzung" + +#: sql_help.c:6172 +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:6178 +msgid "set the characteristics of the current transaction" +msgstr "setzt die Charakteristika der aktuellen Transaktion" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "zeigt den Wert eines Konfigurationsparameters" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "leert eine oder mehrere Tabellen" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "beendet das Hören auf eine Benachrichtigung" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "aktualisiert Zeilen einer Tabelle" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "säubert und analysiert eine Datenbank" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "berechnet eine Zeilenmenge" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 kann nur im nicht interaktiven Modus verwendet werden" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "konnte Logdatei »%s« nicht öffnen: %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Geben Sie »help« für Hilfe ein.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "konnte Ausgabeparameter »%s« nicht setzen" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Versuchen Sie »%s --help« für weitere Informationen." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "überflüssiges Kommandozeilenargument »%s« ignoriert" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "konnte eigene Programmdatei nicht finden" + +#: tab-complete.c:5955 +#, 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/el.po b/src/bin/psql/po/el.po new file mode 100644 index 0000000..a40390d --- /dev/null +++ b/src/bin/psql/po/el.po @@ -0,0 +1,6535 @@ +# Greek message translation file for psql +# Copyright (C) 2021 PostgreSQL Global Development Group +# This file is distributed under the same license as the psql (PostgreSQL) package. +# Georgios Kokolatos , 2021. +# +# +# +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-04-14 09:16+0000\n" +"PO-Revision-Date: 2023-04-14 15:45+0200\n" +"Last-Translator: Georgios Kokolatos \n" +"Language-Team: \n" +"Language: el\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 3.2.2\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "σφάλμα: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "προειδοποίηση: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "λεπτομέρεια: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "υπόδειξη: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "δεν ήταν δυνατή η αναγνώριση του τρέχοντος καταλόγου: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "μη έγκυρο δυαδικό αρχείο «%s»" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "δεν ήταν δυνατή η ανάγνωση του δυαδικού αρχείου «%s»" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "δεν βρέθηκε το αρχείο «%s» για να εκτελεστεί" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "δεν ήταν δυνατή η μετάβαση στον κατάλογο «%s»: %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "δεν ήταν δυνατή η ανάγνωση του συμβολικού συνδέσμου «%s»: %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() απέτυχε: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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 "δεν ήταν δυνατή η αναζήτηση ενεργής ταυτότητας χρήστη %ld: %s" + +#: ../../common/username.c:45 command.c:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Αίτηση ακύρωσης εστάλη\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "Δεν ήταν δυνατή η αποστολή αίτησης ακύρωσης: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu σειρά)" +msgstr[1] "(%lu σειρές)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Διακόπηκε\n" + +#: ../../fe_utils/print.c:3173 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "Δεν είναι δυνατή η προσθήκη κεφαλίδας σε περιεχόμενο πίνακα: υπέρβαση του πλήθους στηλών %d.\n" + +#: ../../fe_utils/print.c:3213 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "Δεν είναι δυνατή η προσθήκη κελιού σε περιεχόμενο πίνακα: υπέρβαση του συνολικού αριθμού κελιών %d.\n" + +#: ../../fe_utils/print.c:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "μη έγκυρη μορφή εξόδου (εσωτερικό σφάλμα): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "παραλείπεται η αναδρομική επέκταση της μεταβλητής «%s»" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "δεν ήταν δυνατή η αναζήτηση ID τοπικού χρήστη %d: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "δεν υπάρχει τοπικός χρήστης με ID %d" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "μη έγκυρη εντολή «%s»" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "Δοκιμάστε \\? για βοήθεια." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: επιπλέον παράμετρος «%s» αγνοείται" + +#: command.c:304 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "\\%s εντολή αγνοείται, χρησιμοποιείστε \\endif ή Ctrl-C για να εξέλθετε από το παρόν μπλοκ \\if" + +#: command.c:573 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "δεν ήταν δυνατή η ανάλληψη προσωπικού καταλόγου για τον χρήστη με ID %ld: %s" + +#: command.c:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: δεν ήταν δυνατή η μετάβαση στον κατάλογο «%s»: %m" + +#: command.c:617 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Αυτή τη στιγμή δεν είστε συνδεδεμένοι σε μία βάση δεδομένων.\n" + +#: command.c:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "μη ενδιάμεση μνήμη ερώτησης" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "μη έγκυρος αριθμός γραμμής «%s»" + +#: command.c:1203 +msgid "No changes" +msgstr "Καθόλου αλλάγες" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: μη έγκυρη ονομασία κωδικοποίησης ή δεν βρέθηκε η διεργασία μετατροπής" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "Δεν υπάρχει προηγούμενο σφάλμα." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: λείπει δεξιά παρένθεση" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: λείπει αναγκαία παράμετρος" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: δεν δύναται να προκύψει μετά \\else" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: δεν υπάρχει αντίστοιχο \\if" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: δεν δύναται να προκύψει μετά \\else" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: δεν υπάρχει αντίστοιχο \\if" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: δεν υπάρχει αντίστοιχο \\if" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "Άδεια ενδιάμεση μνήμη ερώτησης." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Εισάγετε νέο κωδικό πρόσβασης για το χρήστη «%s»: " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "Εισάγετε ξανά: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "Οι κωδικοί πρόσβασης δεν είναι ίδιοι." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: δεν ήταν δυνατή η ανάγνωση τιμής για την μεταβλητή" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "Μηδενισμός ενδιάμεσης μνήμη ερώτησης (καθάρισμα)." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "‘Εγραψε την ιστορία στο αρχείο «%s».\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: η ονομασία μεταβλητή περιβάλλοντος environment δεν δύναται να εμπεριέχει «=«" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "η ονομασία συνάρτησης είναι αναγκαία" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "η ονομασία ορισμού είναι αναγκαία" + +#: command.c:2593 +msgid "Timing is on." +msgstr "Η χρονομέτρηση είναι ενεργή." + +#: command.c:2595 +msgid "Timing is off." +msgstr "Η χρονομέτρηση είναι ανενεργή." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Κωδικός πρόσβασης: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Κωδικός πρόσβασης για τον χρήστη %s: " + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "Να μην οριστεί ξεχωριστά ο χρήστης, ο κεντρικός υπολογιστής, ή η θύρα όταν χρησιμοποιείται μια συμβολοσειρά σύνδεσης" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "Δεν υπάρχει σύνδεση βάσης δεδομένων για την επαναχρησιμοποίηση παραμέτρων" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "Κρατήθηκε η προηγούμενη σύνδεση" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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" +"=\n" + +#: command.c:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Τώρα είστε συνδεδεμένοι στη βάση δεδομένων «%s» ως χρήστης «%s».\n" + +#: command.c:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, διακομιστής %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "SSL σύνδεση (πρωτόκολλο: %s, cipher: %s, συμπίεση: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "άγνωστο" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "κλειστό" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "ανοικτό" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "GSSAPI-κρυπτογραφημένη σύνδεση\n" + +#: command.c:3717 +#, 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-bit δύναται να μην λειτουργούν ορθά. Δείτε την αναφορά στη σελίδα\n" +" psql με τίτλο «Σημειώσεις για χρήστες Windows» για πληροφορίες.\n" + +#: command.c:3822 +#, c-format +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number" +msgstr "η μεταβλητή περιβάλλοντος PSQL_EDITOR_LINENUMBER_ARG πρέπει να έχει οριστεί για να ορίσετε αριθμό σειράς" + +#: command.c:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "δεν μπόρεσε να εκκινήσει τον editor «%s»" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "δεν μπόρεσε να εκκινήσει το /bin/sh" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "δεν ήταν δυνατός ο εντοπισμός του προσωρινού καταλόγου %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "δεν ήταν δυνατό το άνοιγμα του προσωρινού αρχείου «%s»: %m" + +#: command.c:4266 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "\\pset: διφορούμενης συντόμευση «%s» ταιριάζει τόσο «%s» όσο «%s»" + +#: command.c:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: επιτρεπόμενες μορφές γραμμών είναι ascii, old-ascii, unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: επιτρεπόμενες μορφές Unicode border line είναι single, double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: επιτρεπόμενες μορφές Unicode column line είναι single, double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: επιτρεπόμενες μορφές Unicode header line είναι single, double" + +#: command.c:4393 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: csv_fieldsep πρέπει να είναι ένας χαρακτήρας ενός-byte" + +#: command.c:4398 +#, c-format +msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return" +msgstr "\\pset: csv_fieldsep δεν μπορεί να είναι διπλά εισαγωγικά, νέα γραμμή, ή carriage return" + +#: command.c:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: άγνωστη επιλογή: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "Border style είναι %d.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "Target width δεν είναι ορισμένο.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "Target width είναι %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Εκτεταμένη οθόνη είναι ενεργή.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "Εκτεταμένη οθόνη χρησιμοποιείται αυτόματα.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Εκτεταμένη οθόνη είναι ανενεργή.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "Διαχωριστής πεδίων CSV είναι ο «%s».\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Διαχωριστής πεδίων είναι το μηδενικό byte\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Διαχωριστής πεδίων είναι ο «%s».\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "Προκαθορισμένο υποσέλιδο είναι ενεργό.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "Προκαθορισμένο υποσέλιδο είναι ανενεργό.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "Η μορφή εξόδου είναι %s.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "Η μορφή γραμμής είναι %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Εμφάνιση Null είναι «%s».\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "Η κατά εντοπιότητα διορθωμένη μορφή αριθμητικής εξόδου είναι ενεργή.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "Η κατά εντοπιότητα διορθωμένη μορφή αριθμητικής εξόδου είναι ανενεργή.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Χρησιμοποιείται Pager για μεγάλη έξοδο.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "Χρησιμοποιείται Pager συνέχεια.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "Η χρήση Pager είναι ανενεργή.\n" + +#: command.c:4651 +#, 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 δεν θα χρησιμοποιηθεί για λιγότερο από %d γραμμή.\n" +msgstr[1] "Ο Pager δεν θα χρησιμοποιηθεί για λιγότερες από %d γραμμές.\n" + +#: command.c:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Διαχωριστής εγγραφών είναι το μηδενικό byte\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "Διαχωριστής εγγραφών είναι ο .\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Διαχωριστής εγγραφών είναι ο/η «%s».\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Τα χαρακτηριστικά του πίνακα είναι «%s».\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Χαρακτηριστικά πίνακα μη ορισμένα.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Ο τίτλος είναι «%s».\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "Ο τίτλος δεν είναι ορισμένος.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "Ενεργή όψη μόνο πλειάδων.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "Ανενεργή όψη μόνο πλειάδων.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Το στυλ περιγράμματος γραμμής Unicode είναι «%s».\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Το στυλ περιγράμματος στήλης Unicode είναι «%s».\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Το στυλ περιγράμματος γραμμής κεφαλίδας Unicode είναι «%s».\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: απέτυχε" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch δεν μπορεί να χρησιμοποιηθεί με κενή ερώτηση" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "δεν ήταν δυνατή η ρύθμιση του χρονομετρητή: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (κάθε %gs)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "" +"%s (κάθε %gs)\n" +"\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "δεν ήταν δυνατή η αναμονή για σήματα: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* ΕΡΩΤΗΣΗ **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "«%s.%s» δεν είναι μία όψη" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "δεν ήταν δυνατή η ανάλυση συστυχίας reloptions" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "δεν είναι δυνατή η διαφυγή χωρίς ενεργή σύνδεση" + +#: common.c:207 +#, c-format +msgid "shell command argument contains a newline or carriage return: \"%s\"" +msgstr "παράμετρος της εντολής κελύφους περιέχει μια νέα γραμμή ή μια επιστροφή μεταφοράς: «%s»" + +#: common.c:311 +#, c-format +msgid "connection to server was lost" +msgstr "χάθηκε η σύνδεση στον διακομιστή" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Χάθηκε η σύνδεση στον διακομιστή. Προσπάθεια επαναφοράς: " + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "Απέτυχε.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "Πέτυχε.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "μη αναμενόμενο PQresultStatus: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Χρόνος: %.3f ms\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Χρόνος: %.3f ms (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Χρόνος: %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, 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:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "Αυτή τη στιγμή δεν είστε συνδεδεμένοι σε μία βάση δεδομένων." + +#: common.c:654 +#, c-format +msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n" +msgstr "Ελήφθει ασύγχρονη ειδοποίηση «%s» με ωφέλιμο φορτίο «%s» από τη διαδικασία διακομιστή με %d PID.\n" + +#: common.c:657 +#, c-format +msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "Ελήφθει ασύγχρονη ειδοποίηση «%s» από τη διαδικασία διακομιστή με %d PID.\n" + +#: common.c:688 +#, c-format +msgid "could not print result table: %m" +msgstr "δεν μπόρεσε να εκτυπώσει τον πίνακα αποτελέσματος: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "δεν επιστράφηκαν σειρές για \\gset" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "περισσότερες από μία γραμμές επιστράφηκαν για \\gset" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "αγνοείται η προσπάθεια να τεθεί \\gset στην ειδικά διαμορφωμένη μεταβλητή «%s»" + +#: common.c:1043 +#, 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" +"***(πατήστε return για να συνεχίσετε ή εισάγετε x και return για να ακυρώσετε)********************\n" + +#: common.c:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "ΔΗΛΩΣΗ: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "μη αναμενόμενη κατάσταση συναλλαγής: %d" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "Στήλη" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Τύπος" + +#: common.c:1353 +#, 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 "δεν ήταν δυνατή η εκτέλεση stat στο αρχείο «%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:684 +msgid "aborted because of read failure" +msgstr "ματαιώθηκε λόγω σφάλματος κατά την ανάγνωση" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Σχήμα" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Όνομα" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Τύπος δεδομένων αποτελεσμάτων" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Τύπος δεδομένων παραμέτρων" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Περιγραφή" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Λίστα των συγκεντρωτικών συναρτήσεων" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει μεθόδους πρόσβασης." + +#: describe.c:168 +msgid "Index" +msgstr "Ευρετήριο" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Πίνακας" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Διαχειριστής" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Λίστα μεθόδων πρόσβασης" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Ιδιοκτήτης" + +#: describe.c:231 +msgid "Location" +msgstr "Τοποθεσία" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Επιλογές" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Μέγεθος" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Λίστα tablespaces" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df λαμβάνει μόνο [anptwS+] ως επιλογές" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "agg" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "window" + +#: describe.c:356 +msgid "proc" +msgstr "proc" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "func" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "trigger" + +#: describe.c:386 +msgid "immutable" +msgstr "immutable" + +#: describe.c:387 +msgid "stable" +msgstr "stable" + +#: describe.c:388 +msgid "volatile" +msgstr "volatile" + +#: describe.c:389 +msgid "Volatility" +msgstr "Προσωρινή" + +#: describe.c:397 +msgid "restricted" +msgstr "περιορισμένη" + +#: describe.c:398 +msgid "safe" +msgstr "ασφαλής" + +#: describe.c:399 +msgid "unsafe" +msgstr "ανασφαλής" + +#: describe.c:400 +msgid "Parallel" +msgstr "Παράλληλη" + +#: describe.c:405 +msgid "definer" +msgstr "definer" + +#: describe.c:406 +msgid "invoker" +msgstr "invoker" + +#: describe.c:407 +msgid "Security" +msgstr "Ασφάλεια" + +#: describe.c:412 +msgid "Language" +msgstr "Γλώσσα" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Πηγαίος κώδικας" + +#: describe.c:594 +msgid "List of functions" +msgstr "Λίστα συναρτήσεων" + +#: describe.c:657 +msgid "Internal name" +msgstr "Εσωτερική ονομασία" + +#: describe.c:659 +msgid "Elements" +msgstr "Στοιχεία" + +#: describe.c:711 +msgid "List of data types" +msgstr "Λίστα τύπων δεδομένων" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Τύπος αριστερής παραμέτρου" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Τύπος δεξιάς παραμέτρου" + +#: describe.c:816 +msgid "Result type" +msgstr "Τύπος αποτελέσματος" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Συνάρτηση" + +#: describe.c:902 +msgid "List of operators" +msgstr "Λίστα operators" + +#: describe.c:938 +msgid "Encoding" +msgstr "Κωδικοποίηση" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Σύνθεση" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "ICU εντοπιότητα" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Πάροχος εντοπιότητας" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Tablespace" + +#: describe.c:990 +msgid "List of databases" +msgstr "Λίστα βάσεων δεδομένων" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "πίνακας" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "όψη" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "υλοποιημένη όψη" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "ακολουθία" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "ξένος πίνακας" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "κατατμημένος πίνακας" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Προνόμια στήλης" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Πολιτικές" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Προνόμια πρόσβασης" + +#: describe.c:1188 +msgid "function" +msgstr "συνάρτηση" + +#: describe.c:1190 +msgid "type" +msgstr "τύπος" + +#: describe.c:1192 +msgid "schema" +msgstr "σχήμα" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Προεπιλεγμένες επιλογές δικαιωμάτων" + +#: describe.c:1259 +msgid "Object" +msgstr "Ατνικείμενο" + +#: describe.c:1273 +msgid "table constraint" +msgstr "περιορισμός πίνακα" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "περιορισμός πεδίου" + +#: describe.c:1321 +msgid "operator class" +msgstr "κλάση χειριστή" + +#: describe.c:1345 +msgid "operator family" +msgstr "οικογένεια χειριστή" + +#: describe.c:1368 +msgid "rule" +msgstr "περιγραφή" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Περιγραφές αντικειμένου" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "Δεν βρέθηκε καμία σχέση με όνομα «%s»." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "Δεν βρέθηκαν καθόλου σχέσεις." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "Δεν βρέθηκαν καθόλου σχέσεις με OID %s." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "Εκκίνηση" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Ελάχιστο" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Μέγιστο" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Επαύξηση" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "ναι" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "όχι" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "Κύκλοι;" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Προσωρινή μνήμη" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Ανήκει σε: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Ακολουθία για τη στήλη ταυτότητας: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Ακαταχώρητη ακολουθία «%s.%s»" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Ακολουθία «%s.%s»" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Ακαταχώρητος πίνακας «%s.%s»" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Πίνακας «%s.%s»" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Όψη «%s.%s»" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Ακαταχώρητη υλοποιημένη όψη «%s.%s»" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Υλοποιημένη όψη «%s.%s»" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Ακαταχώρητο ευρετήριο «%s.%s»" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Ευρετήριο «%s.%s»" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Ακαταχώρητο κατατετμημένο ευρετήριο «%s.%s»" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Κατατετμημένο ευρετήριο «%s.%s»" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST πίνακας «%s.%s»" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Συνθετικός τύπος «%s.%s»" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Ξενικός πίνακας «%s.%s»" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Ακαταχώρητος κατατετμημένος πίνακας «%s.%s»" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Κατατετμημένος πίνακας «%s.%s»" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Σύνθεση" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "Nullable" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "Προκαθορισμένο" + +#: describe.c:2029 +msgid "Key?" +msgstr "Κλειδί;" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Ορισμός" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "Επιλογές FDW" + +#: describe.c:2035 +msgid "Storage" +msgstr "Αποθήκευση" + +#: describe.c:2037 +msgid "Compression" +msgstr "Συμπίεση" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Στόχος στατιστικών" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Κατάτμηση του: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Κανένας περιορισμός κατάτμησης" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Περιορισμός κατάτμησης: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Κλειδί κατάτμησης: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Ιδιοκτήτης πίνακα «%s.%s»" + +#: describe.c:2309 +msgid "primary key, " +msgstr "κύριο κλειδί, " + +#: describe.c:2312 +msgid "unique" +msgstr "μοναδικό" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls μη διακριτά" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "για πίνακα «%s.%s»" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", πρόβλεψη (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", συσταδοποιημένο" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", άκυρο" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", αναβαλλόμενο" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", αρχικά αναβαλλόμενο" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", ταυτότητα πανομοιόματος" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Ευρετήρια:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Περιορισμοί ελέγχου:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Περιορισμοί ξενικών κλειδιών:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Αναφέρεται από:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Πολιτικές:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Πολιτικές (ενεργοποιημένη επιβολή ασφάλειας γραμμών):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Πολιτικές (ενεργοποιημένη ασφάλεια γραμμών): (καμία)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Πολιτικές (ενεργοποιημένη επιβολή ασφάλειας γραμμών): (καμία)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Πολιτικές (απενεργοποιημένη ασφάλεια γραμμών):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Αντικείμενα στατιστικών:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Κανόνες:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Απενεργοποιημένοι κανόνες:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Κανόνες πάντα σε χρήση:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Κανόνες σε χρήση μόνο στο ομοίωμα:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Δημοσιεύσεις:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Ορισμός όψης:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Triggers:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Απενεργοποιημένες triggers χρήστη:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Απενεργοποιημένες εσωτερικές triggers:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Triggers πάντα σε χρήση:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Triggers σε χρήση μόνο στο ομοίωμα:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Διακομιστής: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "FDW επιλογές: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Κληρονομεί" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Αριθμός κατατμήσεων: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "Αριθμός κατατμήσεων: %d (Χρησιμοποιείστε \\d+ για να τους απαριθμήσετε.)" + +#: describe.c:3424 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Αριθμός απογονικών πινάκων: %d (Χρησιμοποιείστε \\d+ για να τους απαριθμήσετε.)" + +#: describe.c:3431 +msgid "Child tables" +msgstr "Απογονικοί πίνακες" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Κατατμήσεις" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Τυποποιημένος πίνακας τύπου: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Ταυτότητα Ομοιόματος" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Έχει OIDs: ναι" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Μέθοδος πρόσβασης: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", χώρος πίνακα «%s»" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Λίστα ρόλων" + +#: describe.c:3670 +msgid "Role name" +msgstr "Όνομα ρόλου" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Χαρακτηριστικά" + +#: describe.c:3673 +msgid "Member of" +msgstr "Μέλος του" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Υπερχρήστης" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "Καμία κληρονιμιά" + +#: describe.c:3690 +msgid "Create role" +msgstr "Δημιουργήστε ρόλο" + +#: describe.c:3693 +msgid "Create DB" +msgstr "Δημιουργήστε βάση δεδομένων" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "Δεν δύναται σύνδεση" + +#: describe.c:3699 +msgid "Replication" +msgstr "Αντιγραφή" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Παράκαμψη RLS" + +#: describe.c:3712 +msgid "No connections" +msgstr "Καθόλου συνδέσεις" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d σύνδεση" +msgstr[1] "%d συνδέσεις" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Κωδικός πρόσβασης ενεργός μέχρι " + +#: describe.c:3777 +msgid "Role" +msgstr "Ρόλος" + +#: describe.c:3778 +msgid "Database" +msgstr "Βάση δεδομένων" + +#: describe.c:3779 +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: describe.c:3803 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "Δεν βρέθηκαν ρυθμίσεις για το ρόλο «%s» και τη βάση δεδομένων «%s»." + +#: describe.c:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "Δεν βρέθηκαν ρυθμίσεις για το ρόλο «%s»." + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "Δεν βρέθηκαν ρυθμίσεις." + +#: describe.c:3814 +msgid "List of settings" +msgstr "Λίστα ρυθμίσεων" + +#: describe.c:3885 +msgid "index" +msgstr "ευρετήριο" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "TOAST πίνακας" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "κατατετμημένο ευρετήριο" + +#: describe.c:3910 +msgid "permanent" +msgstr "μόνιμο" + +#: describe.c:3911 +msgid "temporary" +msgstr "προσωρινό" + +#: describe.c:3912 +msgid "unlogged" +msgstr "ακαταχώρητο" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Διάρκεια" + +#: describe.c:3929 +msgid "Access method" +msgstr "Μέθοδος πρόσβασης" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Λίστα σχέσεων" + +#: describe.c:4063 +#, c-format +msgid "The server (version %s) does not support declarative table partitioning." +msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει την δηλωτική δημιουργία κατατμήσεων πίνακα." + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "Λίστα κατατμημένων ευρετηρίων" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Λίστα κατατμημένων πινάκων" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Λίστα κατατμημένων σχέσεων" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Γονικό όνομα" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Μέγεθος φύλλου κατάτμησης" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Συνολικό μέγεθος" + +#: describe.c:4258 +msgid "Trusted" +msgstr "Εμπιστευόμενο" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Εσωτερική γλώσσα" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Πρόγραμμα χειρισμού κλήσεων" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Ελεκτής" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Ενσωματωμένος χειριστής" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Λίστα γλωσσών" + +#: describe.c:4346 +msgid "Check" +msgstr "Έλεγχος" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Λίστα πεδίων" + +#: describe.c:4424 +msgid "Source" +msgstr "Πηγή" + +#: describe.c:4425 +msgid "Destination" +msgstr "Προορισμός" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "Προεπιλογή;" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Λίστα μετατροπών" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Παράμετρος" + +#: describe.c:4498 +msgid "Value" +msgstr "Τιμή" + +#: describe.c:4505 +msgid "Context" +msgstr "Περιεχόμενο" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Λίστα ρυθμίσεων παραμέτρων" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Λίστα μη προεπιλεγμένων ρυθμίσεων παραμέτρων" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει εναύσματα συμβάντων." + +#: describe.c:4587 +msgid "Event" +msgstr "Συμβάν" + +#: describe.c:4589 +msgid "enabled" +msgstr "ενεγροποιημένο" + +#: describe.c:4590 +msgid "replica" +msgstr "ομοίωμα" + +#: describe.c:4591 +msgid "always" +msgstr "πάντα" + +#: describe.c:4592 +msgid "disabled" +msgstr "απενεργοποιημένο" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Ενεργοποιημένο" + +#: describe.c:4595 +msgid "Tags" +msgstr "Ετικέτες" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Λίστα ενεργοποιήσεων συμβάντων" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει εκτεταμένες στατιστικές." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Dependencies" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Λίστα εκτεταμένων στατιστικών" + +#: describe.c:4745 +msgid "Source type" +msgstr "Τύπος πηγής" + +#: describe.c:4746 +msgid "Target type" +msgstr "Τύπος προοριστμού" + +#: describe.c:4770 +msgid "in assignment" +msgstr "σε ανάθεση" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Έμμεσα;" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Λίστα casts" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Πάροχος" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Ντετερμινιστικό;" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Λίστα συρραφών" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Λίστα σχημάτων" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Λίστα αναλυτών αναζήτησης κειμένου" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "Δεν βρήκε ανάλυση αναζήτησης κειμένου με το όνομα «%s»." + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "Δεν βρήκε ανάλυση αναζήτησης κειμένου." + +#: describe.c:5245 +msgid "Start parse" +msgstr "Εκκίνηση ανάλυσης" + +#: describe.c:5246 +msgid "Method" +msgstr "Μέθοδος" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Λήψη επόμενου ενδεικτικού" + +#: describe.c:5252 +msgid "End parse" +msgstr "Τέλος ανάλυσης" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Λήψη επικεφαλίδας" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Λήψη τύπων ενδεικτικών" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Αναλυτής αναζήτης κειμένου «%s.%s»" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Αναλυτής αναζήτης κειμένου «%s»" + +#: describe.c:5289 +msgid "Token name" +msgstr "Ονομασία ενδεικτικού" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Τύποι ενδεικτικών αναλυτή «%s.%s»" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Τύποι ενδεικτικών αναλυτή «%s»" + +#: describe.c:5350 +msgid "Template" +msgstr "Πρότυπο" + +#: describe.c:5351 +msgid "Init options" +msgstr "Επιλογές εκκίνησης" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Λίστα λεξικών αναζήτησης κειμένου" + +#: describe.c:5411 +msgid "Init" +msgstr "Εκκίνηση" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Λίστα προτύπων αναζήτησης κειμένου" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Λίστα ρυθμίσεων αναζήτησης κειμένου" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "Δεν βρέθηκαν ρυθμίσεις αναζήτησης κειμένου με όνομα «%s»." + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "Δεν βρέθηκαν ρυθμίσεις αναζήτησης κειμένου." + +#: describe.c:5619 +msgid "Token" +msgstr "Ενδεικτικό" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Λεξικά" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Ρύθμιση αναζήτησης κειμένου «%s.%s»" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Ρύθμιση αναζήτησης κειμένου «%s»" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Αναλυτής: «%s.%s»" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Αναλυτής: «%s»" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Λίστα περιτύλιξης ξένων δεδομένων" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Περιτύλιξη ξένων δεδομένων" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Έκδοση" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Λίστα ξενικών διακομιστών" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Διακομιστής" + +#: describe.c:5825 +msgid "User name" +msgstr "Όνομα χρήστη" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Λίστα αντιστοιχιών χρηστών" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Λίστα ξενικών πινάκων" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Λίστα εγκατεστημένων επεκτάσεων" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "Δεν βρέθηκε καμία επέκταση με το όνομα «%s»." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "Δεν βρέθηκαν επεκτάσεις." + +#: describe.c:6075 +msgid "Object description" +msgstr "Περιγραφή αντικειμένου" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Αντικείμενα στην επέκταση «%s»" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "ακατάλληλο αναγνωρισμένο όνομα (πάρα πολλά διάστικτα ονόματα): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "οι παραπομπές μεταξύ βάσεων δεδομένων δεν είναι υλοποιημένες: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει δημοσιεύσεις." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Όλοι οι πίνακες" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Εισαγωγές" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Ενημερώσεις" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Διαγραφές" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Περικοπές" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Διαμέσου υπερχρήστη" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Λίστα δημοσιεύσεων" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "Δεν βρέθηκε καμία δημοσίευση με όνομα «%s»." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "Δεν βρέθηκε καμία δημοσίευση." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Δημοσίευση %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Πίνακες:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Πίνακες από σχήματα:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει συνδρομές." + +#: describe.c:6497 +msgid "Publication" +msgstr "Δημοσίευση" + +#: describe.c:6506 +msgid "Binary" +msgstr "Δυαδικό" + +#: describe.c:6507 +msgid "Streaming" +msgstr "Ροής" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Συναλλαγή δύο φάσεων" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Απενεργοποίηση μετά από σφάλμα" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Σύγχρονη δέσμευση" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Conninfo" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Παράλειψη LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Λίστα συνδρομών" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "ΑΜ" + +#: describe.c:6617 +msgid "Input type" +msgstr "Τύπος εισόδου" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Τύπος αποθήκευσης" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Κλάση χειριστή" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Οικογένεια χειριστή" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Λίστα οικογένειας κλάσεων" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Εφαρμόσιμοι τύποι" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Λίστα οικογενειών χειριστών" + +#: describe.c:6807 +msgid "Operator" +msgstr "Χειριστής" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Στρατηγική" + +#: describe.c:6809 +msgid "ordering" +msgstr "διάταξη" + +#: describe.c:6810 +msgid "search" +msgstr "αναζήτηση" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Στόχος" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "Διάταξη opfamily" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Λίστα χειριστών των οικογενειών χειριστών" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Καταχωρημένος αριστερός τύπος" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Καταχωρημένος δεξιός τύπος" + +#: describe.c:6904 +msgid "Number" +msgstr "Αριθμός" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Λίστα συναρτήσεων υποστήριξης των οικογενειών χειριστών" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "Μεγάλα αντικείμενα" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql είναι το διαδραστικό τερματικό της PostgreSQL.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Χρήση:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [ΕΠΙΛΟΓΗ]... [DBNAME [USERNAME]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Γενικές επιλογές:\n" + +#: help.c:84 +msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" +msgstr " -c, --command=COMMAND εκτέλεσε μόνο μία μονή εντολή (SQL ή εσωτερική) και έξελθε\n" + +#: help.c:85 +#, c-format +msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr " -d, --dbname=DBNAME ονομασία βάσης δεδομένων στην οποία θα συνδεθείτε (προεπιλογή: «%s»)\n" + +#: help.c:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=FILENAME εκτέλεσε εντολές από αρχείο, στη συνέχεια έξοδος\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list απαρίθμησε τις διαθέσιμες βάσεις δεδομένων, στη συνέχεια έξοδος\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version εμφάνισε πληροφορίες έκδοσης, στη συνέχεια έξοδος\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc να μην διαβαστεί το αρχείο εκκίνησης (~/.psqlrc)\n" + +#: help.c:94 +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-interactive)\n" +msgstr "" +" -1 («one»), --single-transaction\n" +" εκτέλεσε ως μεμονωμένη συναλλαγή (εάν δεν είναι διαδραστική)\n" + +#: help.c:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] εμφάνισε αυτής της βοήθειας και, στη συνέχεια, έξοδος\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands απαρίθμησε τις εντολές ανάποδης καθέτου και, στη συνέχεια, έξοδος\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables απαρίθμησε τις ειδικές μεταβλητές και, στη συνέχεια, έξοδος\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Επιλογές εισόδου και εξόδου:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all echo όλη την είσοδο από σενάριο\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors echo όλες τις αποτυχημένες εντολές\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries echo τις εντολές που αποστέλλονται στο διακομιστή\n" + +#: help.c:104 +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden εμφάνισε ερωτήματα που δημιουργούνται από εσωτερικές εντολές\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME στείλε την καταγραφή της συνεδρίας στο αρχείο\n" + +#: help.c:106 +msgid " -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr " -n, --no-readline απενεργοποιήσε την βελτιωμένη επεξεργασία γραμμής εντολών (readline)\n" + +#: help.c:107 +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr " -o, --output=FILENAME στείλε τα αποτελέσματα ερωτημάτων σε αρχείο (ή |pipe)\n" + +#: help.c:108 +msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgstr " -q, --quiet εκτέλεσε σιωπηλά (καθόλου μηνύματα, μόνο έξοδος ερωτημάτων)\n" + +#: help.c:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step λειτουργία μονού βήματος (επιβεβαίωσε κάθε ερώτημα)\n" + +#: help.c:110 +msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" +msgstr " -S, --single-line λειτουργία μονής γραμμής (το τέλος της γραμμής τερματίζει την εντολή SQL)\n" + +#: help.c:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Επιλογές μορφής εξόδου:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align λειτουργία εξόδου πίνακα μη ευθυγραμμισμένη λειτουργία εξόδου πίνακα\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv λειτουργία εξόδου πίνακα CSV (τιμές διαχωρισμένες με κόμματα)\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html λειτουργία εξόδου πίνακα HTML\n" + +#: help.c:119 +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:120 +msgid "" +" -R, --record-separator=STRING\n" +" record separator for unaligned output (default: newline)\n" +msgstr "" +" -R, --record-separator=STRING\n" +" διαχωριστικό εγγραφών για μη ευθυγραμμισμένη έξοδο (προεπιλογή: νέα γραμμή)\n" + +#: help.c:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only εκτύπωσε μόνο γραμμές\n" + +#: help.c:123 +msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" +msgstr " -T, --table-attr=TEXT όρισε τα χαρακτηριστικά ετικετών πίνακα HTML (π.χ. πλάτος, περίγραμμα)\n" + +#: help.c:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded ενεργοποίησε λειτουργία εκτεταμένης εξόδου πίνακα\n" + +#: help.c:125 +msgid "" +" -z, --field-separator-zero\n" +" set field separator for unaligned output to zero byte\n" +msgstr "" +" -z, --field-separator-zero\n" +" όρισε το διαχωριστικό πεδίου για μη ευθυγραμμισμένη έξοδο στο μηδενικό byte\n" + +#: help.c:127 +msgid "" +" -0, --record-separator-zero\n" +" set record separator for unaligned output to zero byte\n" +msgstr "" +" -0, --record-separator-zero\n" +" όρισε το διαχωριστικό εγγραφών για μη ευθυγραμμισμένη έξοδο στο μηδενικό byte\n" + +#: help.c:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Επιλογές σύνδεσης:\n" + +#: help.c:133 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" +msgstr " -h, --host=HOSTNAME κεντρικός υπολογιστής διακομιστή βάσης δεδομένων ή κατάλογος υποδοχών (προεπιλογή: «%s»)\n" + +#: help.c:134 +msgid "local socket" +msgstr "τοπική υποδοχή" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password να μην ζητείται ποτέ κωδικός πρόσβασης\n" + +#: help.c:143 +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password αναγκαστική προτροπή κωδικού πρόσβασης (πρέπει να συμβεί αυτόματα)\n" + +#: help.c:145 +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\n" +"εντολές) μέσα από το psql, ή συμβουλευτείτε την ενότητα psql στην τεκμηρίωση της PostgreSQL\n" +"\n" + +#: help.c:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Υποβάλετε αναφορές σφάλματων σε <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s αρχική σελίδα: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "Γενικά\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright εμφάνισε τους όρους χρήσης και διανομής της PostgreSQL\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr " \\crosstabview [COLUMNS] εκτέλεσε το ερώτημα και εμφάνισε τo αποτελέσμα σε όψη crosstab\n" + +#: help.c:194 +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose εμφάνισε το πιο πρόσφατο μήνυμα σφάλματος στη μέγιστη λεπτομέρεια\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(OPTIONS)] [FILE] εκτέλεσε το ερώτημα (και στείλε το αποτελέσματα σε αρχείο ή |pipe).\n" +" \\g χωρίς ορίσματα ισοδυναμεί με το ερωματικό\n" + +#: help.c:197 +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc περίγραψε το αποτέλεσμα του ερωτήματος, χωρίς να εκτελεστεί\n" + +#: help.c:198 +msgid " \\gexec execute query, then execute each value in its result\n" +msgstr " \\gexec εκτέλεσε το ερώτημα και, στη συνέχεια, εκτέλεσε κάθε τιμή του αποτελέσματός της\n" + +#: help.c:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [PREFIX] εκτέλεσε το ερώτημα και αποθήκευσε το αποτελέσμα σε psql μεταβλητές\n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr " \\gx [(OPTIONS)] [FILE] όμοια με \\g, αλλά επιβάλλει λειτουργία εκτεταμένης εξόδου\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q τερμάτισε psql\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] εκτέλεση του ερωτήματος κάθε SEC δευτερόλεπτα\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Βοήθεια\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] εμφάνισε την βοήθεια για τις εντολές ανάποδης καθέτου\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options εμφάνισε την βοήθεια για τις επιλογές εντολών γραμμής της psql\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables εμφάνισε την βοήθεια για τις ειδικές μεταβλητές\n" + +#: help.c:210 +msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" +msgstr " \\h [NAME] βοήθεια για την σύνταξη των εντολών SQL, * για όλες τις εντολών\n" + +#: help.c:213 +msgid "Query Buffer\n" +msgstr "Ενδιάμεση μνήμη Ερωτήματος\n" + +#: help.c:214 +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" +msgstr " \\e [FILE] [LINE] επεξεργάσου την ενδιάμεση μνήμη (ή αρχείο) ερωτήματος με εξωτερικό επεξεργαστή κειμένου\n" + +#: help.c:215 +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNCNAME [LINE]] επεξεργάσου τον ορισμό της συνάρτησης με εξωτερικό επεξεργαστή κειμένου\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ef [FUNCNAME [LINE]] επεξεργάσου τον ορισμό της όψης με εξωτερικό επεξεργαστή κειμένου\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p εμφάνισε τα περιοχόμενα της ενδιάμεσης μνήμης ερωτήματος\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r επαναφορά (αρχικοποίηση) της ενδιάμεσης μνήμης ερωτήματος\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [FILE] εμφάνισε το ιστορικό η αποθήκευσε το σε αρχείο\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILE γράψε την ενδιάμεση μνήμη ερωτήματος σε αρχείο\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "Είσοδος/Έξοδος\n" + +#: help.c:226 +msgid " \\copy ... perform SQL COPY with data stream to the client host\n" +msgstr " \\copy ... εκτέλεσε SQL COPY με ροή δεδομένων σε διακομιστή πελάτη\n" + +#: help.c:227 +msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n" +msgstr " \\echo [-n] [STRING] γράψε την στοιχειοσειρά στην τυπική έξοδο (-n για παράληψη νέας γραμμής)\n" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILE εκτέλεσε εντολές από αρχείο\n" + +#: help.c:229 +msgid " \\ir FILE as \\i, but relative to location of current script\n" +msgstr " \\ir FILE όπως \\i, αλλά σε σχέση με την τοποθεσία του τρέχοντος σεναρίου\n" + +#: help.c:230 +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [FILE] στείλε όλα τα αποτελέσματα ερωτημάτων σε αρχείο ή |pipe\n" + +#: help.c:231 +msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n" +msgstr " \\qecho [-n] [STRING] γράψε την στοιχειοσειρά στην ροή εξόδου \\o (-n για παράληψη νέας γραμμής)\n" + +#: help.c:232 +msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n" +msgstr " \\warn [-n] [STRING] γράψε την στοιχειοσειρά στο τυπικό σφάλμα (-n για παράληψη νέας γραμμής)\n" + +#: help.c:235 +msgid "Conditional\n" +msgstr "Υπό συνθήκη\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR έναρξη υπό συνθήκης μπλοκ\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR εναλλακτική λύση εντός του τρέχοντος μπλοκ υπό όρους\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else τελική εναλλακτική λύση εντός του τρέχοντος μπλοκ υπό όρους\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif τερματισμός μπλοκ υπό όρους\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Πληροφοριακά\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (επιλογές: S = εμφάνισε αντικείμενα συστήματος, + = επιπλέον λεπτομέριες)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] εμφάνισε πίνακες, όψεις και σειρές\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAME περιέγραψε πίνακα, όψη, σειρά, ή ευρετήριο\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [PATTERN] απαρίθμησε συγκεντρωτικά\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [PATTERN] απαρίθμησε μεθόδους πρόσβασης\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] απαρίθμησε κλάσεις χειριστή\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] απαρίθμησε οικογένειες χειριστών\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] απαρίθμησε χειριστές των οικογενειών χειριστών\n" + +#: help.c:251 +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] απαρίθμησε συναρτήσεις των οικογενειών χειριστών\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [PATTERN] απαρίθμησε πινακοχώρους\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [PATTERN] απαρίθμησε μετατροπές\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [PATTERN] απαρίθμησε παραμέτρους ρύθμισης\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [PATTERN] απαρίθμησε casts\n" + +#: help.c:256 +msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr " \\dd[S] [PATTERN] εμφάνισε περιγραφές αντικειμένων που δεν φαίνονται πουθενά αλλού\n" + +#: help.c:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [PATTERN] απαρίθμησε πεδία\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [PATTERN] απαρίθμησε προεπιλεγμένα προνόμια\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATTERN] απαρίθμησε ξενικούς πίνακες\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [PATTERN] απαρίθμησε ξενικούς διακομιστές\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [PATTERN] απαρίθμησε ξενικούς πίνακες\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [PATTERN] απαρίθμησε αντιστοιχίες χρηστών\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [PATTERN] απαρίθμησε περιτυλίξεις ξένων δεδομένων\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN …]]\n" +" απαρίθμησε συναρτήσεις [μόνο agg/normal/procedures/trigger/window]\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [PATTERN] απαρίθμησε ρυθμίσεις αναζήτησης κειμένου\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [PATTERN] απαρίθμησε λεξικά αναζήτησης κειμένου\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [PATTERN] απαρίθμησε αναλυτές αναζήτησης κειμένου\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [PATTERN] απαρίθμησε πρότυπα αναζήτησης κειμένου\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [PATTERN] απαρίθμησε ρόλους\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [PATTERN] απαρίθμησε ευρετήρια\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] απαρίθμησε μεγάλα αντικείμενα, όπως \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATTERN] απαρίθμησε διαδικαστικές γλώσσες\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [PATTERN] απαρίθμησε υλοποιημένες όψεις\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATTERN] απαρίθμησε σχήματα\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" απαρίθμησε χειριστές\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [PATTERN] απαρίθμησε συρραφές\n" + +#: help.c:279 +msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr " \\dp [PATTERN] απαρίθμησε προνόμια πρόσβασης πίνακα, όψης και σειράς\n" + +#: help.c:280 +msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n" +msgstr " \\dP[itn+] [PATTERN] απαρίθμησε διαχωρισμένες σχέσεις [μόνο ευρετήριο/πίνακα] [n=nested]\n" + +#: help.c:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr " \\drds [ROLEPTRN [DBPTRN]] απαρίθμησε ρυθμίσεις ρόλου ανά βάση δεδομένων\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [PATTERN] απαρίθμησε δημοσιεύσεις αναπαραγωγής\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [PATTERN] απαρίθμησε συνδρομές αναπαραγωγής\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [PATTERN] απαρίθμησε ακολουθίες\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [PATTERN] απαρίθμησε πίνακες\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [PATTERN] απαρίθμησε τύπους δεδομένων\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [PATTERN] απαρίθμησε ρόλους\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [PATTERN] απαρίθμησε όψεις\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATTERN] απαρίθμησε προεκτάσεις\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [PATTERN] απαρίθμησε εναύσματα συμβάντων\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [PATTERN] απαρίθμησε εναύσματα συμβάντων\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [PATTERN] απαρίθμησε βάσεις δεδομένων\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNCNAME εμφάνισε τον ορισμό μίας συνάρτησης\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] VIEWNAME εμφάνισε τον ορισμό μίας όψης\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [PATTERN] όπως \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "Μεγάλα αντικείμενα\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export LOBOID FILE εγγραφή μεγάλου αντικειμένου σε αρχείο\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import FILE [COMMENT]\n" +" ανάγνωση μεγάλων αντικειμένων από αρχείο\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] απαρίθμησε μεγάλα αντικείμενα\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID διαγραφή μεγάλου αντικειμένου\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Μορφοποίηση\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a εναλλαγή μεταξύ μη ευθυγραμμισμένης και ευθυγραμμισμένης μορφής εξόδου\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C [STRING] όρισε τίτλο πίνακα, ή αναίρεσε εάν κενό\n" + +#: help.c:309 +msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgstr " \\f [STRING] εμφάνισε ή όρισε τον διαχωριστή πεδίου για μη ευθυγραμμισμένη έξοδο ερωτήματος\n" + +#: help.c:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H εναλλαγή λειτουργίας εξόδου HTML (επί του παρόντος %s)\n" + +#: help.c:312 +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:319 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] εμφάνισε μόνο γραμμές (επί του παρόντος %s)\n" + +#: help.c:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [STRING] ορίστε χαρακτηριστικά ετικέτας
HTML, ή αναιρέστε εάν δεν υπάρχουν\n" + +#: help.c:322 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr " \\x [on|off|auto] εναλλαγή τιμής διευρυμένης εξόδου (επί του παρόντος %s)\n" + +#: help.c:323 +msgid "auto" +msgstr "αυτόματο" + +#: help.c:326 +msgid "Connection\n" +msgstr "Σύνδεση\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo εμφάνιση πληροφοριών σχετικά με την παρούσα σύνδεση\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [ENCODING] εμφάνισε ή όρισε την κωδικοποίηση του πελάτη\n" + +#: help.c:336 +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [USERNAME] άλλαξε με ασφάλεια τον κωδικό πρόσβασης ενός χρήστη\n" + +#: help.c:339 +msgid "Operating System\n" +msgstr "Λειτουργικό σύστημα\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIR] άλλαξε τον παρόν κατάλογο εργασίας\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\setenv NAME [VALUE] λήψη μεταβλητής περιβάλλοντος\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAME [VALUE] όρισε ή αναίρεσε μεταβλητή περιβάλλοντος\n" + +#: help.c:343 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] εναλλαγή χρονισμού των εντολών (επί του παρόντος %s)\n" + +#: help.c:345 +msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" +msgstr " \\! [COMMAND] εκτέλεσε εντολή σε κέλυφος ή ξεκίνησε διαδραστικό κέλυφος\n" + +#: help.c:348 +msgid "Variables\n" +msgstr "Μεταβλητές\n" + +#: help.c:349 +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [TEXT] NAME προέτρεψε τον χρήστη να ορίσει εσωτερική μεταβλητή\n" + +#: help.c:350 +msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" +msgstr " \\set [NAME [VALUE]] όρισε εσωτερική μεταβλητή, ή απαρίθμησέ τες όλες εάν δεν υπάρχουν παράμετροι\n" + +#: help.c:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NAME αναίρεσε (διέγραψε) εσωτερική μεταβλητή\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"Απαρίθμηση των ειδικά επεξεργασμένων μεταβλητών\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "psql μεταβλητές:\n" + +#: help.c:394 +msgid "" +" psql --set=NAME=VALUE\n" +" or \\set NAME VALUE inside psql\n" +"\n" +msgstr "" +" psql --set=NAME=VALUE\n" +" ή \\set NAME VALUE μέσα σε psql\n" +"\n" + +#: help.c:396 +msgid "" +" AUTOCOMMIT\n" +" if set, successful SQL commands are automatically committed\n" +msgstr "" +" AUTOCOMMIT\n" +" εφόσον ορισμένο, επιτυχημένες εντολές SQL ολοκληρώνονται αυτόματα\n" + +#: help.c:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" ονομασία της συνδεδεμένης βάσης δεδομένων\n" + +#: help.c:403 +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" +"\n" + +#: help.c:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" τρέχουσα κωδικοποίηση χαρακτήρων του προγράμματος-πελάτη\n" + +#: help.c:411 +msgid "" +" ERROR\n" +" true if last query failed, else false\n" +msgstr "" +" ERROR\n" +" αληθές εάν το τελευταίο ερώτημα απέτυχε, διαφορετικά ψευδές\n" + +#: help.c:413 +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:415 +msgid "" +" HIDE_TABLEAM\n" +" if set, table access methods are not displayed\n" +msgstr "" +" HIDE_TABLEAM\n" +" εάν έχει οριστεί, δεν εμφανίζονται μέθοδοι πρόσβασης πίνακα\n" + +#: help.c:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" εάν έχει οριστεί, δεν εμφανίζονται μέθοδοι συμπίεσης\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" ελέγχει το ιστορικό εντολών [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr "" +" HISTFILE\n" +" όνομα αρχείου που χρησιμοποιείται για την αποθήκευση του ιστορικού εντολών\n" + +#: help.c:423 +msgid "" +" HISTSIZE\n" +" maximum number of commands to store in the command history\n" +msgstr "" +" HISTSIZE\n" +" μέγιστος αριθμός εντολών που θα αποθηκευτούν στο ιστορικό εντολών\n" + +#: help.c:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" ο συνδεδεμένος κεντρικός υπολογιστής διακομιστή βάσης δεδομένων\n" + +#: help.c:427 +msgid "" +" IGNOREEOF\n" +" number of EOFs needed to terminate an interactive session\n" +msgstr "" +" IGNOREEOF\n" +" αριθμός των EOF που απαιτούνται για τον τερματισμό μιας διαδραστικής συνεδρίας\n" + +#: help.c:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" τιμή του τελευταίου επηρεασμένου OID\n" + +#: help.c:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" σταμάτησε την ομαδική εκτέλεση μετά από σφάλμα\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" θύρα διακομιστή της τρέχουσας σύνδεσης\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" ορίζει την τυπική προτροπή psql\n" + +#: help.c:442 +msgid "" +" PROMPT2\n" +" specifies the prompt used when a statement continues from a previous line\n" +msgstr "" +" PROMPT2\n" +" καθορίζει την προτροπή που χρησιμοποιείται όταν μια πρόταση συνεχίζεται από προηγούμενη γραμμή\n" + +#: help.c:444 +msgid "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3\n" +" καθορίζει την προτροπή που χρησιμοποιείται κατά την διάρκεια COPY … FROM STDIN\n" + +#: help.c:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" σιωπηλή εκτέλεση(όμοια με την επιλογή -q)\n" + +#: help.c:448 +msgid "" +" ROW_COUNT\n" +" number of rows returned or affected by last query, or 0\n" +msgstr "" +" ROW_COUNT\n" +" αριθμός των επηρεασμένων ή επιστρεφομένων σειρών του τελευταίου ερωτήματος, ή 0\n" + +#: help.c:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" εμφάνισε όλα τα αποτελέσματα ερωτημάτων (\\;) αντί μόνο του τελευταίου\n" + +#: help.c:455 +msgid "" +" SHOW_CONTEXT\n" +" controls display of message context fields [never, errors, always]\n" +msgstr "" +" SHOW_CONTEXT\n" +" ελέγχει την εμφάνιση των πεδίων του περιεχομένου μηνύματος [never, errors, always]\n" + +#: help.c:457 +msgid "" +" SINGLELINE\n" +" if set, end of line terminates SQL commands (same as -S option)\n" +msgstr "" +" SINGLELINE\n" +" εάν έχει οριστεί, το τέλος γραμμής ολοκληρώνει τα ερωτήματα SQL (όμοια με την επιλογή -S)\n" + +#: help.c:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" λειτουργία μονού-βήματος(όμοια με την επιλογή -s)\n" + +#: help.c:461 +msgid "" +" SQLSTATE\n" +" SQLSTATE of last query, or \"00000\" if no error\n" +msgstr "" +" SQLSTATE\n" +" SQLSTATE του τελευταίου ερωτήματος, ή «00000» εάν δεν υπήρξαν σφάλματα\n" + +#: help.c:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" ο τρέχων συνδεδεμένος χρήστης βάσης δεδομένων\n" + +#: help.c:465 +msgid "" +" VERBOSITY\n" +" controls verbosity of error reports [default, verbose, terse, sqlstate]\n" +msgstr "" +" VERBOSITY\n" +" ελέγχει την περιφραστικότητα των αναφορών σφαλμάτων [default, verbose, terse, sqlstate]\n" + +#: help.c:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Ρυθμίσεις εμφάνισης:\n" + +#: help.c:474 +msgid "" +" psql --pset=NAME[=VALUE]\n" +" or \\pset NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" psql --set=NAME=VALUE\n" +" ή \\set NAME VALUE μέσα σε συνεδρία psql\n" +"\n" + +#: help.c:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" στυλ περιγράμματος (αριθμός)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" πλάτος προορισμού κατά την εμφάνιση αναδιπλωμένης μορφής\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (ή x)\n" +" διευρυμένη έξοδος [on, off, auto]\n" + +#: help.c:482 +#, c-format +msgid "" +" fieldsep\n" +" field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep\n" +" διαχωριστικό πεδίου σε μορφή μή ευθυγραμισμένης εξόδου (προκαθοριμένο «%s»)\n" + +#: help.c:485 +msgid "" +" fieldsep_zero\n" +" set field separator for unaligned output to a zero byte\n" +msgstr "" +" fieldsep_zero\n" +" ορίζει το διαχωριστικό πεδίου για τη μορφή μη ευθυγραμμισμένης εξόδου στο μηδενικό byte\n" + +#: help.c:487 +msgid "" +" footer\n" +" enable or disable display of the table footer [on, off]\n" +msgstr "" +" footer\n" +" ενεργοποιεί ή απενεργοποιεί την εμφάνιση του υποσέλιδου σε πίνακα [on, off]\n" + +#: help.c:489 +msgid "" +" format\n" +" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr "" +" format\n" +" ορίζει τη μορφή εξόδου [unaligned, aligned, wrapped, html, asciidoc, …]\n" + +#: help.c:491 +msgid "" +" linestyle\n" +" set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr "" +" linestyle\n" +" ορίζει τη μορφή περιγράμματος [ascii, old-ascii, unicode]\n" + +#: help.c:493 +msgid "" +" null\n" +" set the string to be printed in place of a null value\n" +msgstr "" +" null\n" +" ορίζει τη συμβολοσειρά που θα εκτυπωθεί στη θέση κενής τιμής\n" + +#: help.c:495 +msgid "" +" numericlocale\n" +" enable display of a locale-specific character to separate groups of digits\n" +msgstr "" +" numericlocale\n" +" ενεργοποίηση εμφάνισης ενός χαρακτήρα εντοπιότητας για το διαχωρισμό ομάδων ψηφίων\n" + +#: help.c:497 +msgid "" +" pager\n" +" control when an external pager is used [yes, no, always]\n" +msgstr "" +" Pager\n" +" ελέγχει πότε χρησιμοποιείται εξωτερικός σελιδοποιητής [yes, no, always]\n" + +#: help.c:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" διαχωριστικό εγγραφών (σειράς) κατά την έξοδο μη ευθυγραμμισμένης μορφής\n" + +#: help.c:501 +msgid "" +" recordsep_zero\n" +" set record separator for unaligned output to a zero byte\n" +msgstr "" +" recordsep_zero\n" +" ορίζει το διαχωριστικό εγγραφών στο μηδενικό byte κατά την έξοδο μη ευθυγραμμισμένης μορφής\n" + +#: help.c:503 +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" +" καθορίζει τα χαρακτηριστικά ενός πίνακα tag σε μορφή HTML, ή καθορίζει\n" +" αναλογικό πλάτος στηλών για τύπους δεδομένων με αριστερή στοίχιση σε μορφή latex-longtable\n" + +#: help.c:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" ορίζει τον τίτλο πίνακα για χρήση στους επόμενα εκτυπωμένους πίνακες\n" + +#: help.c:508 +msgid "" +" tuples_only\n" +" if set, only actual table data is shown\n" +msgstr "" +" tuples_only\n" +" εάν έχει ορισθεί, τότε εμφανίζονται μόνο τα δεδομένα πίνακα\n" + +#: help.c:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Μεταβλητές περιβάλλοντος:\n" + +#: help.c:519 +msgid "" +" NAME=VALUE [NAME=VALUE] psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" NAME=VALUE [NAME=VALUE] psql …\n" +" ή \\setenv ΟΝΟΜΑ [ΤΙΜΗ] μέσα σε συνεδρία psql\n" +"\n" + +#: help.c:521 +msgid "" +" set NAME=VALUE\n" +" psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" ορίστε NAME=VALUE\n" +" psql ...\n" +" ή \\setenv NAME [VALUE] μέσα σε συνεδρία psql\n" +"\n" + +#: help.c:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" αριθμός στηλών για αναδιπλωμένη μορφή\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" όμοια με την παράμετρο σύνδεσης application_name\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" όμοια με την παράμετρο σύνδεσης dbname\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" όμοια με την παράμετρο της σύνδεσης κεντρικού υπολογιστή\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" αρχείο κωδικών πρόσβασης\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" κωδικός πρόσβασης σύνδεσης (δεν συνιστάται)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" όμοια με την παράμετρο σύνδεσης θύρας\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" όμοια με την παράμετρο σύνδεσης χρήστη\n" + +#: help.c:540 +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:542 +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:544 +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" εναλλακτική τοποθεσία για το αρχείο ιστορικού εντολών\n" + +#: help.c:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" όνομα του εξωτερικού προγράμματος σελιδοποίησης\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" όνομα του εξωτερικού προγράμματος σελιδοποίησης για \\watch\n" + +#: help.c:552 +msgid "" +" PSQLRC\n" +" alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC\n" +" εναλλακτική τοποθεσία για το αρχείο .psqlrc του χρήστη\n" + +#: help.c:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" shell που χρησιμοποιείται κατά την εντολή \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" κατάλογος για προσωρινά αρχεία\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Διαθέσιμη βοήθεια:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "δεν ήταν δυνατή η αποθήκευση του ιστορικού στο αρχείο «%s»: %m" + +#: input.c:535 +#, 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: άγνωστη κατάσταση συναλλαγής" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: με διαφυγή" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Χρησιμοποιείστε «\\q» για να εξέλθετε %s.\n" + +#: mainloop.c:214 +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:295 +msgid "Use \\? for help or press control-C to clear the input buffer." +msgstr "Χρησιμοποιείστε \\? για βοήθεια ή πληκτρολογήστε control-C για να αδειάσετε την ενδιάμεση μνήμη εισόδου." + +#: mainloop.c:297 +msgid "Use \\? for help." +msgstr "Χρησιμοποιείστε \\? για βοήθεια." + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Χρησιμοποιείτε psql, τη διασύνδεση γραμμής εντολών της PostgreSQL." + +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Χρησιμοποιείστε «\\q» για να εξέλθετε." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Πληκτρολογείστε control-D για να εξέλθετε." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Πληκτρολογείστε control-D για να εξέλθετε." + +#: mainloop.c:459 mainloop.c:618 +#, c-format +msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "το ερώτημα παραβλέφθηκε· χρησιμοποιήστε το \\endif ή το Ctrl-C για να κλείσετε το τρέχον υπό συνθήκη \\if μπλοκ" + +#: mainloop.c:636 +#, c-format +msgid "reached EOF without finding closing \\endif(s)" +msgstr "έφτασε στο EOF χωρίς να βρεθούν τελικά \\endif(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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "ονομασία" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "aggregate_signature" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "new_name" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "new_owner" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "new_schema" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +msgid "where aggregate_signature is:" +msgstr "όπου aggregate_signature είναι:" + +#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "argmode" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "argname" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "argtype" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "επιλογή" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "όπου option μπορεί να είναι:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "allowconn" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "connlimit" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "istemplate" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "new_tablespace" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "configuration_parameter" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "value" + +#: sql_help.c:200 +msgid "target_role" +msgstr "target_role" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "schema_name" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "abbreviated_grant_or_revoke" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "όπου abbreviated_grant_or_revoke είναι ένα από:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "role_name" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "expression" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "domain_constraint" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "constraint_name" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "new_constraint_name" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "new_version" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "member_object" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "όπου member_object είναι:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "object_name" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "aggregate_name" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "source_type" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "source_type" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "function_name" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "operator_name" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "source_type" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "source_type" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "source_type" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "procedure_name" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "routine_name" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "type_name" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "lang_name" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "και aggregate_signature είναι:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "handler_function" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "validator_function" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "action" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "column_name" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "new_column_name" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "όπου action είναι ένα από:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "data_type" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "collation" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "column_constraint" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "integer" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "attribute_option" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "table_constraint" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "trigger_name" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "parent_table" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "extension_name" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "execution_cost" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "result_rows" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "support_function" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "role_specification" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "user_name" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "όπου role_specification μπορεί να είναι:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "group_name" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "group_name" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "index_name" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "storage_parameter" + +#: sql_help.c:607 +msgid "column_number" +msgstr "column_number" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "large_object_oid" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "compression_method" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "new_access_method" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "join_proc" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "strategy_number" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "op_type" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "index_name" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "support_number" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "argument_type" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "table_name" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "using_expression" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "check_expression" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "publication_object" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "publication_parameter" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "όπου publication_object είναι ένα από:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "password" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "timestamp" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "database_name" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "increment" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "minvalue" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "maxvalue" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "start" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "restart" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "cache" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "new_target" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "conninfo" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "publication_name" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "publication_option" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "refresh_option" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "subscription_parameter" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "skip_option" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "partition_name" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "partition_bound_spec" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "sequence_options" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "sequence_option" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "table_constraint_using_index" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "rewrite_rule_name" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "και partition_bound_spec είναι:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "partition_bound_expr" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "numeric_literal" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "και column_constraint είναι:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "default_expr" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "generation_expr" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "index_parameters" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "reftable" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "refcolumn" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "referential_action" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "και table_constraint είναι:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "exclude_element" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "operator" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "predicate" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "και table_constraint_using_index είναι:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "index_parameters για περιορισμούς UNIQUE, PRIMARY KEY και EXCLUDE είναι:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "exclude_element σε έναν περιορισμό τύπου EXCLUDE είναι:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "opclass" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "referential_action σε ένα περιορισμό FOREIGN KEY/REFERENCES είναι:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "tablespace_option" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "token_type" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "dictionary_name" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "old_dictionary" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "new_dictionary" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "attribute_name" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "new_attribute_name" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "new_enum_value" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "neighbor_enum_value" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "existing_enum_value" + +#: sql_help.c:1589 +msgid "property" +msgstr "property" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "server_name" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "view_option_name" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "view_option_value" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "table_and_columns" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "όπου option μπορεί να είναι ένα από:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "και table_and_columns είναι:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "transaction_mode" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "όπου transaction_mode είναι ένα από:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "argument" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "relation_name" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "domain_name" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "policy_name" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "rule_name" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "string_literal" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "transaction_id" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "filename" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "command" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "condition" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "query" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "format_name" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "delimiter_character" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "null_string" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "quote_character" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "escape_character" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "encoding_name" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "access_method_type" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "arg_data_type" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "sfunc" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "state_data_type" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "state_data_size" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "ffunc" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "combinefunc" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "serialfunc" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "deserialfunc" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "initial_condition" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "msfunc" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "minvfunc" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "mstate_data_type" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "mstate_data_size" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "mffunc" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "minitial_condition" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "sort_operator" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "ή την παλαιά σύνταξη" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "base_type" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "locale" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "provider" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "version" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "existing_collation" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "source_encoding" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "dest_encoding" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "template" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "dest_encoding" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "strategy" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "icu_locale" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "locale_provider" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "collation_version" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "constraint" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "όπου constraint είναι:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "event" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "filter_variable" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "filter_value" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "όπου column_constraint είναι:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "rettype" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "column_type" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "definition" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "obj_file" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "link_symbol" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "sql_body" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "method" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "opclass_parameter" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "call_handler" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "inline_handler" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "valfunction" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "family_name" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "storage_type" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "όπου event μπορεί να είναι ένα από:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "schema_element" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "server_type" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "server_version" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "fdw_name" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "statistics_name" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "statistics_kind" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "subscription_name" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "source_table" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "like_option" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "και like_option είναι:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "directory" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "parser_name" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "source_config" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "start_function" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "gettoken_function" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "end_function" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "lextypes_function" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "headline_function" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "init_function" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "lexize_function" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "from_sql_function_name" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "to_sql_function_name" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "referenced_table_name" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "transition_relation_name" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "arguments" + +#: sql_help.c:3170 +msgid "label" +msgstr "label" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "subtype" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "subtype_operator_class" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "canonical_function" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "subtype_diff_function" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "multirange_type_name" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "input_function" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "output_function" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "receive_function" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "send_function" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "type_modifier_input_function" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "type_modifier_output_function" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "analyze_function" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "subscript_function" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "internallength" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "alignment" + +#: sql_help.c:3189 +msgid "storage" +msgstr "storage" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "like_type" + +#: sql_help.c:3191 +msgid "category" +msgstr "category" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "preferred" + +#: sql_help.c:3193 +msgid "default" +msgstr "default" + +#: sql_help.c:3194 +msgid "element" +msgstr "element" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "delimiter" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "collatable" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "with_query" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "alias" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "from_item" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "cursor_name" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "output_expression" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "output_name" + +#: sql_help.c:3316 +msgid "code" +msgstr "code" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "parameter" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "statement" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "direction" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "όπου κατεύθυνση μπορεί να είναι μία από:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "count" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "sequence_name" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "arg_name" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "arg_type" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "remote_schema" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "local_schema" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "conflict_target" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "conflict_action" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "όπου conflict_target μπορεί να είναι ένα από:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "index_column_name" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "index_expression" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "index_predicate" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "και conflict_action είναι ένα από:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "sub-SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "channel" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "lockmode" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "όπου lockmode είναι ένα από:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "table_table_name" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "target_alias" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "data_source" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "join_condition" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "when_clause" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "όπου data_source είναι:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "source_table_name" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "source_query" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "source_alias" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "και when_clause είναι:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "merge_update" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "merge_delete" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "merge_insert" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "και merge_insert είναι:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "και merge_update είναι:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "και merge_delete είναι:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "payload" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "old_role" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "new_role" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "savepoint_name" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "grouping_element" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "window_name" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "window_definition" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "select" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "όπου from_item μπορεί να είναι ένα από:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "column_alias" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "sampling_method" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "seed" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "with_query_name" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "column_definition" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "join_type" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "join_column" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "join_using_alias" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "και grouping_element μπορεί να είναι ένα από:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "και with_query είναι:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "values" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "update" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "search_seq_col_name" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "cycle_mark_col_name" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "cycle_mark_value" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "cycle_mark_default" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "cycle_path_col_name" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "new_table" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "snapshot_id" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "sort_expression" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "ματαιώστε την τρέχουσα συναλλαγή" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "αλλάξτε τον ορισμό μιας συνάρτησης συγκεντρωτικών αποτελεσμάτων" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "αλλάξτε τον ορισμό συρραφής" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "αλλάξτε τον ορισμό μίας μετατροπής" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "αλλάξτε μία βάση δεδομένων" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "ορίσθε τα προεπιλεγμένα δικαιώματα πρόσβασης" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "αλλάξτε τον ορισμό ενός τομέα" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "αλλάξτε τον ορισμό μιας ενεργοποίησης συμβάντος" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "αλλάξτε τον ορισμό μίας προέκτασης" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "αλλάξτε τον ορισιμό μιας περιτύλιξης ξένων δεδομένων" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "αλλάξτε τον ορισιμό ενός ξενικού πίνακα" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "αλλάξτε τον ορισμό μιας συνάρτησης" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "αλλάξτε το όνομα ρόλου ή ιδιότητας μέλους" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "αλλάξτε τον ορισμό ενός ευρετηρίου" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "αλλάξτε τον ορισμό μιας διαδικαστικής γλώσσας" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "αλλάξτε τον ορισιμό ενός μεγάλου αντικειμένου" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "αλλάξτε τον ορισμό μίας υλοποιημένης όψης" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "αλλάξτε τον ορισμό ενός χειριστή" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "αλλάξτε τον ορισμό μίας κλάσης χειριστή" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "αλλάξτε τον ορισμό μίας οικογένειας χειριστή" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "αλλάξτε τον ορισμό μιας πολιτικής ασφάλειας επιπέδου σειράς" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "αλλάξτε τον ορισμό μίας διαδικασίας" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "αλλάξτε τον ορισμό μίας δημοσίευσης" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "αλλάξτε τον ρόλο μίας βάσης δεδομένων" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "αλλάξτε τον ορισμό μιας ρουτίνας" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "αλλάξτε τον ορισμό ενός κανόνα" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "αλλάξτε τον ορισμό ενός σχήματος" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "αλλάξτε τον ορισμό μίας γεννήτριας ακολουθίας" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "αλλάξτε τον ορισμό ενός ξενικού διακομιστή" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "αλλάξτε τον ορισμό ενός εκτεταμένου αντικειμένου στατιστικών" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "αλλάξτε τον ορισμό μιας συνδρομής" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "αλλάξτε μία παράμετρο διαμόρφωσης διακομιστή" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "αλλάξτε τον ορισμό ενός πίνακα" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "αλλάξτε τον ορισμό ενός πινακοχώρου" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "αλλάξτε τον ορισμό μίας διαμόρφωσης αναζήτησης κειμένου" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "αλλάξτε τον ορισμό ενός λεξικού αναζήτησης κειμένου" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "αλλάξτε τον ορισμό ενός αναλυτή αναζήτησης κειμένου" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "αλλάξτε τον ορισμό ενός προτύπου αναζήτησης κειμένου" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "αλλάξτε τον ορισμό μιας ενεργοποίησης" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "αλλάξτε τον ορισμό ενός τύπου" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "αλλάξτε τον ορισμό μίας αντιστοίχισης χρήστη" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "αλλάξτε τον ορισμό μίας όψης" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "συλλέξτε στατιστικά σχετικά με μία βάση δεδομένων" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "εκκινήστε ένα μπλοκ συναλλαγής" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "κλήση διαδικασίας" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "επιβάλλετε εισαγωγή ενός σημείου ελέγχου (checkpoint) του write-ahead log" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "κλείστε έναν δρομέα" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "δημιουργείστε συστάδα ενός πίνακα σύμφωνα με ένα ευρετήριο" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "ορίσετε ή αλλάξτε το σχόλιο ενός αντικειμένου" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "ολοκληρώστε την τρέχουσας συναλλαγής" + +#: sql_help.c:5434 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "ολοκληρώστε μία συναλλαγή που είχε προετοιμαστεί νωρίτερα για ολοκλήρωση σε δύο φάσεις" + +#: sql_help.c:5440 +msgid "copy data between a file and a table" +msgstr "αντιγράψτε δεδομένα μεταξύ ενός αρχείου και ενός πίνακα" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "ορίσετε μία νέα μέθοδο πρόσβασης" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "ορίσετε μία νέα συνάρτηση συγκεντρωτικών αποτελεσμάτων" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "ορίσετε ένα νέο καστ" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "ορίσετε μία νέα συρραφή" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "ορίσετε μία νέα μετατροπή κωδικοποίησης" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "δημιουργήστε μία νέα βάση δεδομένων" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "ορίσετε ένα νέο πεδίο" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "ορίσετε μία νέα ενεργοποίησης συμβάντος" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "εγκαταστήστε μία νέα προέκταση" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "ορίσετε μία νέα περιτύλιξη ξένων δεδομένων" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "ορίσετε ένα νέο ξενικό πίνακα" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "ορίσετε μία νέα συνάρτηση" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "ορίστε έναν νέο ρόλο βάσης δεδομένων" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "ορίστε ένα νέο ευρετήριο" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "ορίστε μία νέα διαδικαστική γλώσσα" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "ορίστε μία νέα υλοποιημένη όψη" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "ορίστε έναν νέο χειριστή" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "ορίστε μία νέα κλάση χειριστή" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "ορίστε μία νέα οικογένεια χειριστή" + +#: sql_help.c:5560 +msgid "define a new row-level security policy for a table" +msgstr "ορίστε μία νέα πολιτική προστασίας σειράς για έναν πίνακα" + +#: sql_help.c:5566 +msgid "define a new procedure" +msgstr "ορίστε μία νέα διαδικασία" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "ορίστε μία νέα κοινοποιήση" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "ορίστε ένα νέο κανόνα επανεγγραφής" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "ορίστε ένα νέο σχήμα" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "ορίστε ένα νέο παραγωγό ακολουθίων" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "ορίστε ένα νέο ξενικό διακομιστή" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "ορίστε εκτεταμένα στατιστικά στοιχεία" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "ορίστε μία νέα συνδρομή" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "ορίσετε ένα νέο πίνακα" + +#: sql_help.c:5626 sql_help.c:6148 +msgid "define a new table from the results of a query" +msgstr "ορίστε ένα νέο πίνακα από τα αποτελέσματα ενός ερωτήματος" + +#: sql_help.c:5632 +msgid "define a new tablespace" +msgstr "ορίστε ένα νέο πινακοχώρο" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "ορίστε μία νέα διαμόρφωση αναζήτησης κειμένου" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "ορίστε ένα νέο λεξικό αναζήτησης κειμένου" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "ορίστε ένα νέο αναλυτή αναζήτησης κειμένου" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "ορίστε ένα νέο πρότυπο αναζήτησης κειμένου" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "ορίστε μία νέα μετατροπή" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "ορίσετε μία νέα ενεργοποίηση" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "ορίσετε ένα νέο τύπο δεδομένων" + +#: sql_help.c:5686 +msgid "define a new mapping of a user to a foreign server" +msgstr "ορίστε μία νέα αντιστοίχιση ενός χρήστη σε έναν ξένο διακομιστή" + +#: sql_help.c:5692 +msgid "define a new view" +msgstr "ορίστε μία νέα όψη" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "καταργήστε μία προετοιμασμένη δήλωση" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "ορίστε έναν δρομέα" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "διαγράψτε σειρές ενός πίνακα" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "καταργήστε την κατάσταση συνεδρίας" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "εκτελέστε ανώνυμο μπλοκ κώδικα" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "αφαιρέστε μία μέθοδο πρόσβασης" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "αφαιρέστε μία συνάρτηση συγκεντρωτικών αποτελεσμάτων" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "αφαιρέστε ένα καστ" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "αφαιρέστε μία συρραφή" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "αφαιρέστε μία μετατροπή" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "αφαιρέστε μία βάση δεδομένων" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "αφαιρέστε ένα πεδίο" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "αφαιρέστε μία ενεργοποίηση συμβάντος" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "αφαιρέστε μία προέκταση" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "αφαιρέστε μία περιτύλιξη ξένων δεδομένων" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "αφαιρέστε έναν ξενικό πίνακα" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "αφαιρέστε μία συνάρτηση" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "αφαιρέστε έναν ρόλο μίας βάσης δεδομένων" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "αφαιρέστε ένα ευρετήριο" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "αφαιρέστε μία διαδικαστική γλώσσα" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "αφαιρέστε μία υλοποιημένη όψη" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "αφαιρέστε έναν χειριστή" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "αφαιρέστε μία κλάση χειριστή" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "αφαιρέστε μία οικογένεια χειριστή" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "αφαιρέστε αντικειμένα βάσης δεδομένων που ανήκουν σε ρόλο βάσης δεδομένων" + +#: sql_help.c:5848 +msgid "remove a row-level security policy from a table" +msgstr "αφαιρέστε μία πολιτική ασφαλείας επιπέδου σειράς από έναν πίνακα" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "αφαιρέστε μία διαδικασία" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "αφαιρέστε μία δημοσίευση" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "αφαιρέστε μία ρουτίνα" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "αφαιρέστε έναν κανόνα επανεγγραφής" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "αφαιρέστε ένα σχήμα" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "αφαιρέστε μία ακολουθία" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "αφαιρέστε έναν περιγραφέα ξενικού διακομιστή" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "αφαιρέστε εκτεταμένα στατιστικά στοιχεία" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "αφαιρέστε μία συνδρομή" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "αφαιρέστε έναν πίνακα" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "αφαιρέστε έναν πινακοχώρο" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "αφαιρέστε μία διαμόρφωση αναζήτησης κειμένου" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "αφαιρέστε ένα λεξικό αναζήτησης κειμένου" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "αφαιρέστε έναν αναλυτή αναζήτησης κειμένου" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "αφαιρέστε ένα πρότυπο αναζήτησης κειμένου" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "αφαιρέστε μία μετατροπή" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "αφαιρέστε μία ενεργοποίηση" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "αφαιρέστε έναν τύπο δεδομένων" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "αφαιρέστε μία αντιστοίχιση χρήστη για ξένο διακομιστή" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "αφαιρέστε μία όψη" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "εκτελέστε μία προεπιλεγμένη δήλωση" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "εμφανίστε το πλάνο εκτέλεσης μίας δήλωσης" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "ανακτήστε σειρές από ερώτημα μέσω δρομέα" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "ορίσθε δικαιώματα πρόσβασης" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "εισαγωγή ορισμών πίνακα από ξένο διακομιστή" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "δημιουργήστε καινούργιες σειρές σε έναν πίνακα" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "ακούστε για μία κοινοποίηση" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "φορτώστε ένα αρχείο κοινόχρηστης βιβλιοθήκης" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "κλειδώστε έναν πίνακα" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "υπό όρους εισαγωγή, ενημέρωση, ή διαγραφή σειρών ενός πίνακα" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "τοποθετήστε έναν δρομέα" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "δημιουργήστε μία κοινοποίηση" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "προετοιμάστε μία δήλωση για εκτέλεση" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "προετοιμάστε την τρέχουσας συναλλαγής για ολοκλήρωση σε δύο φάσεις" + +#: sql_help.c:6076 +msgid "change the ownership of database objects owned by a database role" +msgstr "αλλάξτε την κυριότητα αντικειμένων βάσης δεδομένων που ανήκουν σε ρόλο βάσης δεδομένων" + +#: sql_help.c:6082 +msgid "replace the contents of a materialized view" +msgstr "αντικαθαστήστε τα περιεχόμενα μίας υλοποιημένης όψης" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "επανακατασκευάστε ευρετήρια" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "καταστρέψτε ένα προηγούμενα ορισμένο σημείο αποθήκευσης" + +#: sql_help.c:6100 +msgid "restore the value of a run-time parameter to the default value" +msgstr "επαναφορά της τιμής μιας παραμέτρου χρόνου εκτέλεσης στην προεπιλεγμένη τιμή" + +#: sql_help.c:6106 +msgid "remove access privileges" +msgstr "αφαιρέστε δικαιώματα πρόσβασης" + +#: sql_help.c:6118 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "ακύρωση συναλλαγής που είχε προετοιμαστεί προηγουμένως για ολοκλήρωση σε δύο φάσεις" + +#: sql_help.c:6124 +msgid "roll back to a savepoint" +msgstr "επαναφορά σε σημείο αποθήκευσης" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "ορίστε ένα νέο σημείο αποθήκευσης (savepoint) μέσα στην τρέχουσα συναλλαγή" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "ορίστε ή αλλάξτε μία ετικέτα ασφαλείας που εφαρμόζεται σε ένα αντικείμενο" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "ανακτήστε σειρές από πίνακα ή όψη" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "αλλάξτε μία παράμετρο χρόνου εκτέλεσης" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "ορίστε τον χρονισμό ελέγχου περιορισμού για την τρέχουσα συναλλαγή" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "ορίστε το αναγνωριστικό τρέχοντος χρήστη της τρέχουσας συνεδρίας" + +#: sql_help.c:6172 +msgid "set the session user identifier and the current user identifier of the current session" +msgstr "ορίστε το αναγνωριστικό χρήστη συνεδρίας και το αναγνωριστικό τρέχοντος χρήστη της τρέχουσας συνεδρίας" + +#: sql_help.c:6178 +msgid "set the characteristics of the current transaction" +msgstr "ορίστε τα χαρακτηριστικά της τρέχουσας συναλλαγής" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "εμφάνιση της τιμής μιας παραμέτρου χρόνου εκτέλεσης" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "αδειάστε έναν πίνακα ή ένα σύνολο πινάκων" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "σταματήστε να ακούτε μια κοινοποίηση" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "ενημέρωση σειρών πίνακα" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "συλλογή απορριμμάτων και προαιρετική ανάλυση βάσης δεδομένων" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "υπολογίστε ένα σύνολο σειρών" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 μπορεί να χρησιμοποιηθεί μόνο σε μη διαδραστική λειτουργία" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "δεν ήταν δυνατό το άνοιγμα του αρχείου καταγραφής «%s»: %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Γράψτε «help» για βοήθεια.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "δεν ήταν δυνατός ο ορισμός παραμέτρου εκτύπωσης «%s»" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Δοκιμάστε «%s --help» για περισσότερες πληροφορίες." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "παραβλέπεται η πρόσθετη παράμετρος γραμμής εντολών «%s»" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "δεν ήταν δυνατή η εύρεση του ιδίου εκτελέσιμου προγράμματος" + +#: tab-complete.c:5955 +#, 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»: αναμένεται Boolean" + +#: 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 "" +#~ " \\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" + +#~ msgid "All connection parameters must be supplied because no database connection exists" +#~ msgstr "Πρέπει να δωθούν όλες οι παρέμετροι γιατί δεν υπάρχει σύνδεση με τη βάση δεδομένων" + +#~ msgid "Disabled triggers:" +#~ msgstr "Απενεργοποιημένες triggers:" + +#~ msgid "Enter new password: " +#~ msgstr "Εισάγετε νέο κωδικό πρόσβασης: " + +#~ msgid "Special relation \"%s.%s\"" +#~ msgstr "Ειδική σχέση «%s.%s»" + +#~ msgid "The server (version %s) does not support altering default privileges." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει την τροποποίηση προεπιλεγμένων δικαιωμάτων." + +#~ msgid "The server (version %s) does not support collations." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει συρραφές." + +#~ msgid "The server (version %s) does not support editing function source." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει την επεξεργασία πηγών συναρτήσεων." + +#~ msgid "The server (version %s) does not support editing view definitions." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει την επεξεργασία ορισμών προβολής." + +#~ msgid "The server (version %s) does not support foreign servers." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν ξενικούς διακομιστές." + +#~ msgid "The server (version %s) does not support foreign tables." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν ξενικούς πίνακες." + +#~ msgid "The server (version %s) does not support foreign-data wrappers." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει περιτύλιξη ξένων δεδομένων." + +#~ msgid "The server (version %s) does not support full text search." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει αναζήτηση πλήρους κειμένου." + +#~ msgid "The server (version %s) does not support per-database role settings." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει ρυθμίσεις ρόλων ανά βάση δεδομένων." + +#~ msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει savepoints για ON_ERROR_ROLLBACK." + +#~ msgid "The server (version %s) does not support showing function source." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει την εμφάνιση του κώδικα της συνάρτησης." + +#~ msgid "The server (version %s) does not support showing view definitions." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει την επεξεργασία ορισμών προβολής." + +#~ msgid "The server (version %s) does not support tablespaces." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει tablespaces." + +#~ msgid "The server (version %s) does not support user mappings." +#~ msgstr "Ο διακομιστής (έκδοση %s) δεν υποστηρίζει αντιστοιχίσεις χρηστών." + +#~ msgid "\\watch cannot be used with COPY" +#~ msgstr "\\watch δεν μπορεί να χρησιμοποιηθεί μαζί με COPY" + +#~ msgid "fatal: " +#~ msgstr "κρίσιμο: " + +#~ msgid "pclose failed: %m" +#~ msgstr "απέτυχε η εντολή pclose: %m" + +#~ msgid "special" +#~ msgstr "ειδικό" + +#~ msgid "timezone" +#~ msgstr "timezone" + +#~ msgid "unexpected result status for \\watch" +#~ msgstr "μη αναμενόμενη κατάσταση αποτελέσματος για \\watch" + +#~ msgid "where direction can be empty or one of:" +#~ msgstr "όπου direction μπορεί να είναι άδειο ή ένα από:" diff --git a/src/bin/psql/po/es.po b/src/bin/psql/po/es.po new file mode 100644 index 0000000..12f74e5 --- /dev/null +++ b/src/bin/psql/po/es.po @@ -0,0 +1,6405 @@ +# spanish translation of psql. +# +# Copyright (c) 2003-2021, PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Alvaro Herrera, , 2003-2015 +# Diego A. Gil , 2005 +# Martín Marqués , 2013 +# Carlos Chapi , 2021 +# +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-05-07 16:46+0000\n" +"PO-Revision-Date: 2023-05-08 11:17+0200\n" +"Last-Translator: Carlos Chapi \n" +"Language-Team: PgSQL-es-Ayuda \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: BlackCAT 1.1\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "error: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "precaución: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "detalle: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "consejo: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "no se pudo identificar el directorio actual: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "el binario «%s» no es válido" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "no se pudo leer el binario «%s»" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "no se pudo encontrar un «%s» para ejecutar" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "no se pudo cambiar al directorio «%s»: %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "no se pudo leer el enlace simbólico «%s»: %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() falló: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Petición de cancelación enviada\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "No se pudo enviar la petición de cancelación: %s" + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu fila)" +msgstr[1] "(%lu filas)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Interrumpido\n" + +#: ../../fe_utils/print.c:3173 +#, 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:3213 +#, 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:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "formato de salida no válido (error interno): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "saltando expansión recursiva de la variable «%s»" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "no se pudo buscar el usuario local de ID %d: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "no existe un usuario local con ID %d" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "orden \\%s no válida" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "Digite \\? para obtener ayuda." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: argumento extra «%s» ignorado" + +#: command.c:304 +#, 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:573 +#, 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:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: no se pudo cambiar directorio a «%s»: %m" + +#: command.c:617 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "No está conectado a una base de datos.\n" + +#: command.c:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "no hay búfer de consulta" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "número de línea no válido: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "Sin cambios" + +#: command.c:1282 +#, 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:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "No hay error anterior." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: falta el paréntesis derecho" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: falta argumento requerido" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: no puede ocurrir después de \\else" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: no hay un \\if coincidente" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: no puede ocurrir después de \\else" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: no hay un \\if coincidente" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: no hay un \\if coincidente" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "El búfer de consulta está vacío." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Ingrese nueva contraseña para usuario «%s»: " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "Ingrésela nuevamente: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "Las constraseñas no coinciden." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "%s: no se pudo leer el valor para la variable" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "El búfer de consulta ha sido reiniciado (limpiado)." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "Se escribió la historia en el archivo «%s».\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: el nombre de variable de ambiente no debe contener «=»" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "el nombre de la función es requerido" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "el nombre de la vista es requerido" + +#: command.c:2593 +msgid "Timing is on." +msgstr "El despliegue de duración está activado." + +#: command.c:2595 +msgid "Timing is off." +msgstr "El despliegue de duración está desactivado." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Contraseña: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Contraseña para usuario %s: " + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "No proporcione usuario, host o puerto de forma separada al usar una cadena de conexión" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "No existe una conexión de base de datos para poder reusar sus parámetros" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "Se ha mantenido la conexión anterior" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, 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:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, servidor %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "Conexión SSL (protocolo: %s, cifrado: %s, compresión: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "desconocido" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "desactivado" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "activado" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "Conexión Cifrada GSSAPI\n" + +#: command.c:3717 +#, 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:3822 +#, 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:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "no se pudo iniciar el editor «%s»" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "no se pudo iniciar /bin/sh" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "no se pudo ubicar el directorio temporal: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "no se pudo abrir archivo temporal «%s»: %m" + +#: command.c:4266 +#, 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:4286 +#, 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:4305 +#, 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:4320 +#, 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:4335 +#, 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:4350 +#, 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:4393 +#, 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:4398 +#, 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:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: opción desconocida: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "El estilo de borde es %d.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "El ancho no está definido.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "El ancho es %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Se ha activado el despliegue expandido.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "El despliegue expandido se usa automáticamente.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Se ha desactivado el despliegue expandido.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "El separador de campos para CSV es «%s».\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "El separador de campos es el byte cero.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "El separador de campos es «%s».\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "El pie por omisión está activo.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "El pie de página por omisión está desactivado.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "El formato de salida es %s.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "El estilo de línea es %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Despliegue de nulos es «%s».\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "La salida numérica ajustada localmente está habilitada.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "La salida numérica ajustada localmente está deshabilitada.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "El paginador se usará para salida larga.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "El paginador se usará siempre.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "El paginador no se usará.\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "El separador de filas es el byte cero.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "El separador de filas es .\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "El separador de filas es «%s».\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Los atributos de tabla son «%s».\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Los atributos de tabla han sido indefinidos.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "El título es «%s».\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "El título ha sido indefinido.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "Mostrar sólo filas está activado.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "Mostrar sólo filas está desactivado.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "El estilo Unicode de borde es «%s».\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "El estilo de línea Unicode de columna es «%s».\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "El estilo de línea Unicode de encabezado es «%s».\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: falló" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch no puede ser usado con una consulta vacía" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "no se pudo establecer un temporizador: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (cada %gs)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (cada %gs)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "no se pudo esperar señales: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "«%s.%s» no es una vista" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "no se pudo interpretar el array reloptions" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "no se puede escapar sin una conexión activa" + +#: common.c:207 +#, 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:311 +#, c-format +msgid "connection to server was lost" +msgstr "se ha perdido la conexión al servidor" + +#: common.c:315 +#, 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:320 +#, c-format +msgid "Failed.\n" +msgstr "Falló.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "Con éxito.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "PQresultStatus no esperado: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Duración: %.3f ms\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Duración: %.3f ms (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Duración: %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, 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:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "No está conectado a una base de datos." + +#: common.c:654 +#, 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:657 +#, 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:688 +#, c-format +msgid "could not print result table: %m" +msgstr "no se pudo mostrar la tabla de resultados: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "\\gset no retornó renglón alguno" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "\\gset retornó más de un renglón" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "se ignoró intentó de hacer \\gset a variable con tratamiento especial «%s»" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "SENTENCIA: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "estado de transacción inesperado (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "Columna" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Tipo" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "se abortó por un error de lectura" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Esquema" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Nombre" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Tipo de dato de salida" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Tipos de datos de argumentos" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Descripción" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Listado de funciones de agregación" + +#: describe.c:153 +#, 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:168 +msgid "Index" +msgstr "Indice" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Tabla" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Manejador" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Lista de métodos de acceso" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Dueño" + +#: describe.c:231 +msgid "Location" +msgstr "Ubicación" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Opciones" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Tamaño" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Listado de tablespaces" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df sólo acepta las opciones [antpwS+]" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "agg" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "ventana" + +#: describe.c:356 +msgid "proc" +msgstr "proc" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "func" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "disparador" + +#: describe.c:386 +msgid "immutable" +msgstr "inmutable" + +#: describe.c:387 +msgid "stable" +msgstr "estable" + +#: describe.c:388 +msgid "volatile" +msgstr "volátil" + +#: describe.c:389 +msgid "Volatility" +msgstr "Volatilidad" + +#: describe.c:397 +msgid "restricted" +msgstr "restringida" + +#: describe.c:398 +msgid "safe" +msgstr "segura" + +#: describe.c:399 +msgid "unsafe" +msgstr "insegura" + +#: describe.c:400 +msgid "Parallel" +msgstr "Paralelismo" + +#: describe.c:405 +msgid "definer" +msgstr "definidor" + +#: describe.c:406 +msgid "invoker" +msgstr "invocador" + +#: describe.c:407 +msgid "Security" +msgstr "Seguridad" + +#: describe.c:412 +msgid "Language" +msgstr "Lenguaje" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Código fuente" + +#: describe.c:594 +msgid "List of functions" +msgstr "Listado de funciones" + +#: describe.c:657 +msgid "Internal name" +msgstr "Nombre interno" + +#: describe.c:659 +msgid "Elements" +msgstr "Elementos" + +#: describe.c:711 +msgid "List of data types" +msgstr "Listado de tipos de dato" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Tipo arg izq" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Tipo arg der" + +#: describe.c:816 +msgid "Result type" +msgstr "Tipo resultado" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Función" + +#: describe.c:902 +msgid "List of operators" +msgstr "Listado de operadores" + +#: describe.c:938 +msgid "Encoding" +msgstr "Codificación" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Collate" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "configuración ICU" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Proveedor de locale" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Tablespace" + +#: describe.c:990 +msgid "List of databases" +msgstr "Listado de base de datos" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "tabla" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "vista" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "vistas materializadas" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "secuencia" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "tabla foránea" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "tabla particionada" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Privilegios de acceso a columnas" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Políticas" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Privilegios" + +#: describe.c:1188 +msgid "function" +msgstr "función" + +#: describe.c:1190 +msgid "type" +msgstr "tipo" + +#: describe.c:1192 +msgid "schema" +msgstr "esquema" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Privilegios de acceso por omisión" + +#: describe.c:1259 +msgid "Object" +msgstr "Objeto" + +#: describe.c:1273 +msgid "table constraint" +msgstr "restricción de tabla" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "restricción de dominio" + +#: describe.c:1321 +msgid "operator class" +msgstr "clase de operadores" + +#: describe.c:1345 +msgid "operator family" +msgstr "familia de operadores" + +#: describe.c:1368 +msgid "rule" +msgstr "regla" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Descripciones de objetos" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "No se encontró relación llamada «%s»." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "No se encontró ninguna relación." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "No se encontró relación con OID %s." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "Inicio" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Mínimo" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Máximo" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Incremento" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "sí" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "no" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "¿Cicla?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Cache" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Asociada a: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Secuencia para columna identidad: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Secuencia unlogged «%s.%s»" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Secuencia «%s.%s»" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Tabla unlogged «%s.%s»" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Tabla «%s.%s»" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Vista «%s.%s»" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Vista materializada unlogged «%s.%s»" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Vista materializada \"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Índice unlogged «%s.%s»" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Índice «%s.%s»" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Índice particionado unlogged «%s.%s»" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Índice particionado «%s.%s»" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "Tabla TOAST «%s.%s»" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Tipo compuesto «%s.%s»" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Tabla foránea «%s.%s»" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Tabla unlogged particionada «%s.%s»" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Tabla particionada «%s.%s»" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Ordenamiento" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "Nulable" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "Por omisión" + +#: describe.c:2029 +msgid "Key?" +msgstr "¿Llave?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Definición" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "Opciones de FDW" + +#: describe.c:2035 +msgid "Storage" +msgstr "Almacenamiento" + +#: describe.c:2037 +msgid "Compression" +msgstr "Compresión" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Estadísticas" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Partición de: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Sin restricción de partición" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Restricción de partición: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Llave de partición: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Tabla dueña: «%s.%s»" + +#: describe.c:2309 +msgid "primary key, " +msgstr "llave primaria, " + +#: describe.c:2312 +msgid "unique" +msgstr "único" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls no distintos" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "de tabla «%s.%s»" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", predicado (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", clustered" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", no válido" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", postergable" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", inicialmente postergada" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", identidad de replicación" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Índices:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Restricciones CHECK:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Restricciones de llave foránea:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Referenciada por:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Políticas:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Políticas (seguridad de registros forzada):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Políticas (seguridad de filas activa): (ninguna)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Políticas (seguridad de filas forzada): (ninguna)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Políticas (seguridad de filas inactiva):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Objetos de estadísticas:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Reglas:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Reglas deshabilitadas:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Reglas que se activan siempre:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Reglas que se activan sólo en las réplicas:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Publicaciones:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Definición de vista:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Triggers:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Disparadores de usuario deshabilitados:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Disparadores internos deshabilitados:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Disparadores que siempre se ejecutan:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Disparadores que se ejecutan sólo en las réplicas:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Servidor: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "Opciones de FDW: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Hereda" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Número de particiones: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "Número de particiones: %d (Use \\d+ para listarlas.)" + +#: describe.c:3424 +#, 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:3431 +msgid "Child tables" +msgstr "Tablas hijas" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Particiones" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Tabla tipada de tipo: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Identidad de replicación" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Tiene OIDs: sí" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Método de acceso: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", tablespace «%s»" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Lista de roles" + +#: describe.c:3670 +msgid "Role name" +msgstr "Nombre de rol" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Atributos" + +#: describe.c:3673 +msgid "Member of" +msgstr "Miembro de" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Superusuario" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "Sin herencia" + +#: describe.c:3690 +msgid "Create role" +msgstr "Crear rol" + +#: describe.c:3693 +msgid "Create DB" +msgstr "Crear BD" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "No puede conectarse" + +#: describe.c:3699 +msgid "Replication" +msgstr "Replicación" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Ignora RLS" + +#: describe.c:3712 +msgid "No connections" +msgstr "Ninguna conexión" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d conexión" +msgstr[1] "%d conexiones" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Constraseña válida hasta " + +#: describe.c:3777 +msgid "Role" +msgstr "Nombre de rol" + +#: describe.c:3778 +msgid "Database" +msgstr "Base de Datos" + +#: describe.c:3779 +msgid "Settings" +msgstr "Parámetros" + +#: describe.c:3803 +#, 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:3806 +#, 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:3809 +#, c-format +msgid "Did not find any settings." +msgstr "No se encontró ningún parámetro." + +#: describe.c:3814 +msgid "List of settings" +msgstr "Listado de parámetros" + +#: describe.c:3885 +msgid "index" +msgstr "índice" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "Tabla TOAST" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "índice particionado" + +#: describe.c:3910 +msgid "permanent" +msgstr "permanente" + +#: describe.c:3911 +msgid "temporary" +msgstr "temporal" + +#: describe.c:3912 +msgid "unlogged" +msgstr "unlogged" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Persistencia" + +#: describe.c:3929 +msgid "Access method" +msgstr "Método de acceso" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Listado de relaciones" + +#: describe.c:4063 +#, 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:4074 +msgid "List of partitioned indexes" +msgstr "Listado de índices particionados" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Listado de tablas particionadas" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Listado de relaciones particionadas" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Nombre del padre" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Tamaño de particiones hoja" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Tamaño total" + +#: describe.c:4258 +msgid "Trusted" +msgstr "Confiable" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Lenguaje interno" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Manejador de llamada" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Validador" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Manejador en línea" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Lista de lenguajes" + +#: describe.c:4346 +msgid "Check" +msgstr "Check" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Listado de dominios" + +#: describe.c:4424 +msgid "Source" +msgstr "Fuente" + +#: describe.c:4425 +msgid "Destination" +msgstr "Destino" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "Por omisión?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Listado de conversiones" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Parámetro" + +#: describe.c:4498 +msgid "Value" +msgstr "Valor" + +#: describe.c:4505 +msgid "Context" +msgstr "Contexto" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Listado de parámetro de configuración" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Listado de parámetros de configuración no-default" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "El servidor (versión %s) no soporta triggers por eventos." + +#: describe.c:4587 +msgid "Event" +msgstr "Evento" + +#: describe.c:4589 +msgid "enabled" +msgstr "activo" + +#: describe.c:4590 +msgid "replica" +msgstr "réplica" + +#: describe.c:4591 +msgid "always" +msgstr "siempre" + +#: describe.c:4592 +msgid "disabled" +msgstr "inactivo" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Activo" + +#: describe.c:4595 +msgid "Tags" +msgstr "Etiquetas" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Listado de disparadores por eventos" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "El servidor (versión %s) no soporta estadísticas extendidas." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Dependencias" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Lista de estadísticas extendidas" + +#: describe.c:4745 +msgid "Source type" +msgstr "Tipo fuente" + +#: describe.c:4746 +msgid "Target type" +msgstr "Tipo destino" + +#: describe.c:4770 +msgid "in assignment" +msgstr "en asignación" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Implícito?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Listado de conversiones de tipo (casts)" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Proveedor" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "¿Determinístico?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Listado de ordenamientos" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Listado de esquemas" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Listado de analizadores de búsqueda en texto" + +#: describe.c:5167 +#, 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:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "No se encontró ningún analizador de búsqueda en texto." + +#: describe.c:5245 +msgid "Start parse" +msgstr "Inicio de parse" + +#: describe.c:5246 +msgid "Method" +msgstr "Método" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Obtener siguiente elemento" + +#: describe.c:5252 +msgid "End parse" +msgstr "Fin de parse" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Obtener encabezado" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Obtener tipos de elemento" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Analizador de búsqueda en texto «%s.%s»" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Analizador de búsqueda en texto «%s»" + +#: describe.c:5289 +msgid "Token name" +msgstr "Nombre de elemento" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Tipos de elemento para el analizador «%s.%s»" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Tipos de elemento para el analizador «%s»" + +#: describe.c:5350 +msgid "Template" +msgstr "Plantilla" + +#: describe.c:5351 +msgid "Init options" +msgstr "Opciones de inicialización" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Listado de diccionarios de búsqueda en texto" + +#: describe.c:5411 +msgid "Init" +msgstr "Inicializador" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Fn. análisis léx." + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Listado de plantillas de búsqueda en texto" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Listado de configuraciones de búsqueda en texto" + +#: describe.c:5550 +#, 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:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "No se encontró una configuración de búsqueda en texto." + +#: describe.c:5619 +msgid "Token" +msgstr "Elemento" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Diccionarios" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Configuración de búsqueda en texto «%s.%s»" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Configuración de búsqueda en texto «%s»" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Analizador: «%s.%s»" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Analizador: «%s»" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Listado de conectores de datos externos" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Conectores de datos externos" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Versión" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Listado de servidores foráneos" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Servidor" + +#: describe.c:5825 +msgid "User name" +msgstr "Nombre de usuario" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Listado de mapeos de usuario" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Listado de tablas foráneas" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Listado de extensiones instaladas" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "No se encontró extensión llamada «%s»." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "No se encontró ninguna extensión." + +#: describe.c:6075 +msgid "Object description" +msgstr "Descripción de objeto" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objetos en extensión «%s»" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "el nombre no es válido (demasiados puntos): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "no están implementadas las referencias entre bases de datos: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "El servidor (versión %s) no soporta publicaciones." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Todas las tablas" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Inserts" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Updates" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Deletes" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Truncates" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Via root" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Listado de publicaciones" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "No se encontró publicación llamada «%s»." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "No se encontró ninguna publicación." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Publicación %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Tablas:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Tablas de esquemas:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "El servidor (versión %s) no soporta suscripciones." + +#: describe.c:6497 +msgid "Publication" +msgstr "Publicación" + +#: describe.c:6506 +msgid "Binary" +msgstr "Binario" + +#: describe.c:6507 +msgid "Streaming" +msgstr "De flujo" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Commit 2-fases" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Desactivar en error" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Commit síncrono" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Conninfo" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Saltar LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Listado de suscripciones" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "Tipo de entrada" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Tipo de almacenamiento" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Clase de operador" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Familia de operadores" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Listado de clases de operador" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Tipos aplicables" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Listado de familias de operadores" + +#: describe.c:6807 +msgid "Operator" +msgstr "Operador" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Estrategia" + +#: describe.c:6809 +msgid "ordering" +msgstr "ordenamiento" + +#: describe.c:6810 +msgid "search" +msgstr "búsqueda" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Propósito" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "familia de ops de ordenamiento" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Lista de operadores de familias de operadores" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Tipo de dato izquierdo registrado" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Tipo de dato derecho registrado" + +#: describe.c:6904 +msgid "Number" +msgstr "Número" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Listado de funciones de la familia de operadores %s" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "Objetos grandes" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql es el terminal interactivo de PostgreSQL.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Empleo:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPCIONES]... [BASE-DE-DATOS [USUARIO]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Opciones generales:\n" + +#: help.c:84 +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:85 +#, 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:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=ARCHIVO ejecutar órdenes desde archivo, luego salir\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list listar bases de datos, luego salir\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version mostrar información de versión, luego salir\n" + +#: help.c:93 +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:94 +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:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=opcs] mostrar esta ayuda, luego salir\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands listar órdenes backslash, luego salir\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables listar variables especiales, luego salir\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Opciones de entrada y salida:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all mostrar las órdenes del script\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors mostrar órdenes fallidas\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries mostrar órdenes enviadas al servidor\n" + +#: help.c:104 +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden mostrar consultas generadas por órdenes internas\n" + +#: help.c:105 +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:106 +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:107 +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:108 +msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgstr " -q, --quiet modo silencioso (sin mensajes, sólo resultados)\n" + +#: help.c:109 +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:110 +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:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Opciones de formato de salida:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align modo de salida desalineado\n" + +#: help.c:114 +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:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html modo de salida en tablas HTML\n" + +#: help.c:119 +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:120 +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:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only sólo muestra registros\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded activar modo expandido de salida de tablas\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opciones de conexión:\n" + +#: help.c:133 +#, 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:134 +msgid "local socket" +msgstr "socket local" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nunca pedir contraseña\n" + +#: help.c:143 +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:145 +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:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Reporte de errores a <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Sitio web de %s: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "General\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright mostrar términos de uso y distribución de PostgreSQL\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr "" +" \\crosstabview [COLUMNAS]\n" +" ejecutar la consulta y desplegar en «crosstab»\n" + +#: help.c:194 +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:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(OPTIONS)] [FILE]\n" +" 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:197 +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc describir resultado de la consulta, sin ejecutarla\n" + +#: help.c:198 +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:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr "" +" \\gset [PREFIJO] ejecutar la consulta y almacenar el resultado en variables\n" +" de psql\n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr "" +" \\gx [(OPTIONS)] [FILE]\n" +" como \\g, pero fuerza el modo de salida expandido\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q salir de psql\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEGS] ejecutar consulta cada SEGS segundos\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Ayuda\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] desplegar ayuda sobre las órdenes backslash\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options desplegar ayuda sobre opciones de línea de órdenes\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables desplegar ayuda sobre variables especiales\n" + +#: help.c:210 +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:213 +msgid "Query Buffer\n" +msgstr "Búfer de consulta\n" + +#: help.c:214 +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:215 +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:216 +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:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p mostrar el contenido del búfer de consulta\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r reiniciar (limpiar) el búfer de consulta\n" + +#: help.c:220 +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:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w ARCHIVO escribir búfer de consulta a archivo\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "" +"Entrada/Salida\n" +" (con -n, donde existe, se omite el salto de línea final)\n" + +#: help.c:226 +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:227 +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" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i ARCHIVO ejecutar órdenes desde archivo\n" + +#: help.c:229 +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:230 +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:231 +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" + +#: help.c:232 +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" + +#: help.c:235 +msgid "Conditional\n" +msgstr "Condicional\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPRESIÓN inicia bloque condicional\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR alternativa dentro del bloque condicional actual\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else alternativa final dentro del bloque condicional actual\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif termina el bloque condicional\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Informativo\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (opciones: S = desplegar objetos de sistema, + = agregar más detalle)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] listar tablas, vistas y secuencias\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NOMBRE describir tabla, índice, secuencia o vista\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [PATRÓN] listar funciones de agregación\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [PATRÓN] listar métodos de acceso\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] listar las clases de operadores\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] listar las familias de operadores\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] listar los operadores de la familia de operadores\n" + +#: help.c:251 +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:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [PATRÓN] listar tablespaces\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [PATRÓN] listar conversiones\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [PATRÓN] listar parámetros de configuración\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [PATRÓN] listar conversiones de tipo (casts)\n" + +#: help.c:256 +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:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [PATRÓN] listar dominios\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [PATRÓN] listar privilegios por omisión\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATRÓN] listar tablas foráneas\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [PATRÓN] listar servidores foráneos\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [PATRÓN] listar tablas foráneas\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [PATRÓN] listar mapeos de usuario\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [PATRÓN] listar conectores de datos externos\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" listar funciones [sólo ag./normal/proc./trigger/ventana]\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [PATRÓN] listar configuraciones de búsqueda en texto\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [PATRÓN] listar diccionarios de búsqueda en texto\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [PATRÓN] listar analizadores (parsers) de búsq. en texto\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [PATRÓN] listar plantillas de búsqueda en texto\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [PATRÓN] listar roles\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [PATRÓN] listar índices\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] listar objetos grandes, lo mismo que \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATRÓN] listar lenguajes procedurales\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [PATRÓN] listar vistas materializadas\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATRÓN] listar esquemas\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" listar operadores\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S] [PATRÓN] listar ordenamientos (collations)\n" + +#: help.c:279 +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:280 +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:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr "" +" \\drds [PATRÓN_ROL [PATRÓN_BASE]]\n" +" listar parámetros de rol por base de datos\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [PATRÓN] listar publicaciones de replicación\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [PATRÓN] listar suscripciones de replicación\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [PATRÓN] listar secuencias\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [PATRÓN] listar tablas\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [PATRÓN] listar tipos de dato\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [PATRÓN] listar roles\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [PATRÓN] listar vistas\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATRÓN] listar extensiones\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [PATRÓN] listar estadísticas extendidas\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [PATRÓN] listar disparadores por eventos\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [PATRÓN] listar bases de datos\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNCIÓN mostrar la definición de una función\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] VISTA mostrar la definición de una vista\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [PATRÓN] lo mismo que \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "Objetos Grandes\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export LOBOID ARCHIVO escribir objeto grande a archivo\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import ARCHIVO [COMENTARIO]\n" +" leer objeto grande desde archivo\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] listar objetos grandes\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID borrar un objeto grande\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Formato\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a cambiar entre modo de salida alineado y sin alinear\n" + +#: help.c:308 +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:309 +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:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H cambiar modo de salida HTML (actualmente %s)\n" + +#: help.c:312 +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:319 +#, 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:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [CADENA] definir atributos HTML de
, o indefinir si es vacío\n" + +#: help.c:322 +#, 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:323 +msgid "auto" +msgstr "auto" + +#: help.c:326 +msgid "Connection\n" +msgstr "Conexiones\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo despliega la información sobre la conexión actual\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr "" +" \\encoding [CODIFICACIÓN]\n" +" mostrar o definir codificación del cliente\n" + +#: help.c:336 +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:339 +msgid "Operating System\n" +msgstr "Sistema Operativo\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIR] cambiar el directorio de trabajo actual\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVVAR obtener variable de ambiente\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr "" +" \\setenv NOMBRE [VALOR]\n" +" definir o indefinir variable de ambiente\n" + +#: help.c:343 +#, 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:345 +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:348 +msgid "Variables\n" +msgstr "Variables\n" + +#: help.c:349 +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:350 +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:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NOMBRE indefinir (eliminar) variable interna\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"Lista de variables con tratamiento especial\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "variables psql:\n" + +#: help.c:394 +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:396 +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:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr " DBNAME la base de datos actualmente conectada\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr " ENCODING codificación actual del cliente\n" + +#: help.c:411 +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:413 +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:415 +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:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" ocultar métodos de compresión\n" + +#: help.c:419 +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:421 +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:423 +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:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr " HOST el servidor actualmente conectado\n" + +#: help.c:427 +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:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr " LASTOID el valor del último OID afectado\n" + +#: help.c:431 +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:434 +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:436 +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:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr " PORT puerto del servidor de la conexión actual\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr " PROMPT1 especifica el prompt estándar de psql\n" + +#: help.c:442 +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:444 +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:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr " QUIET ejecuta silenciosamente (igual que -q)\n" + +#: help.c:448 +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:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" mostrar todos los resultados de una consulta combinada (\\;) en lugar\n" +" de sólo mostrar el último\n" + +#: help.c:455 +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:457 +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:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr " SINGLESTEP modo paso a paso (igual que -s)\n" + +#: help.c:461 +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:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr " USER el usuario actualmente conectado\n" + +#: help.c:465 +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:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Parámetros de despliegue:\n" + +#: help.c:474 +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:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr " border estilo de borde (número)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr " columns define el ancho para formato «wrapped»\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr " expanded (o x) salida expandida [on, off, auto]\n" + +#: help.c:482 +#, 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:485 +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:487 +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:489 +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:491 +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:493 +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:495 +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:497 +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:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr " recordsep separador de registros (líneas) para formato «unaligned»\n" + +#: help.c:501 +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:503 +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:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr " title define el título de tablas\n" + +#: help.c:508 +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:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Variables de ambiente:\n" + +#: help.c:519 +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:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr " COLUMNS número de columnas para formato «wrapped»\n" + +#: help.c:526 +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:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr " PGDATABASE igual que el parámetro de conexión dbname\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr " PGHOST igual que el parámetro de conexión host\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr " PGPASSFILE nombre de archivo de contraseñas\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr " PGPASSWORD contraseña de la conexión (no recomendado)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr " PGPORT igual que el parámetro de conexión port\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr " PGUSER igual que el parámetro de conexión user\n" + +#: help.c:540 +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:542 +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:544 +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:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr " PSQL_PAGER, PAGER nombre de programa paginador externo\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr " PSQL_WATCH_PAGER paginador externo para usar con \\watch\n" + +#: help.c:552 +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:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr " SHELL intérprete usado por la orden \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr " TMPDIR directorio para archivos temporales\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Ayuda disponible:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "no se pudo guardar historial a archivo «%s»: %m" + +#: input.c:535 +#, 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" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: escapado" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Use «\\q» para salir de %s.\n" + +#: mainloop.c:214 +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:295 +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:297 +msgid "Use \\? for help." +msgstr "Digite \\? para obtener ayuda." + +#: mainloop.c:301 +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:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Use \\q para salir." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Use control-D para salir." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Use control-C para salir." + +#: mainloop.c:459 mainloop.c:618 +#, 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:636 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "nombre" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "signatura_func_agregación" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "nuevo_nombre" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "nuevo_dueño" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "nuevo_esquema" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +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:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "modo_arg" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "nombre_arg" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "tipo_arg" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "opción" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "donde opción puede ser:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "allowconn" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "límite_conexiones" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "esplantilla" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "nuevo_tablespace" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "parámetro_de_configuración" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "valor" + +#: sql_help.c:200 +msgid "target_role" +msgstr "rol_destino" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "nombre_de_esquema" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "grant_o_revoke_abreviado" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "donde grant_o_revoke_abreviado es uno de:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "nombre_de_rol" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "expresión" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "restricción_de_dominio" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "nombre_restricción" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "nuevo_nombre_restricción" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "nueva_versión" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "objeto_miembro" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "dondo objeto_miembro es:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "nombre_de_objeto" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "nombre_función_agregación" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "tipo_fuente" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "tipo_destino" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "nombre_de_función" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "nombre_operador" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "tipo_izq" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "tipo_der" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "método_de_índice" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "nombre_de_procedimiento" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "nombre_de_rutina" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "nombre_de_tipo" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "nombre_lenguaje" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "y signatura_func_agregación es:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "función_manejadora" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "función_validadora" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "acción" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "nombre_de_columna" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "nuevo_nombre_de_columna" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "donde acción es una de:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "tipo_de_dato" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "ordenamiento" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "restricción_de_columna" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "entero" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "opción_de_atributo" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "restricción_de_tabla" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "nombre_disparador" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "tabla_padre" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "nombre_de_extensión" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "costo_de_ejecución" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "núm_de_filas" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "función_de_soporte" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "especificación_de_rol" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "nombre_de_usuario" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "donde especificación_de_rol puede ser:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "nombre_de_grupo" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "nombre_de_tablespace" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "nombre_índice" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "parámetro_de_almacenamiento" + +#: sql_help.c:607 +msgid "column_number" +msgstr "número_de_columna" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "oid_de_objeto_grande" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "método_de_compresión" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "nuevo_método_de_acceso" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "proc_res" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "proc_join" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "número_de_estrategia" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "tipo_op" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "nombre_familia_ordenamiento" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "número_de_soporte" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "tipo_argumento" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "nombre_de_tabla" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "expresión_using" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "expresión_check" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "objeto_de_publicación" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "parámetro_de_publicación" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "donde objeto_de_publicación es uno de:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "contraseña" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "fecha_hora" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "nombre_de_base_de_datos" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "incremento" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "valormin" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "valormax" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "inicio" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "reinicio" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "cache" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "nuevo_valor" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "conninfo" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "nombre_de_publicación" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "opción_de_publicación" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "opción_refresh" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "parámetro_de_suscripción" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "opción_skip" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "nombre_de_partición" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "borde_de_partición" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "opciones_de_secuencia" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "opción_de_secuencia" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "restricción_de_tabla_con_índice" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "nombre_regla_de_reescritura" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "y borde_de_partición es:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "expresión_de_borde_de_partición" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "literal_numérico" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "donde restricción_de_columna es:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "expr_por_omisión" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "expr_de_generación" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "parámetros_de_índice" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "tabla_ref" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "columna_ref" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "acción_referencial" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "y restricción_de_tabla es:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "elemento_de_exclusión" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "operador" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "predicado" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "y restricción_de_tabla_con_índice es:" + +#: sql_help.c:1421 sql_help.c:2967 +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:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "elemento_de_exclusión en una restricción EXCLUDE es:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "clase_de_ops" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "acción_referencial en una restricción FOREIGN KEY/REFERENCES es:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "opción_de_tablespace" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "tipo_de_token" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "nombre_diccionario" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "diccionario_antiguo" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "diccionario_nuevo" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "nombre_atributo" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "nuevo_nombre_atributo" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "nuevo_valor_enum" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "valor_enum_vecino" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "valor_enum_existente" + +#: sql_help.c:1589 +msgid "property" +msgstr "propiedad" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "nombre_de_servidor" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "nombre_opción_de_vista" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "valor_opción_de_vista" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "tabla_y_columnas" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "donde opción puede ser una de:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "booleano" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "y tabla_y_columnas es:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "modo_de_transacción" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "donde modo_de_transacción es uno de:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "argumento" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "nombre_relación" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "nombre_de_dominio" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "nombre_de_política" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "nombre_regla" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "literal_de_cadena" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "id_de_transacción" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "nombre_de_archivo" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "orden" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "condición" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "consulta" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "nombre_de_formato" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "carácter_delimitador" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "cadena_null" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "carácter_de_comilla" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "carácter_de_escape" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "nombre_codificación" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "tipo_de_método_de_acceso" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "tipo_de_dato_arg" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "func_transición" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "tipo_de_dato_de_estado" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "tamaño_de_dato_de_estado" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "func_final" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "func_combinación" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "func_serial" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "func_deserial" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "condición_inicial" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "func_transición_m" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "func_inv_m" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "tipo_de_dato_de_estado_m" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "tamaño_de_dato_de_estado_m" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "func_final_m" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "condición_inicial_m" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "operador_de_ordenamiento" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "o la sintaxis antigua" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "tipo_base" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "configuración regional" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "proveedor" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "versión" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "ordenamiento_existente" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "codificación_origen" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "codificación_destino" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "plantilla" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "codificación" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "estrategia" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "locale_icu" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "proveedor_locale" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "versión_ordenamiento" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "restricción" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "donde restricción es:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "evento" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "variable_de_filtrado" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "valor_de_filtrado" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "donde restricción_de_columna es:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "tipo_ret" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "tipo_columna" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "definición" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "archivo_obj" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "símbolo_enlace" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "contenido_sql" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "método" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "parámetro_opclass" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "manejador_de_llamada" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "manejador_en_línea" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "función_val" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "op_conm" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "op_neg" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "nombre_familia" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "tipo_almacenamiento" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "donde evento puede ser una de:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "elemento_de_esquema" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "tipo_de_servidor" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "versión_de_servidor" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "nombre_fdw" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "nombre_de_estadística" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "tipo_de_estadística" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "nombre_de_suscripción" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "tabla_origen" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "opción_de_like" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "y opción_de_like es:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "directorio" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "nombre_de_parser" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "config_origen" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "función_inicio" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "función_gettoken" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "función_fin" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "función_lextypes" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "función_headline" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "función_init" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "función_lexize" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "nombre_de_función_from" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "nombre_de_función_to" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "nombre_tabla_referenciada" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "nombre_de_relación_de_transición" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "argumentos" + +#: sql_help.c:3170 +msgid "label" +msgstr "etiqueta" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "subtipo" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "clase_de_operador_del_subtipo" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "función_canónica" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "función_diff_del_subtipo" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "nombre_de_tipo_de_multirango" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "función_entrada" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "función_salida" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "función_receive" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "función_send" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "función_entrada_del_modificador_de_tipo" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "función_salida_del_modificador_de_tipo" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "función_analyze" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "función_de_subíndice" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "largo_interno" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "alineamiento" + +#: sql_help.c:3189 +msgid "storage" +msgstr "almacenamiento" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "como_tipo" + +#: sql_help.c:3191 +msgid "category" +msgstr "categoría" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "preferido" + +#: sql_help.c:3193 +msgid "default" +msgstr "valor_por_omisión" + +#: sql_help.c:3194 +msgid "element" +msgstr "elemento" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "delimitador" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "ordenable" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "consulta_with" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "alias" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "item_de_from" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "nombre_de_cursor" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "expresión_de_salida" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "nombre_de_salida" + +#: sql_help.c:3316 +msgid "code" +msgstr "código" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "parámetro" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "sentencia" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "dirección" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "donde dirección puede ser una de:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "cantidad" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "nombre_secuencia" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "nombre_arg" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "tipo_arg" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "esquema_remoto" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "esquema_local" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "destino_de_conflict" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "acción_de_conflict" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "donde destino_de_conflict puede ser uno de:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "nombre_de_columna_de_índice" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "expresión_de_índice" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "predicado_de_índice" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "donde acción_de_conflict es una de:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "sub-SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "canal" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "modo_bloqueo" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "donde modo_bloqueo es uno de:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "nombre_de_tabla_destino" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "alias_de_destino" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "origin_de_datos" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "condición_de_join" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "cláusula_when" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "donde origen_de_datos es:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "nombre_tabla_origen" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "consulta_origen" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "alias_origen" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "y cláusula_when es:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "update_de_merge" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "delete_de_merge" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "insert_de_merge" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "y insert_de_merge es:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "y update_de_merge es:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "y delete_de_merge es:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "carga" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "rol_antiguo" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "rol_nuevo" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "nombre_de_savepoint" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "elemento_agrupante" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "nombre_de_ventana" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "definición_de_ventana" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "select" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "donde item_de_from puede ser uno de:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "alias_de_columna" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "método_de_sampleo" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "semilla" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "nombre_consulta_with" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "definición_de_columna" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "tipo_de_join" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "columna_de_join" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "join_con_alias" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "donde elemento_agrupante puede ser una de:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "y consulta_with es:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "valores" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "update" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "nombre_col_para_sec_de_búsqueda" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "nombre_col_para_marca_de_ciclo" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "valor_marca_de_ciclo" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "valor_predet_marca_de_ciclo" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "nombre_col_para_ruta_de_ciclo" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "nueva_tabla" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "id_de_snapshot" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "expresión_orden" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "aborta la transacción en curso" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "cambia la definición de una función de agregación" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "cambia la definición de un ordenamiento" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "cambia la definición de una conversión" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "cambia una base de datos" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "define privilegios de acceso por omisión" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "cambia la definición de un dominio" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "cambia la definición de un disparador por evento" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "cambia la definición de una extensión" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "cambia la definición de un conector de datos externos" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "cambia la definición de una tabla foránea" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "cambia la definición de una función" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "cambiar nombre del rol o membresía" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "cambia la definición de un índice" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "cambia la definición de un lenguaje procedural" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "cambia la definición de un objeto grande" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "cambia la definición de una vista materializada" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "cambia la definición de un operador" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "cambia la definición de una clase de operadores" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "cambia la definición de una familia de operadores" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "cambia la definición de una política de seguridad a nivel de registros" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "cambia la definición de un procedimiento" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "cambia la definición de una publicación" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "cambia un rol de la base de datos" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "cambia la definición de una rutina" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "cambia la definición de una regla" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "cambia la definición de un esquema" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "cambia la definición de un generador secuencial" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "cambia la definición de un servidor foráneo" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "cambia la definición de un objeto de estadísticas extendidas" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "cambia la definición de una suscripción" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "cambia un parámetro de configuración del servidor" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "cambia la definición de una tabla" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "cambia la definición de un tablespace" + +#: sql_help.c:5332 +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:5338 +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:5344 +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:5350 +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:5356 +msgid "change the definition of a trigger" +msgstr "cambia la definición de un disparador" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "cambia la definición de un tipo" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "cambia la definición de un mapeo de usuario" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "cambia la definición de una vista" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "recolecta estadísticas sobre una base de datos" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "inicia un bloque de transacción" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "invocar un procedimiento" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "fuerza un checkpoint de wal" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "cierra un cursor" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "reordena una tabla siguiendo un índice" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "define o cambia un comentario sobre un objeto" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "compromete la transacción en curso" + +#: sql_help.c:5434 +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:5440 +msgid "copy data between a file and a table" +msgstr "copia datos entre un archivo y una tabla" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "define un nuevo método de acceso" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "define una nueva función de agregación" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "define una nueva conversión de tipo" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "define un nuevo ordenamiento" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "define una nueva conversión de codificación" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "crea una nueva base de datos" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "define un nuevo dominio" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "define un nuevo disparador por evento" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "instala una extensión" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "define un nuevo conector de datos externos" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "define una nueva tabla foránea" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "define una nueva función" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "define un nuevo rol de la base de datos" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "define un nuevo índice" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "define un nuevo lenguaje procedural" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "define una nueva vista materializada" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "define un nuevo operador" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "define una nueva clase de operadores" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "define una nueva familia de operadores" + +#: sql_help.c:5560 +msgid "define a new row-level security policy for a table" +msgstr "define una nueva política de seguridad a nivel de registros para una tabla" + +#: sql_help.c:5566 +msgid "define a new procedure" +msgstr "define un nuevo procedimiento" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "define una nueva publicación" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "define una nueva regla de reescritura" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "define un nuevo esquema" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "define un nuevo generador secuencial" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "define un nuevo servidor foráneo" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "define estadísticas extendidas" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "define una nueva suscripción" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "define una nueva tabla" + +#: sql_help.c:5626 sql_help.c:6148 +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:5632 +msgid "define a new tablespace" +msgstr "define un nuevo tablespace" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "define una nueva configuración de búsqueda en texto" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "define un nuevo diccionario de búsqueda en texto" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "define un nuevo analizador de búsqueda en texto" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "define una nueva plantilla de búsqueda en texto" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "define una nueva transformación" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "define un nuevo disparador" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "define un nuevo tipo de datos" + +#: sql_help.c:5686 +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:5692 +msgid "define a new view" +msgstr "define una nueva vista" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "elimina una sentencia preparada" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "define un nuevo cursor" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "elimina filas de una tabla" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "descartar datos de la sesión" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "ejecutar un bloque anónimo de código" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "elimina un método de acceso" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "elimina una función de agregación" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "elimina una conversión de tipo" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "elimina un ordenamiento" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "elimina una conversión de codificación" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "elimina una base de datos" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "elimina un dominio" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "elimina un disparador por evento" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "elimina una extensión" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "elimina un conector de datos externos" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "elimina una tabla foránea" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "elimina una función" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "elimina un rol de base de datos" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "elimina un índice" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "elimina un lenguaje procedural" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "elimina una vista materializada" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "elimina un operador" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "elimina una clase de operadores" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "elimina una familia de operadores" + +#: sql_help.c:5842 +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:5848 +msgid "remove a row-level security policy from a table" +msgstr "elimina una política de seguridad a nivel de registros de una tabla" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "elimina un procedimiento" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "elimina una publicación" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "elimina una rutina" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "elimina una regla de reescritura" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "elimina un esquema" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "elimina un generador secuencial" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "elimina un descriptor de servidor foráneo" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "elimina estadísticas extendidas" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "elimina una suscripción" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "elimina una tabla" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "elimina un tablespace" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "elimina una configuración de búsqueda en texto" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "elimina un diccionario de búsqueda en texto" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "elimina un analizador de búsqueda en texto" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "elimina una plantilla de búsqueda en texto" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "elimina una transformación" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "elimina un disparador" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "elimina un tipo de datos" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "elimina un mapeo de usuario para un servidor remoto" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "elimina una vista" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "ejecuta una sentencia preparada" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "muestra el plan de ejecución de una sentencia" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "recupera filas de una consulta usando un cursor" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "define privilegios de acceso" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "importa definiciones de tablas desde un servidor foráneo" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "crea nuevas filas en una tabla" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "escucha notificaciones" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "carga un archivo de biblioteca compartida" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "bloquea una tabla" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "condicionalmente inserta, actualiza o elimina filas de una tabla" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "reposiciona un cursor" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "genera una notificación" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "prepara una sentencia para ejecución" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "prepara la transacción actual para two-phase commit" + +#: sql_help.c:6076 +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:6082 +msgid "replace the contents of a materialized view" +msgstr "reemplaza los contenidos de una vista materializada" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "reconstruye índices" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "destruye un savepoint previamente definido" + +#: sql_help.c:6100 +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:6106 +msgid "remove access privileges" +msgstr "revoca privilegios de acceso" + +#: sql_help.c:6118 +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:6124 +msgid "roll back to a savepoint" +msgstr "descartar hacia un savepoint" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "define un nuevo savepoint en la transacción en curso" + +#: sql_help.c:6136 +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:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "recupera filas desde una tabla o vista" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "cambia un parámetro de configuración" + +#: sql_help.c:6160 +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:6166 +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:6172 +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:6178 +msgid "set the characteristics of the current transaction" +msgstr "define las características de la transacción en curso" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "muestra el valor de un parámetro de configuración" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "vacía una tabla o conjunto de tablas" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "deja de escuchar una notificación" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "actualiza filas de una tabla" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "recolecta basura y opcionalmente estadísticas sobre una base de datos" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "calcula un conjunto de registros" + +#: startup.c:220 +#, 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:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "no se pudo abrir el archivo de registro «%s»: %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Digite «help» para obtener ayuda.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "no se pudo definir parámetro de impresión «%s»" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Pruebe «%s --help» para mayor información." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "se ignoró argumento extra «%s» en línea de órdenes" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "no se pudo encontrar el ejecutable propio" + +#: tab-complete.c:5955 +#, 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." diff --git a/src/bin/psql/po/fr.po b/src/bin/psql/po/fr.po new file mode 100644 index 0000000..d137ae8 --- /dev/null +++ b/src/bin/psql/po/fr.po @@ -0,0 +1,7011 @@ +# LANGUAGE message translation file for psql +# Copyright (C) 2001-2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the psql (PostgreSQL) package. +# +# Use these quotes: « %s » +# +# Peter Eisentraut , 2001. +# Guillaume Lelarge , 2003-2022. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-02-03 22:46+0000\n" +"PO-Revision-Date: 2023-02-05 17:29+0100\n" +"Last-Translator: Guillaume Lelarge \n" +"Language-Team: French \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 3.2.2\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "erreur : " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "attention : " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "détail : " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "astuce : " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "n'a pas pu identifier le répertoire courant : %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "binaire « %s » invalide" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "n'a pas pu lire le binaire « %s »" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "n'a pas pu trouver un « %s » à exécuter" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, 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:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "n'a pas pu lire le lien symbolique « %s » : %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "échec de %s() : %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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 d'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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Requête d'annulation envoyée\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "N'a pas pu envoyer la requête d'annulation : " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu ligne)" +msgstr[1] "(%lu lignes)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Interrompu\n" + +#: ../../fe_utils/print.c:3173 +#, 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:3213 +#, 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:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "format de sortie invalide (erreur interne) : %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "ignore l'expansion récursive de la variable « %s »" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "n'a pas pu rechercher l'identifiant de l'utilisateur local %d : %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "commande \\%s invalide" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "Essayez \\? pour l'aide." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s : argument « %s » supplémentaire ignoré" + +#: command.c:304 +#, 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:573 +#, 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:592 +#, 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:617 +#, 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:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "aucun tampon de requête" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "numéro de ligne invalide : %s" + +#: command.c:1203 +msgid "No changes" +msgstr "Aucun changement" + +#: command.c:1282 +#, 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:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "Il n'y a pas d'erreur précédente." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: parenthèse droite manquante" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s : argument requis manquant" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif : ne peut pas survenir après \\else" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif : pas de \\if correspondant" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else : ne peut pas survenir après \\else" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else : pas de \\if correspondant" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif : pas de \\if correspondant" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "Le tampon de requête est vide." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Saisir le nouveau mot de passe de l'utilisateur « %s » : " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "Saisir le mot de passe à nouveau : " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "Les mots de passe ne sont pas identiques." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s : n'a pas pu lire la valeur pour la variable" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "Le tampon de requête a été effacé." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "Historique sauvegardé dans le fichier « %s ».\n" + +#: command.c:2420 +#, 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:2468 +#, c-format +msgid "function name is required" +msgstr "le nom de la fonction est requis" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "le nom de la vue est requis" + +#: command.c:2593 +msgid "Timing is on." +msgstr "Chronométrage activé." + +#: command.c:2595 +msgid "Timing is off." +msgstr "Chronométrage désactivé." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Mot de passe : " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Mot de passe pour l'utilisateur %s : " + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "Ne pas donner utilisateur, hôte ou port lors de l'utilisation d'une chaîne de connexion" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "Aucune connexion de base existante pour réutiliser ses paramètres" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "Connexion précédente conservée" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect : %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, 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:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, serveur %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "Connexion SSL (protocole : %s, chiffrement : %s, compression : %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "inconnu" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "désactivé" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "activé" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "connexion chiffrée avec GSSAPI\n" + +#: command.c:3717 +#, 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:3822 +#, 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:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "n'a pas pu exécuter l'éditeur « %s »" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "n'a pas pu exécuter /bin/sh" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "n'a pas pu localiser le répertoire temporaire : %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier temporaire « %s » : %m" + +#: command.c:4266 +#, 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:4286 +#, 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:4305 +#, 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:4320 +#, 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:4335 +#, 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:4350 +#, 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:4393 +#, 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:4398 +#, 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:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset : option inconnue : %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "Le style de bordure est %d.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "La largeur cible n'est pas configuré.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "La largeur cible est %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Affichage étendu activé.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "L'affichage étendu est utilisé automatiquement.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Affichage étendu désactivé.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "Le séparateur de champs pour un CSV est « %s ».\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Le séparateur de champs est l'octet zéro.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Le séparateur de champs est « %s ».\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "Le bas de page pas défaut est activé.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "Le bas de page par défaut est désactivé.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "Le format de sortie est %s.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "Le style de ligne est %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "L'affichage de null est « %s ».\n" + +#: command.c:4632 +#, 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:4634 +#, 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:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Le paginateur est utilisé pour les affichages longs.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "Le paginateur est toujours utilisé.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "L'utilisation du paginateur est désactivé.\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Le séparateur d'enregistrements est l'octet zéro.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "Le séparateur d'enregistrement est .\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Le séparateur d'enregistrements est « %s ».\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Les attributs de la table sont « %s ».\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Les attributs de la table ne sont pas définis.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Le titre est « %s ».\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "Le titre n'est pas défini.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "L'affichage des tuples seuls est activé.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "L'affichage des tuples seuls est désactivé.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Le style de bordure Unicode est « %s ».\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Le style de ligne Unicode est « %s ».\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Le style d'en-tête Unicode est « %s ».\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\! : échec" + +#: command.c:4984 +#, 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:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "n'a pas pu configurer le chronomètre : %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (chaque %gs)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (chaque %gs)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "n'a pas pu attendre le signal : %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"******** REQUÊTE *********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "« %s.%s » n'est pas une vue" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "n'a pas pu analyser le tableau reloptions" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "ne peut mettre entre guillemets sans connexion active" + +#: common.c:207 +#, 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:311 +#, c-format +msgid "connection to server was lost" +msgstr "la connexion au serveur a été perdue" + +#: common.c:315 +#, 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:320 +#, c-format +msgid "Failed.\n" +msgstr "Échec.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "Succès.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "PQresultStatus inattendu : %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Temps : %.3f ms\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Durée : %.3f ms (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Durée : %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, 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:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "Vous n'êtes pas connecté à une base de données." + +#: common.c:654 +#, 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:657 +#, 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:688 +#, c-format +msgid "could not print result table: %m" +msgstr "n'a pas pu imprimer la table résultante : %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "aucune ligne retournée pour \\gset" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "plus d'une ligne retournée pour \\gset" + +#: common.c:731 +#, 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:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "INSTRUCTION : %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "état de la transaction inattendu (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "Colonne" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Type" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "annulé du fait d'une erreur de lecture" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Schéma" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Nom" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Type de données du résultat" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Type de données des paramètres" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Description" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Liste des fonctions d'agrégation" + +#: describe.c:153 +#, 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:168 +msgid "Index" +msgstr "Index" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Table" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Gestionnaire" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Liste des méthodes d'accès" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Propriétaire" + +#: describe.c:231 +msgid "Location" +msgstr "Emplacement" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Options" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Taille" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Liste des tablespaces" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df ne prend que [anptwS+] comme options" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "agg" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "window" + +#: describe.c:356 +msgid "proc" +msgstr "proc" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "func" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "trigger" + +#: describe.c:386 +msgid "immutable" +msgstr "immutable" + +#: describe.c:387 +msgid "stable" +msgstr "stable" + +#: describe.c:388 +msgid "volatile" +msgstr "volatile" + +#: describe.c:389 +msgid "Volatility" +msgstr "Volatibilité" + +#: describe.c:397 +msgid "restricted" +msgstr "restricted" + +#: describe.c:398 +msgid "safe" +msgstr "safe" + +#: describe.c:399 +msgid "unsafe" +msgstr "unsafe" + +#: describe.c:400 +msgid "Parallel" +msgstr "Parallèle" + +#: describe.c:405 +msgid "definer" +msgstr "definer" + +#: describe.c:406 +msgid "invoker" +msgstr "invoker" + +#: describe.c:407 +msgid "Security" +msgstr "Sécurité" + +#: describe.c:412 +msgid "Language" +msgstr "Langage" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Code source" + +#: describe.c:594 +msgid "List of functions" +msgstr "Liste des fonctions" + +#: describe.c:657 +msgid "Internal name" +msgstr "Nom interne" + +#: describe.c:659 +msgid "Elements" +msgstr "Éléments" + +#: describe.c:711 +msgid "List of data types" +msgstr "Liste des types de données" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Type de l'arg. gauche" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Type de l'arg. droit" + +#: describe.c:816 +msgid "Result type" +msgstr "Type du résultat" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Fonction" + +#: describe.c:902 +msgid "List of operators" +msgstr "Liste des opérateurs" + +#: describe.c:938 +msgid "Encoding" +msgstr "Encodage" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Collationnement" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Type caract." + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "Locale ICU" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Fournisseur de locale" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Tablespace" + +#: describe.c:990 +msgid "List of databases" +msgstr "Liste des bases de données" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "table" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "vue" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "vue matérialisée" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "séquence" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "table distante" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "table partitionnée" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Droits d'accès à la colonne" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Politiques" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Droits d'accès" + +#: describe.c:1188 +msgid "function" +msgstr "fonction" + +#: describe.c:1190 +msgid "type" +msgstr "type" + +#: describe.c:1192 +msgid "schema" +msgstr "schéma" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Droits d'accès par défaut" + +#: describe.c:1259 +msgid "Object" +msgstr "Objet" + +#: describe.c:1273 +msgid "table constraint" +msgstr "contrainte de table" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "contrainte de domaine" + +#: describe.c:1321 +msgid "operator class" +msgstr "classe d'opérateur" + +#: describe.c:1345 +msgid "operator family" +msgstr "famille d'opérateur" + +#: describe.c:1368 +msgid "rule" +msgstr "règle" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Descriptions des objets" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "Aucune relation nommée « %s » n'a été trouvée." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "Aucune relation n'a été trouvée." + +#: describe.c:1678 +#, 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:1726 describe.c:1750 +msgid "Start" +msgstr "Début" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Minimum" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Maximum" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Incrément" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "oui" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "non" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "Cycles ?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Cache" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Propriétaire : %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Séquence pour la colonne d'identité : %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Séquence non journalisée « %s.%s »" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Séquence « %s.%s »" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Table non tracée « %s.%s »" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Table « %s.%s »" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Vue « %s.%s »" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Vue matérialisée non journalisée « %s.%s »" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Vue matérialisée « %s.%s »" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Index non tracé « %s.%s »" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Index « %s.%s »" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Index partitionné non journalisé « %s.%s »" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Index partitionné « %s.%s »" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "Table TOAST « %s.%s »" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Type composé « %s.%s »" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Table distante « %s.%s »" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Table non journalisée « %s.%s »" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Table partitionnée « %s.%s »" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Collationnement" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "NULL-able" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "Par défaut" + +#: describe.c:2029 +msgid "Key?" +msgstr "Clé ?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Définition" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "Options FDW" + +#: describe.c:2035 +msgid "Storage" +msgstr "Stockage" + +#: describe.c:2037 +msgid "Compression" +msgstr "Compression" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Cible de statistiques" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Partition de : %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Aucune contrainte de partition" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Contrainte de partition : %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Clé de partition : %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Table propriétaire : « %s.%s »" + +#: describe.c:2309 +msgid "primary key, " +msgstr "clé primaire, " + +#: describe.c:2312 +msgid "unique" +msgstr "unique" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls non distincts" + +#: describe.c:2315 +msgid ", " +msgstr " , " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "pour la table « %s.%s »" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", prédicat (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", en cluster" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", invalide" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", déferrable" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", initialement déferré" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", identité réplica" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Index :" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Contraintes de vérification :" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Contraintes de clés étrangères :" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Référencé par :" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Politiques :" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Politiques (mode sécurité de ligne activé en forcé) :" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Politiques (mode sécurité de ligne activé) : (aucune)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Politiques (mode sécurité de ligne activé en forcé) : (aucune)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Politiques (mode sécurité de ligne désactivé) :" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Objets statistiques :" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Règles :" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Règles désactivées :" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Règles toujous activées :" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Règles activées uniquement sur le réplica :" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Publications :" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Définition de la vue :" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Triggers :" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Triggers utilisateurs désactivés :" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Triggers internes désactivés :" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Triggers toujours activés :" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Triggers activés uniquement sur le réplica :" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Serveur : %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "Options FDW : (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Hérite de" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Nombre de partitions : %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "Nombre de partitions : %d (utilisez \\d+ pour les lister)" + +#: describe.c:3424 +#, 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:3431 +msgid "Child tables" +msgstr "Tables enfant" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Partitions" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Table de type : %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Identité de réplicat" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Contient des OID : oui" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Méthode d'accès : %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", tablespace « %s »" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Liste des rôles" + +#: describe.c:3670 +msgid "Role name" +msgstr "Nom du rôle" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Attributs" + +#: describe.c:3673 +msgid "Member of" +msgstr "Membre de" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Superutilisateur" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "Pas d'héritage" + +#: describe.c:3690 +msgid "Create role" +msgstr "Créer un rôle" + +#: describe.c:3693 +msgid "Create DB" +msgstr "Créer une base" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "Ne peut pas se connecter" + +#: describe.c:3699 +msgid "Replication" +msgstr "Réplication" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Contournement RLS" + +#: describe.c:3712 +msgid "No connections" +msgstr "Sans connexions" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d connexion" +msgstr[1] "%d connexions" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Mot de passe valide jusqu'à " + +#: describe.c:3777 +msgid "Role" +msgstr "Rôle" + +#: describe.c:3778 +msgid "Database" +msgstr "Base de données" + +#: describe.c:3779 +msgid "Settings" +msgstr "Réglages" + +#: describe.c:3803 +#, 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:3806 +#, 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:3809 +#, c-format +msgid "Did not find any settings." +msgstr "Aucune configuration n'a été trouvée." + +#: describe.c:3814 +msgid "List of settings" +msgstr "Liste des paramètres" + +#: describe.c:3885 +msgid "index" +msgstr "index" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "Table TOAST" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "index partitionné" + +#: describe.c:3910 +msgid "permanent" +msgstr "permanent" + +#: describe.c:3911 +msgid "temporary" +msgstr "temporaire" + +#: describe.c:3912 +msgid "unlogged" +msgstr "non journalisé" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Persistence" + +#: describe.c:3929 +msgid "Access method" +msgstr "Méthode d'accès" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Liste des relations" + +#: describe.c:4063 +#, 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:4074 +msgid "List of partitioned indexes" +msgstr "Liste des index partitionnés" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Liste des tables partitionnées" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Liste des relations partitionnées" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Nom du parent" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Taille de la partition de dernier niveau" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Taille totale" + +#: describe.c:4258 +msgid "Trusted" +msgstr "De confiance" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Langage interne" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Gestionnaire d'appel" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Validateur" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Gestionnaire en ligne" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Liste des langages" + +#: describe.c:4346 +msgid "Check" +msgstr "Vérification" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Liste des domaines" + +#: describe.c:4424 +msgid "Source" +msgstr "Source" + +#: describe.c:4425 +msgid "Destination" +msgstr "Destination" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "Par défaut ?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Liste des conversions" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Paramètre" + +#: describe.c:4498 +msgid "Value" +msgstr "Valeur" + +#: describe.c:4505 +msgid "Context" +msgstr "Contexte" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Liste des paramètres de configuration" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Liste des paramètres de configuration à valeur personnalisée" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "Le serveur (version %s) ne supporte pas les triggers d'événement." + +#: describe.c:4587 +msgid "Event" +msgstr "Événement" + +#: describe.c:4589 +msgid "enabled" +msgstr "activé" + +#: describe.c:4590 +msgid "replica" +msgstr "réplicat" + +#: describe.c:4591 +msgid "always" +msgstr "toujours" + +#: describe.c:4592 +msgid "disabled" +msgstr "désactivé" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Activé" + +#: describe.c:4595 +msgid "Tags" +msgstr "Tags" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Liste des triggers sur évènement" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "Le serveur (version %s) ne supporte pas les statistiques étendues." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Dépendances" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Liste des statistiques étendues" + +#: describe.c:4745 +msgid "Source type" +msgstr "Type source" + +#: describe.c:4746 +msgid "Target type" +msgstr "Type cible" + +#: describe.c:4770 +msgid "in assignment" +msgstr "assigné" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Implicite ?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Liste des conversions explicites" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Fournisseur" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Déterministe ?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Liste des collationnements" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Liste des schémas" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Liste des analyseurs de la recherche de texte" + +#: describe.c:5167 +#, 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:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "Aucun analyseur de recherche de texte n'a été trouvé." + +#: describe.c:5245 +msgid "Start parse" +msgstr "Début de l'analyse" + +#: describe.c:5246 +msgid "Method" +msgstr "Méthode" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Obtenir le prochain jeton" + +#: describe.c:5252 +msgid "End parse" +msgstr "Fin de l'analyse" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Obtenir l'en-tête" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Obtenir les types de jeton" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Analyseur « %s.%s » de la recherche de texte" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Analyseur « %s » de la recherche de texte" + +#: describe.c:5289 +msgid "Token name" +msgstr "Nom du jeton" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Types de jeton pour l'analyseur « %s.%s »" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Types de jeton pour l'analyseur « %s »" + +#: describe.c:5350 +msgid "Template" +msgstr "Modèle" + +#: describe.c:5351 +msgid "Init options" +msgstr "Options d'initialisation" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Liste des dictionnaires de la recherche de texte" + +#: describe.c:5411 +msgid "Init" +msgstr "Initialisation" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Liste des modèles de la recherche de texte" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Liste des configurations de la recherche de texte" + +#: describe.c:5550 +#, 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:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "Aucune configuration de recherche de texte n'a été trouvée." + +#: describe.c:5619 +msgid "Token" +msgstr "Jeton" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Dictionnaires" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Configuration « %s.%s » de la recherche de texte" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Configuration « %s » de la recherche de texte" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Analyseur : « %s.%s »" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Analyseur : « %s »" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Liste des wrappers de données distantes" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Wrapper des données distantes" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Version" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Liste des serveurs distants" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Serveur" + +#: describe.c:5825 +msgid "User name" +msgstr "Nom de l'utilisateur" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Liste des correspondances utilisateurs" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Liste des tables distantes" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Liste des extensions installées" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "Aucune extension nommée « %s » n'a été trouvée." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "Aucune extension n'a été trouvée." + +#: describe.c:6075 +msgid "Object description" +msgstr "Description d'objet" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objets dans l'extension « %s »" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "mauvaise qualification du nom (trop de points entre les noms) : %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "les références entre bases de données ne sont pas implémentées : %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "Le serveur (version %s) ne supporte pas les publications." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Toutes les tables" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Insertions" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Mises à jour" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Suppressions" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Tronque" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Via la racine" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Liste des publications" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "Aucune publication nommée « %s » n'a été trouvée." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "Aucune publication n'a été trouvée." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Publication %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Tables :" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Tables des schémas :" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "Le serveur (version %s) ne supporte pas les souscriptions." + +#: describe.c:6497 +msgid "Publication" +msgstr "Publication" + +#: describe.c:6506 +msgid "Binary" +msgstr "Binaire" + +#: describe.c:6507 +msgid "Streaming" +msgstr "Flux" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Commit en deux phases" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Désactiver en cas d'erreur" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Validation synchrone" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Informations de connexion" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Ignore LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Liste des souscriptions" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "Type en entrée" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Type de stockage" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Classe d'opérateur" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Famille d'opérateur" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Liste des classes d'opérateurs" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Types applicables" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Liste des familles d'opérateurs" + +#: describe.c:6807 +msgid "Operator" +msgstr "Opérateur" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Stratégie" + +#: describe.c:6809 +msgid "ordering" +msgstr "ordre" + +#: describe.c:6810 +msgid "search" +msgstr "recherche" + +#: describe.c:6811 +msgid "Purpose" +msgstr "But" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "Tri famille d'opérateur" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Liste d'opérateurs des familles d'opérateurs" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Type de l'arg. gauche enregistré" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Type de l'arg. droit enregistré" + +#: describe.c:6904 +msgid "Number" +msgstr "Numéro" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Liste des fonctions de support des familles d'opérateurs" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "« Large objects »" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql est l'interface interactive de PostgreSQL.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Usage :\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPTIONS]... [BASE [UTILISATEUR]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Options générales :\n" + +#: help.c:84 +msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" +msgstr "" +" -c, --command=COMMANDE exécute une commande unique (SQL ou interne), puis\n" +" quitte\n" + +#: help.c:85 +#, c-format +msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr "" +" -d, --dbname=BASE indique le nom de la base de données à laquelle se\n" +" connecter (par défaut : « %s »)\n" + +#: help.c:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=FICHIER exécute les commandes du fichier, puis quitte\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list affiche les bases de données disponibles, puis quitte\n" + +#: help.c:89 +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" +" (par exemple : -v ON_ERROR_STOP=1)\n" + +#: help.c:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version affiche la version puis quitte\n" + +#: help.c:93 +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:94 +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\n" +" interactif)\n" + +#: help.c:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] affiche cette aide et quitte\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commandes liste les méta-commandes, puis quitte\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables liste les variables spéciales, puis quitte\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Options d'entrée/sortie :\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all affiche les lignes du script\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors affiche les commandes échouées\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries affiche les commandes envoyées au serveur\n" + +#: help.c:104 +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr "" +" -E, --echo-hidden affiche les requêtes engendrées par les commandes\n" +" internes\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FICHIER envoie les traces dans le fichier\n" + +#: help.c:106 +msgid " -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline désactive l'édition avancée de la ligne de commande\n" +" (readline)\n" + +#: help.c:107 +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr "" +" -o, --output=FICHIER écrit les résultats des requêtes dans un fichier (ou\n" +" |tube)\n" + +#: help.c:108 +msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgstr "" +" -q, --quiet s'exécute silencieusement (pas de messages, uniquement\n" +" le résultat des requêtes)\n" + +#: help.c:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr "" +" -s, --single-step active le mode étape par étape (confirmation pour\n" +" chaque requête)\n" + +#: help.c:110 +msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" +msgstr "" +" -S, --single-line active le mode ligne par ligne (EOL termine la\n" +" commande SQL)\n" + +#: help.c:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Options de formattage de la sortie :\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr "" +" -A, --no-align active le mode d'affichage non aligné des tables\n" +" (-P format=unaligned)\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr "" +" --csv mode d'affichage CSV (valeurs séparées par des\n" +" virgules)\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr "" +" -H, --html active le mode d'affichage HTML des tables\n" +" (-P format=html)\n" + +#: help.c:119 +msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" +msgstr "" +" -P, --pset=VAR[=ARG] initialise l'option d'impression VAR à ARG (voir la\n" +" commande \\pset)\n" + +#: help.c:120 +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\n" +" aligné (par défaut : saut de ligne)\n" + +#: help.c:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only affiche seulement les lignes (-P tuples_only)\n" + +#: help.c:123 +msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" +msgstr "" +" -T, --table-attr=TEXTE initialise les attributs des balises HTML de tableau\n" +" (largeur, bordure)\n" + +#: help.c:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded active l'affichage étendu des tables (-P expanded)\n" + +#: help.c:125 +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\n" +" non aligné à l'octet zéro\n" + +#: help.c:127 +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\n" +" affichage non aligné à l'octet zéro\n" + +#: help.c:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Options de connexion :\n" + +#: help.c:133 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" +msgstr "" +" -h, --host=HÔTE nom d'hôte du serveur de la base de données ou\n" +" répertoire de la socket (par défaut : %s)\n" + +#: help.c:134 +msgid "local socket" +msgstr "socket locale" + +#: help.c:137 +#, 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=UTILISATEUR\n" +" nom d'utilisateur de la base de données (par\n" +" défaut : « %s »)\n" + +#: help.c:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password ne demande jamais un mot de passe\n" + +#: help.c:143 +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:145 +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 de\n" +"la documentation de PostgreSQL.\n" +"\n" + +#: help.c:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Rapporter les bogues à <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "page d'accueil de %s : <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "Général\n" + +#: help.c:192 +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:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr " \\crosstabview [COLONNES] exécute la requête et affiche le résultat dans un tableau croisé\n" + +#: help.c:194 +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:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result 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:197 +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:198 +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:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [PRÉFIXE] exécute la requête et enregistre le résultat dans des variables psql\n" + +#: help.c:200 +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:201 +msgid " \\q quit psql\n" +msgstr " \\q quitte psql\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] exécute la requête toutes les SEC secondes\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Aide\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commandes] affiche l'aide sur les métacommandes\n" + +#: help.c:208 +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:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables affiche l'aide sur les variables spéciales\n" + +#: help.c:210 +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:213 +msgid "Query Buffer\n" +msgstr "Tampon de requête\n" + +#: help.c:214 +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:215 +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:216 +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:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p affiche le contenu du tampon de requête\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r efface le tampon de requêtes\n" + +#: help.c:220 +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:222 +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:225 +msgid "Input/Output\n" +msgstr "Entrée/Sortie\n" + +#: help.c:226 +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:227 +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:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FICHIER exécute les commandes du fichier\n" + +#: help.c:229 +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:230 +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:231 +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:232 +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:235 +msgid "Conditional\n" +msgstr "Conditionnel\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR début du bloc conditionnel\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif alternative à l'intérieur du bloc conditionnel courant\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else alternative finale à l'intérieur du bloc conditionnel courant\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif bloc conditionnel de fin\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Informations\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (options : S = affiche les objets systèmes, + = informations supplémentaires)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] affiche la liste des tables, vues et séquences\n" + +#: help.c:245 +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:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [MODÈLE] affiche les aggrégats\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [MODÈLE] affiche la liste des méthodes d'accès\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] affiche les classes d'opérateurs\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] affiche les familles d'opérateur\n" + +#: help.c:250 +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:251 +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:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [MODÈLE] affiche la liste des tablespaces\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [MODÈLE] affiche la liste des conversions\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [MODÈLE] affiche les paramètres de configuration\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [MODÈLE] affiche la liste des transtypages\n" + +#: help.c:256 +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:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [MODÈLE] affiche la liste des domaines\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [MODÈLE] affiche les droits par défaut\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MODÈLE] affiche la liste des tables distantes\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [MODÈLE] affiche la liste des serveurs distants\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MODÈLE] affiche la liste des tables distantes\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [MODÈLE] affiche la liste des correspondances utilisateurs\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [MODÈLE] affiche la liste des wrappers de données distantes\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" affiche la liste des fonctions [seulement agrégat/normal/procédure/trigger/window]\n" + +#: help.c:266 +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:267 +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:268 +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:269 +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:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [MODÈLE] affiche la liste des index\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] liste des « Large Objects », identique à \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MODÈLE] affiche la liste des langages procéduraux\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [MODÈLE] affiche la liste des vues matérialisées\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MODÈLE] affiche la liste des schémas\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" affiche la liste des opérateurs\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MODÈLE] affiche la liste des collationnements\n" + +#: help.c:279 +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:280 +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:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr "" +" \\drds [ROLEPTRN [DBPTRN]] liste la configuration utilisateur par base de données\n" +"\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[S+] [MODÈLE] affiche la liste des publications de réplication\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [MODÈLE] affiche la liste des souscriptions de réplication\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [MODÈLE] affiche la liste des séquences\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [MODÈLE] affiche la liste des tables\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [MODÈLE] affiche la liste des types de données\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [MODÈLE] affiche la liste des vues\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MODÈLE] affiche la liste des extensions\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [MODÈLE] affiche les statistiques étendues\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [MODÈLE] affiche les triggers sur évènement\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [MODÈLE] affiche la liste des bases de données\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] [FONCTION] édite la définition d'une fonction\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv [FONCTION] édite la définition d'une vue\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [MODÈLE] identique à \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "« Large objects »\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr "" +" \\lo_export LOBOID FICHIER\n" +" écrit un « Large Object » dans le fichier\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import FICHIER [COMMENTAIRE]\n" +" lit un « Large Object » à partir du fichier\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\dl[+] liste des « Large Objects »\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID supprime un « Large Object »\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Formatage\n" + +#: help.c:307 +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:308 +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:309 +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:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H bascule le mode de sortie HTML (actuellement %s)\n" + +#: help.c:312 +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:319 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t affiche uniquement les lignes (actuellement %s)\n" + +#: help.c:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [CHAÎNE] initialise les attributs HTML de la balise
,\n" +" ou l'annule en l'absence d'argument\n" + +#: help.c:322 +#, 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:323 +msgid "auto" +msgstr "auto" + +#: help.c:326 +msgid "Connection\n" +msgstr "Connexions\n" + +#: help.c:328 +#, c-format +msgid "" +" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" +" connect to new database (currently \"%s\")\n" +msgstr "" +" \\c[onnect] {[BASE|- UTILISATEUR|- HÔTE|- PORT|-] | conninfo}\n" +" se connecte à une autre base de données\n" +" (actuellement « %s »)\n" + +#: help.c:332 +msgid "" +" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" +" connect to new database (currently no connection)\n" +msgstr "" +" \\c[onnect] {[BASE|- UTILISATEUR|- HÔTE|- PORT|-] | conninfo}\n" +" se connecte à une nouvelle base de données\n" +" (aucune connexion actuellement)\n" + +#: help.c:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo affiche des informations sur la connexion en cours\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [ENCODAGE] affiche ou initialise l'encodage du client\n" + +#: help.c:336 +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:339 +msgid "Operating System\n" +msgstr "Système d'exploitation\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [RÉPERTOIRE] change de répertoire de travail\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVVAR récupère une variable d'environnement\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NOM [VALEUR] (dés)initialise une variable d'environnement\n" + +#: help.c:343 +#, 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:345 +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:348 +msgid "Variables\n" +msgstr "Variables\n" + +#: help.c:349 +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:350 +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:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NOM désactive (supprime) la variable interne\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"Liste des variables traitées spécialement\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "variables psql :\n" + +#: help.c:394 +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:396 +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:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" le nom de base de données actuel\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" encodage du jeu de caractères client\n" + +#: help.c:411 +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:413 +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:415 +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:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" si activé, les méthodes de compression methods ne sont pas affichées\n" +"\n" + +#: help.c:419 +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:421 +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:423 +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:425 +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:427 +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:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" valeur du dernier OID affecté\n" + +#: help.c:431 +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:434 +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:436 +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:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" port du serveur pour la connexion actuelle\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" spécifie l'invite standard de psql\n" + +#: help.c:442 +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:444 +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:446 +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:448 +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:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" affiche tous les résultats d'une requête combinée (\\;) au lieu du dernier uniquement\n" + +#: help.c:455 +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:457 +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:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" mode pas à pas (identique à l'option -s)\n" + +#: help.c:461 +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:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" l'utilisateur actuellement connecté\n" + +#: help.c:465 +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:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Paramètres d'affichage :\n" + +#: help.c:474 +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:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" style de bordure (nombre)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" largeur cible pour le format encadré\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (ou x)\n" +" sortie étendue [on, off, auto]\n" + +#: help.c:482 +#, 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:485 +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:487 +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:489 +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:491 +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:493 +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:495 +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:497 +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:499 +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:501 +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:503 +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:506 +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:508 +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:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Variables d'environnement :\n" + +#: help.c:519 +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:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" nombre de colonnes pour le format encadré\n" + +#: help.c:526 +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:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" identique au paramètre de connexion dbname\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" identique au paramètre de connexion host\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" nom du fichier de mot de passe\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" mot de passe de connexion (non recommendé)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" identique au paramètre de connexion port\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" identique au paramètre de connexion user\n" + +#: help.c:540 +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:542 +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:544 +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:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" nom du paginateur externe\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" nom du paginateur externe utilisé pour \\watch\n" + +#: help.c:552 +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:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" shell utilisé par la commande \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" répertoire pour les fichiers temporaires\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Aide-mémoire disponible :\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, 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:535 +#, 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" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if : échappé" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Saisissez « \\q » pour quitter %s.\n" + +#: mainloop.c:214 +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:295 +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:297 +msgid "Use \\? for help." +msgstr "Utilisez \\? pour l'aide." + +#: mainloop.c:301 +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:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Utilisez \\q pour quitter." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Utilisez control-D pour quitter." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Utilisez control-C pour quitter." + +#: mainloop.c:459 mainloop.c:618 +#, 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:636 +#, c-format +msgid "reached EOF without finding closing \\endif(s)" +msgstr "a atteint EOF sans trouver le(s) \\endif fermant" + +#: psqlscanslash.l:638 +#, c-format +msgid "unterminated quoted string" +msgstr "chaîne entre guillemets non terminée" + +#: psqlscanslash.l:811 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "nom" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "signature_agrégat" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "nouveau_nom" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "nouveau_propriétaire" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "nouveau_schéma" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +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:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "mode_argument" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "nom_agrégat" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "type_argument" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "option" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "où option peut être :" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "allowconn" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "limite_de_connexion" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "istemplate" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "nouveau_tablespace" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "paramètre_configuration" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "valeur" + +#: sql_help.c:200 +msgid "target_role" +msgstr "rôle_cible" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "nom_schéma" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "grant_ou_revoke_raccourci" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "où abbreviated_grant_or_revoke fait partie de :" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "nom_rôle" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "expression" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "contrainte_domaine" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "nom_contrainte" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "nouvelle_nom_contrainte" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "nouvelle_version" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "objet_membre" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "où objet_membre fait partie de :" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "nom_objet" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "nom_agrégat" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "type_source" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "type_cible" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "nom_fonction" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "nom_opérateur" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "type_argument_gauche" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "type_argument_droit" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "méthode_indexage" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "nom_procédure" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "nom_routine" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "nom_type" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "nom_langage" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "et signature_agrégat est :" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "fonction_gestionnaire" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "fonction_validateur" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "action" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "nom_colonne" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "nouvelle_nom_colonne" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "où action fait partie de :" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "type_données" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "collationnement" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "contrainte_colonne" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "entier" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "option_attribut" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "contrainte_table" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "nom_trigger" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "table_parent" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "nom_extension" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "coût_exécution" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "lignes_de_résultat" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "fonction_support" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "specification_role" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "nom_utilisateur" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "où specification_role peut être :" + +#: sql_help.c:575 +msgid "group_name" +msgstr "nom_groupe" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "nom_tablespace" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "nom_index" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "paramètre_stockage" + +#: sql_help.c:607 +msgid "column_number" +msgstr "numéro_colonne" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "oid_large_object" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "méthode_compression" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "new_access_method" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "join_proc" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "numéro_de_stratégie" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "type_op" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "nom_famille_tri" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "numéro_de_support" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "type_argument" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "nom_table" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "expression_using" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "expression_check" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "objet_publication" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "paramètre_publication" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "où publication_object fait partie de :" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "mot_de_passe" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "horodatage" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "nom_base_de_donnée" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "incrément" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "valeur_min" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "valeur_max" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "début" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "nouveau_début" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "cache" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "nouvelle_cible" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "conninfo" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "nom_publication" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "option_publication" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "option_rafraichissement" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "paramètre_souscription" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "option_skip" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "nom_partition" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "spec_limite_partition" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "options_séquence" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "option_séquence" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "contrainte_table_utilisant_index" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "nom_règle_réécriture" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "et partition_bound_spec est :" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "expr_limite_partition" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "numeric_literal" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "et contrainte_colonne est :" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "expression_par_défaut" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "expression_génération" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "paramètres_index" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "table_référence" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "colonne_référence" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "action" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "et contrainte_table est :" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "élément_exclusion" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "opérateur" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "prédicat" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "et contrainte_table_utilisant_index est :" + +#: sql_help.c:1421 sql_help.c:2967 +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:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "élément_exclusion dans une contrainte EXCLUDE est :" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "classe_d_opérateur" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "referential_action dans une contrainte FOREIGN KEY/REFERENCES est :" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "option_tablespace" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "type_jeton" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "nom_dictionnaire" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "ancien_dictionnaire" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "nouveau_dictionnaire" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "nom_attribut" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "nouveau_nom_attribut" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "nouvelle_valeur_enum" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "valeur_enum_voisine" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "valeur_enum_existante" + +#: sql_help.c:1589 +msgid "property" +msgstr "propriété" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "nom_serveur" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "nom_option_vue" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "valeur_option_vue" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "table_et_colonnes" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "où option fait partie de :" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "et table_et_colonnes est :" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "mode_transaction" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "où mode_transaction fait partie de :" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "argument" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "nom_relation" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "nom_domaine" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "nom_politique" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "nom_règle" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "littéral_chaîne" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "id_transaction" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "nom_fichier" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "commande" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "condition" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "requête" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "nom_format" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "caractère_délimiteur" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "chaîne_null" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "caractère_guillemet" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "chaîne_d_échappement" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "nom_encodage" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "access_method_type" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "type_données_arg" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "sfunc" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "type_de_données_statut" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "taille_de_données_statut" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "ffunc" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "combinefunc" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "serialfunc" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "deserialfunc" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "condition_initiale" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "msfunc" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "minvfunc" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "m_type_de_données_statut" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "m_taille_de_données_statut" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "mffunc" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "m_condition_initiale" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "opérateur_de_tri" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "ou l'ancienne syntaxe" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "type_base" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "locale" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "fournisseur" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "version" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "collationnement_existant" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "encodage_source" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "encodage_destination" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "modèle" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "encodage" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "stratégie" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "icu_locale" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "locale_provider" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "collation_version" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "contrainte" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "où la contrainte est :" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "événement" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "filter_variable" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "filtre_valeur" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "où contrainte_colonne est :" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "type_en_retour" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "type_colonne" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "définition" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "fichier_objet" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "symbole_link" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "corps_sql" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "méthode" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "paramètre_opclass" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "gestionnaire_d_appel" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "gestionnaire_en_ligne" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "fonction_val" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "nom_famille" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "type_stockage" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "où événement fait partie de :" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "élément_schéma" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "type_serveur" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "version_serveur" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "nom_fdw" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "nom_statistique" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "statistics_kind" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "nom_souscription" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "table_source" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "option_like" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "et option_like est :" + +#: sql_help.c:3012 +msgid "directory" +msgstr "répertoire" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "nom_analyseur" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "configuration_source" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "fonction_start" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "fonction_gettoken" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "fonction_end" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "fonction_lextypes" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "fonction_headline" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "fonction_init" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "fonction_lexize" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "nom_fonction_from_sql" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "nom_fonction_to_sql" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "nom_table_référencée" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "nom_relation_transition" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "arguments" + +#: sql_help.c:3170 +msgid "label" +msgstr "label" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "sous_type" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "classe_opérateur_sous_type" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "fonction_canonique" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "fonction_diff_sous_type" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "nom_type_multirange" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "fonction_en_sortie" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "fonction_en_sortie" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "fonction_receive" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "fonction_send" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "fonction_en_entrée_modificateur_type" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "fonction_en_sortie_modificateur_type" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "fonction_analyze" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "fonction_indice" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "longueur_interne" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "alignement" + +#: sql_help.c:3189 +msgid "storage" +msgstr "stockage" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "type_like" + +#: sql_help.c:3191 +msgid "category" +msgstr "catégorie" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "préféré" + +#: sql_help.c:3193 +msgid "default" +msgstr "par défaut" + +#: sql_help.c:3194 +msgid "element" +msgstr "élément" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "délimiteur" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "collationnable" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "requête_with" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "alias" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "élément_from" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "nom_curseur" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "expression_en_sortie" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "nom_en_sortie" + +#: sql_help.c:3316 +msgid "code" +msgstr "code" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "paramètre" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "instruction" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "direction" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "où direction fait partie de :" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "nombre" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "nom_séquence" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "nom_argument" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "type_arg" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "schema_distant" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "schéma_local" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "cible_conflit" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "action_conflit" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "où cible_conflit fait partie de :" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "index_nom_colonne" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "index_expression" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "index_prédicat" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "où action_conflit fait partie de :" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "sous-SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "canal" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "mode_de_verrou" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "où mode_de_verrou fait partie de :" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "target_table_name" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "target_alias" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "data_source" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "condition_de_jointure" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "when_clause" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "où data_source est :" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "source_table_name" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "source_query" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "source_alias" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "et when_clause est :" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "merge_delete" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "merge_delete" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "merge_insert" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "et merge_insert est :" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "et merge_update est :" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "et merge_delete est :" + +#: sql_help.c:4132 +msgid "payload" +msgstr "contenu" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "ancien_rôle" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "nouveau_rôle" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "nom_savepoint" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "element_regroupement" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "nom_window" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "définition_window" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "sélection" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "où élément_from fait partie de :" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "alias_colonne" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "méthode_echantillonnage" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "graine" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "nom_requête_with" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "définition_colonne" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "type_de_jointure" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "colonne_de_jointure" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "join_utilisant_alias" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "où element_regroupement fait partie de :" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "et requête_with est :" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "valeurs" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "update" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "nom_colonne_seq_recherche" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "nom_colonne_marque_cycle" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "valeur_marque_cycle" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "défaut_marque_cyle" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "nom_colonne_chemin_cycle" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "nouvelle_table" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "id_snapshot" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "expression_de_tri" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "abandonner la transaction en cours" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "modifier la définition d'une fonction d'agrégation" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "modifier la définition d'un collationnement" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "modifier la définition d'une conversion" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "modifier une base de données" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "définir les droits d'accès par défaut" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "modifier la définition d'un domaine" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "modifier la définition d'un trigger sur évènement" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "modifier la définition d'une extension" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "modifier la définition d'un wrapper de données distantes" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "modifier la définition d'une table distante" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "modifier la définition d'une fonction" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "modifier le nom d'un groupe ou la liste des ses membres" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "modifier la définition d'un index" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "modifier la définition d'un langage procédural" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "modifier la définition d'un « Large Object »" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "modifier la définition d'une vue matérialisée" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "modifier la définition d'un opérateur" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "modifier la définition d'une classe d'opérateurs" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "modifier la définition d'une famille d'opérateur" + +#: sql_help.c:5248 +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:5254 +msgid "change the definition of a procedure" +msgstr "modifier la définition d'une procédure" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "modifier la définition d'une publication" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "modifier un rôle" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "modifier la définition d'une routine" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "modifier la définition d'une règle" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "modifier la définition d'un schéma" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "modifier la définition d'un générateur de séquence" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "modifier la définition d'un serveur distant" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "modifier la définition d'un objet de statistiques étendues" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "modifier la définition d'une souscription" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "modifie un paramètre de configuration du serveur" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "modifier la définition d'une table" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "modifier la définition d'un tablespace" + +#: sql_help.c:5332 +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:5338 +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:5344 +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:5350 +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:5356 +msgid "change the definition of a trigger" +msgstr "modifier la définition d'un trigger" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "modifier la définition d'un type" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "modifier la définition d'une correspondance d'utilisateur" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "modifier la définition d'une vue" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "acquérir des statistiques concernant la base de données" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "débuter un bloc de transaction" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "appeler une procédure" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "forcer un point de vérification des journaux de transactions" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "fermer un curseur" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "réorganiser (cluster) une table en fonction d'un index" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "définir ou modifier les commentaires d'un objet" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "valider la transaction en cours" + +#: sql_help.c:5434 +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:5440 +msgid "copy data between a file and a table" +msgstr "copier des données entre un fichier et une table" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "définir une nouvelle méthode d'accès" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "définir une nouvelle fonction d'agrégation" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "définir un nouveau transtypage" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "définir un nouveau collationnement" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "définir une nouvelle conversion d'encodage" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "créer une nouvelle base de données" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "définir un nouveau domaine" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "définir un nouveau trigger sur évènement" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "installer une extension" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "définir un nouveau wrapper de données distantes" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "définir une nouvelle table distante" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "définir une nouvelle fonction" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "définir un nouveau rôle" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "définir un nouvel index" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "définir un nouveau langage de procédures" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "définir une nouvelle vue matérialisée" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "définir un nouvel opérateur" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "définir une nouvelle classe d'opérateur" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "définir une nouvelle famille d'opérateur" + +#: sql_help.c:5560 +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:5566 +msgid "define a new procedure" +msgstr "définir une nouvelle procédure" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "définir une nouvelle publication" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "définir une nouvelle règle de réécriture" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "définir un nouveau schéma" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "définir un nouveau générateur de séquence" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "définir un nouveau serveur distant" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "définir des statistiques étendues" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "définir une nouvelle souscription" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "définir une nouvelle table" + +#: sql_help.c:5626 sql_help.c:6148 +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:5632 +msgid "define a new tablespace" +msgstr "définir un nouveau tablespace" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "définir une nouvelle configuration de la recherche de texte" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "définir un nouveau dictionnaire de la recherche de texte" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "définir un nouvel analyseur de la recherche de texte" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "définir un nouveau modèle de la recherche de texte" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "définir une nouvelle transformation" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "définir un nouveau trigger" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "définir un nouveau type de données" + +#: sql_help.c:5686 +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:5692 +msgid "define a new view" +msgstr "définir une nouvelle vue" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "désallouer une instruction préparée" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "définir un curseur" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "supprimer des lignes d'une table" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "annuler l'état de la session" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "exécute un bloc de code anonyme" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "supprimer une méthode d'accès" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "supprimer une fonction d'agrégation" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "supprimer un transtypage" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "supprimer un collationnement" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "supprimer une conversion" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "supprimer une base de données" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "supprimer un domaine" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "supprimer un trigger sur évènement" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "supprimer une extension" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "supprimer un wrapper de données distantes" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "supprimer une table distante" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "supprimer une fonction" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "supprimer un rôle de la base de données" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "supprimer un index" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "supprimer un langage procédural" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "supprimer une vue matérialisée" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "supprimer un opérateur" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "supprimer une classe d'opérateur" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "supprimer une famille d'opérateur" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "supprimer les objets appartenant à un rôle" + +#: sql_help.c:5848 +msgid "remove a row-level security policy from a table" +msgstr "supprimer une politique de sécurité au niveau ligne pour une table" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "supprimer une procédure" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "supprimer une publication" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "supprimer une routine" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "supprimer une règle de réécriture" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "supprimer un schéma" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "supprimer une séquence" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "supprimer un descripteur de serveur distant" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "supprimer des statistiques étendues" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "supprimer une souscription" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "supprimer une table" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "supprimer un tablespace" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "supprimer une configuration de la recherche de texte" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "supprimer un dictionnaire de la recherche de texte" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "supprimer un analyseur de la recherche de texte" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "supprimer un modèle de la recherche de texte" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "supprimer une transformation" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "supprimer un trigger" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "supprimer un type de données" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "supprime une correspondance utilisateur pour un serveur distant" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "supprimer une vue" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "exécuter une instruction préparée" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "afficher le plan d'exécution d'une instruction" + +#: sql_help.c:6004 +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:6010 +msgid "define access privileges" +msgstr "définir des privilèges d'accès" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "importer la définition d'une table à partir d'un serveur distant" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "créer de nouvelles lignes dans une table" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "se mettre à l'écoute d'une notification" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "charger un fichier de bibliothèque partagée" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "verrouiller une table" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "insère, modifie ou supprime des lignes d'une table de façon conditionnelle" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "positionner un curseur" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "engendrer une notification" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "préparer une instruction pour exécution" + +#: sql_help.c:6070 +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:6076 +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:6082 +msgid "replace the contents of a materialized view" +msgstr "remplacer le contenu d'une vue matérialisée" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "reconstruire des index" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "détruire un point de retournement précédemment défini" + +#: sql_help.c:6100 +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:6106 +msgid "remove access privileges" +msgstr "supprimer des privilèges d'accès" + +#: sql_help.c:6118 +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:6124 +msgid "roll back to a savepoint" +msgstr "annuler jusqu'au point de retournement" + +#: sql_help.c:6130 +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:6136 +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:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "extraire des lignes d'une table ou d'une vue" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "modifier un paramètre d'exécution" + +#: sql_help.c:6160 +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:6166 +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:6172 +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:6178 +msgid "set the characteristics of the current transaction" +msgstr "définir les caractéristiques de la transaction en cours" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "afficher la valeur d'un paramètre d'exécution" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "vider une table ou un ensemble de tables" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "arrêter l'écoute d'une notification" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "actualiser les lignes d'une table" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "compacter et optionnellement analyser une base de données" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "calculer un ensemble de lignes" + +#: startup.c:220 +#, 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:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "n'a pas pu ouvrir le journal applicatif « %s » : %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Saisissez « help » pour l'aide.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "n'a pas pu configurer le paramètre d'impression « %s »" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Essayez « %s --help » pour plus d'informations." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "option supplémentaire « %s » ignorée" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "n'a pas pu trouver son propre exécutable" + +#: tab-complete.c:5955 +#, 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 " \"%s\"" +#~ msgstr " « %s »" + +#~ msgid " \"%s\" IN %s %s" +#~ msgstr " \"%s\" DANS %s %s" + +#~ 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 " -?, --help show this help, then exit\n" +#~ msgstr " -?, --help affiche cette aide puis quitte\n" + +#~ 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 " \\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 " \\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 " \\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 " \\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 "" +#~ " \\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 " \\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 " \\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 " \\l[+] list all databases\n" +#~ msgstr " \\l[+] affiche la liste des bases de données\n" + +#, 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 opérations sur les « Large Objects »\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 " as user \"%s\"" +#~ msgstr " comme utilisateur « %s »" + +#~ msgid " at port \"%s\"" +#~ msgstr " sur le port « %s »" + +#~ msgid " on host \"%s\"" +#~ msgstr " sur l'hôte « %s »" + +#~ msgid "%s\n" +#~ msgstr "%s\n" + +#~ msgid "%s: %s\n" +#~ msgstr "%s : %s\n" + +#~ msgid "%s: could not open log file \"%s\": %s\n" +#~ msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s » : %s\n" + +#~ msgid "%s: could not set variable \"%s\"\n" +#~ msgstr "%s : n'a pas pu initialiser la variable « %s »\n" + +#~ 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 "(1 row)" +#~ msgid_plural "(%lu rows)" +#~ msgstr[0] "(1 ligne)" +#~ msgstr[1] "(%lu lignes)" + +#~ msgid "(No rows)\n" +#~ msgstr "(Aucune ligne)\n" + +#~ msgid "+ opt(%d) = |%s|\n" +#~ msgstr "+ opt(%d) = |%s|\n" + +#~ msgid "?%c? \"%s.%s\"" +#~ msgstr "?%c? « %s.%s »" + +#~ msgid "Access privileges for database \"%s\"" +#~ msgstr "Droits d'accès pour la base de données « %s »" + +#~ 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" + +#~ msgid "Copy, Large Object\n" +#~ msgstr "Copie, « Large Object »\n" + +#~ msgid "Could not send cancel request: %s" +#~ msgstr "N'a pas pu envoyer la requête d'annulation : %s" + +#~ msgid "Disabled triggers:" +#~ msgstr "Triggers désactivés :" + +#~ msgid "Enter new password: " +#~ msgstr "Saisir le nouveau mot de passe : " + +#~ msgid "Exclusion constraints:" +#~ msgstr "Contraintes d'exclusion :" + +#~ msgid "Invalid command \\%s. Try \\? for help.\n" +#~ msgstr "Commande \\%s invalide. Essayez \\? pour l'aide-mémoire.\n" + +#~ msgid "Modifier" +#~ msgstr "Modificateur" + +#~ msgid "Modifiers" +#~ msgstr "Modificateurs" + +#~ msgid "No matching relations found.\n" +#~ msgstr "Aucune relation correspondante trouvée.\n" + +#~ msgid "No matching settings found.\n" +#~ msgstr "Aucun paramètre correspondant trouvé.\n" + +#~ 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 relations found.\n" +#~ msgstr "Aucune relation trouvée.\n" + +#~ msgid "No settings found.\n" +#~ msgstr "Aucun paramètre trouvé.\n" + +#~ msgid "Object Description" +#~ msgstr "Description d'un objet" + +#~ msgid "Password encryption failed.\n" +#~ msgstr "Échec du chiffrement du mot de passe.\n" + +#~ msgid "Procedure" +#~ msgstr "Procédure" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Rapporter les bogues à .\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Rapportez les bogues à .\n" + +#~ msgid "SSL connection (unknown cipher)\n" +#~ msgstr "Connexion SSL (chiffrement inconnu)\n" + +#~ 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." + +#, c-format +#~ msgid "Special relation \"%s.%s\"" +#~ msgstr "Relation spéciale « %s.%s »" + +#, 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." + +#, c-format +#~ msgid "The server (version %s) does not support collations." +#~ msgstr "Le serveur (version %s) ne supporte pas les collationnements." + +#, 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." + +#, 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." + +#, c-format +#~ msgid "The server (version %s) does not support foreign servers." +#~ msgstr "Le serveur (version %s) ne supporte pas les serveurs distants." + +#, c-format +#~ msgid "The server (version %s) does not support foreign tables." +#~ msgstr "Le serveur (version %s) ne supporte pas les tables distantes." + +#, 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." + +#, 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." + +#, 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." + +#, 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." + +#, 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." + +#, 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." + +#, c-format +#~ msgid "The server (version %s) does not support tablespaces." +#~ msgstr "Le serveur (version %s) ne supporte pas les tablespaces." + +#, c-format +#~ msgid "The server (version %s) does not support user mappings." +#~ msgstr "Le serveur (version %s) ne supporte pas les correspondances d'utilisateurs." + +#, c-format +#~ msgid "Try \"%s --help\" for more information.\n" +#~ msgstr "Essayez « %s --help » pour plus d'informations.\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 "Watch every %lds\t%s" +#~ msgstr "Vérifier chaque %lds\t%s" + +#~ 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 "\\%s: error\n" +#~ msgstr "\\%s : erreur\n" + +#~ msgid "\\%s: error while setting variable\n" +#~ msgstr "\\%s : erreur lors de l'initialisation de la variable\n" + +#~ msgid "\\copy: %s" +#~ msgstr "\\copy : %s" + +#~ msgid "\\copy: unexpected response (%d)\n" +#~ msgstr "\\copy : réponse inattendue (%d)\n" + +#, c-format +#~ msgid "\\watch cannot be used with COPY" +#~ msgstr "\\watch ne peut pas être utilisé avec COPY" + +#~ msgid "agg_name" +#~ msgstr "nom_d_agrégat" + +#~ msgid "agg_type" +#~ msgstr "type_aggrégat" + +#~ msgid "attribute" +#~ msgstr "attribut" + +#~ 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 "collate %s" +#~ msgstr "collationnement %s" + +#~ msgid "collation_name" +#~ msgstr "nom_collation" + +#~ msgid "column" +#~ msgstr "colonne" + +#~ msgid "contains support for command-line editing" +#~ msgstr "contient une gestion avancée de la ligne de commande" + +#~ msgid "could not change directory to \"%s\"" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" + +#~ msgid "could not change directory to \"%s\": %s" +#~ msgstr "n'a pas pu changer le répertoire par « %s » : %s" + +#~ 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 connect to server: %s" +#~ msgstr "n'a pas pu se connecter au serveur : %s" + +#~ msgid "could not execute command \"%s\": %s\n" +#~ msgstr "n'a pas pu exécuter la commande « %s » : %s\n" + +#~ msgid "could not get current user name: %s\n" +#~ msgstr "n'a pas pu obtenir le nom d'utilisateur courant : %s\n" + +#~ msgid "could not identify current directory: %s" +#~ msgstr "n'a pas pu identifier le répertoire courant : %s" + +#~ msgid "could not open temporary file \"%s\": %s\n" +#~ msgstr "n'a pas pu ouvrir le fichier temporaire « %s » : %s\n" + +#~ msgid "could not read symbolic link \"%s\"" +#~ msgstr "n'a pas pu lire le lien symbolique « %s »" + +#~ msgid "could not set variable \"%s\"\n" +#~ msgstr "n'a pas pu initialiser la variable « %s »\n" + +#~ msgid "could not stat file \"%s\": %s\n" +#~ msgstr "n'a pas pu tester le fichier « %s » : %s\n" + +#~ msgid "data type" +#~ msgstr "type de données" + +#~ msgid "default %s" +#~ msgstr "Par défaut, %s" + +#~ msgid "define a new constraint trigger" +#~ msgstr "définir une nouvelle contrainte de déclenchement" + +#, c-format +#~ msgid "fatal: " +#~ msgstr "fatal : " + +#~ msgid "from_list" +#~ msgstr "liste_from" + +#~ msgid "input_data_type" +#~ msgstr "type_de_données_en_entrée" + +#~ msgid "lock a named relation (table, etc)" +#~ msgstr "verrouille une relation nommée (table, etc)" + +#~ msgid "match" +#~ msgstr "match" + +#~ msgid "new_column" +#~ msgstr "nouvelle_colonne" + +#~ msgid "normal" +#~ msgstr "normal" + +#~ msgid "not null" +#~ msgstr "non NULL" + +#~ msgid "pclose failed: %m" +#~ msgstr "échec de pclose : %m" + +#~ msgid "pclose failed: %s" +#~ msgstr "échec de pclose : %s" + +#~ msgid "rolename" +#~ msgstr "nom_rôle" + +#~ msgid "serialtype" +#~ msgstr "serialtype" + +#~ msgid "special" +#~ msgstr "spécial" + +#~ msgid "statistic_type" +#~ msgstr "type_statistique" + +#~ msgid "tablespace" +#~ msgstr "tablespace" + +#~ msgid "text" +#~ msgstr "texte" + +#~ msgid "timezone" +#~ msgstr "fuseau_horaire" + +#, c-format +#~ msgid "unexpected result status for \\watch" +#~ msgstr "statut résultat inattendu pour \\watch" + +#~ msgid "unterminated quoted string\n" +#~ msgstr "chaîne entre guillemets non terminée\n" + +#~ msgid "where direction can be empty or one of:" +#~ msgstr "où direction peut être vide ou faire partie de :" diff --git a/src/bin/psql/po/it.po b/src/bin/psql/po/it.po new file mode 100644 index 0000000..e5cd7ef --- /dev/null +++ b/src/bin/psql/po/it.po @@ -0,0 +1,6647 @@ +# +# 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 , 2012-2017. +# Cosimo D'Arcangelo +# Massimo Mangoni +# Mirko Tebaldi +# Gabriele Bartolini +# +# 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@lists.postgresql.org\n" +"POT-Creation-Date: 2022-09-26 08:16+0000\n" +"PO-Revision-Date: 2022-09-26 15:03+0200\n" +"Last-Translator: Daniele Varrazzo \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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 3.1.1\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "errore: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "avviso: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "dettaglio: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "suggerimento: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "identificazione della directory corrente fallita: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "binario non valido \"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "lettura del binario \"%s\" fallita" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "programma \"%s\" da eseguire non trovato" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "spostamento nella directory \"%s\" fallito: %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "lettura del link simbolico \"%s\" fallita: %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() non riuscito: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1320 command.c:3316 command.c:3365 command.c:3489 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, c-format +msgid "out of memory" +msgstr "memoria esaurita" + +#: ../../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 esaurita\n" + +#: ../../common/fe_memutils.c:92 ../../common/fe_memutils.c:154 +#, 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 "impossibile cercare l'ID utente effettivo %ld: %s" + +#: ../../common/username.c:45 command.c:576 +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:62 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "processo figlio terminato da eccezione 0x%X" + +#: ../../common/wait_error.c:66 +#, c-format +msgid "child process was terminated by signal %d: %s" +msgstr "processo figlio terminato da segnale %d: %s" + +#: ../../common/wait_error.c:72 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "processo figlio uscito con stato non riconosciuto %d" + +#: ../../fe_utils/cancel.c:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Richiesta di annullamento inviata\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "Impossibile inviare la richiesta di annullamento: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu riga)" +msgstr[1] "(%lu righe)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Interrotto\n" + +#: ../../fe_utils/print.c:3173 +#, 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:3213 +#, 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:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "il formato di output non è valido (errore interno): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "saltare l'espansione ricorsiva della variabile \"%s\"" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "impossibile cercare l'ID utente locale %d: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "l'utente locale con ID %d non esiste" + +#: command.c:233 +#, c-format +msgid "invalid command \\%s" +msgstr "comando errato \\%s" + +#: command.c:235 +#, c-format +msgid "Try \\? for help." +msgstr "Usa \\? per avere un aiuto." + +#: command.c:253 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: parametro in eccesso \"%s\" ignorato" + +#: command.c:305 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "comando \\%s ignorato; usa \\endif o Ctrl-C per uscire dal blocco \\if corrente" + +#: command.c:574 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "directory home non trovata per l'ID utente %ld: %s" + +#: command.c:593 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: spostamento della directory a \"%s\" fallito: %m" + +#: command.c:618 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Al momento non sei connesso ad un database.\n" + +#: command.c:628 +#, c-format +msgid "You are connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n" +msgstr "Sei collegato al database \"%s\" con nome utente \"%s\" sull'host \"%s\" porta \"%s\".\n" + +#: command.c:631 +#, 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:637 +#, c-format +msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n" +msgstr "Sei collegato al database \"%s\" con nome utente \"%s\" sull'host \"%s\" (indirizzo \"%s\") sulla porta \"%s\".\n" + +#: command.c:640 +#, 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:1031 command.c:1126 command.c:2660 +#, c-format +msgid "no query buffer" +msgstr "nessun buffer query" + +#: command.c:1064 command.c:5497 +#, c-format +msgid "invalid line number: %s" +msgstr "numero di riga non valido: \"%s\"" + +#: command.c:1202 +msgid "No changes" +msgstr "Nessuna modifica" + +#: command.c:1281 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: nome codifica errato oppure non esiste una procedura di conversione" + +#: command.c:1316 command.c:2119 command.c:3312 command.c:3511 command.c:5599 +#: common.c:177 common.c:226 common.c:395 common.c:1137 common.c:1155 +#: common.c:1229 common.c:1336 common.c:1374 common.c:1459 common.c:1495 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1323 +msgid "There is no previous error." +msgstr "Non c'è un errore precedente." + +#: command.c:1436 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: parentesi a destra mancanti" + +#: command.c:1520 command.c:1650 command.c:1955 command.c:1969 command.c:1988 +#: command.c:2172 command.c:2414 command.c:2627 command.c:2667 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: parametro richiesto mancante" + +#: command.c:1781 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: non può apparire dopo \\else" + +#: command.c:1786 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: \\if corrispondente non trovato" + +#: command.c:1850 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: non può apparire dopo \\else" + +#: command.c:1855 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: \\if corrispondente non trovato" + +#: command.c:1895 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: \\if corrispondente non trovato" + +#: command.c:2052 +msgid "Query buffer is empty." +msgstr "Il buffer query è vuoto." + +#: command.c:2095 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Inserisci la password per l'utente \"%s\": " + +#: command.c:2099 +msgid "Enter it again: " +msgstr "Conferma password: " + +#: command.c:2108 +#, c-format +msgid "Passwords didn't match." +msgstr "Le password non corrispondono." + +#: command.c:2207 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: errore nella lettura del valore della variabile" + +#: command.c:2310 +msgid "Query buffer reset (cleared)." +msgstr "Buffer query resettato (svuotato)." + +#: command.c:2332 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "Storia scritta nel file \"%s\".\n" + +#: command.c:2419 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: il nome della variabile d'ambiente non deve contenere \"=\"" + +#: command.c:2467 +#, c-format +msgid "function name is required" +msgstr "il nome della funzione è richiesto" + +#: command.c:2469 +#, c-format +msgid "view name is required" +msgstr "il nome della vista è richiesto" + +#: command.c:2599 +msgid "Timing is on." +msgstr "Controllo tempo attivato." + +#: command.c:2601 +msgid "Timing is off." +msgstr "Controllo tempo disattivato." + +#: command.c:2686 command.c:2714 command.c:3952 command.c:3955 command.c:3958 +#: command.c:3964 command.c:3966 command.c:3992 command.c:4002 command.c:4014 +#: command.c:4028 command.c:4055 command.c:4113 common.c:73 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:3113 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Password: " + +#: command.c:3118 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Inserisci la password per l'utente %s: " + +#: command.c:3174 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "Non fornire utente, host o porta separatamente quando si utilizza una stringa di connessione" + +#: command.c:3209 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "Non esiste alcuna connessione al database da cui riutilizzare i parametri" + +#: command.c:3517 +#, c-format +msgid "Previous connection kept" +msgstr "Connessione precedente mantenuta" + +#: command.c:3523 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3579 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\" on address \"%s\" at port \"%s\".\n" +msgstr "Adesso sei collegato al database \"%s\" con nome utente \"%s\" sull'indirizzo \"%s\" porta \"%s\".\n" + +#: command.c:3582 +#, 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:3588 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" (address \"%s\") at port \"%s\".\n" +msgstr "Adesso sei collegato al database \"%s\" con nome utente \"%s\" sull'host \"%s\" (indiirizzo \"%s\") sulla porta \"%s\".\n" + +#: command.c:3591 +#, 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:3596 +#, 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:3636 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, server %s)\n" + +#: command.c:3649 +#, 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:3686 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "connessione SSL (protocollo: %s, cifrario: %s, compressione: %s)\n" + +#: command.c:3687 command.c:3688 +msgid "unknown" +msgstr "sconosciuto" + +#: command.c:3689 help.c:42 +msgid "off" +msgstr "disattivato" + +#: command.c:3689 help.c:42 +msgid "on" +msgstr "attivato" + +#: command.c:3703 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "Connessione crittografata GSSAPI\n" + +#: command.c:3723 +#, 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:3828 +#, c-format +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number" +msgstr "la variabile di ambiente PSQL_EDITOR_LINENUMBER_ARG deve specificare un numero di riga" + +#: command.c:3857 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "avvio dell'editor \"%s\" fallito" + +#: command.c:3859 +#, c-format +msgid "could not start /bin/sh" +msgstr "avvio di /bin/sh fallito" + +#: command.c:3909 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "directory temporanea non trovata: %s" + +#: command.c:3936 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "errore nell'apertura del file temporaneo \"%s\": %m" + +#: command.c:4272 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "\\pset: l'abbreviazione ambigua \"%s\" corrisponde sia a \"%s\" che a \"%s\"" + +#: command.c:4292 +#, c-format +msgid "\\pset: allowed formats are aligned, asciidoc, csv, html, latex, latex-longtable, troff-ms, unaligned, wrapped" +msgstr "\\pset: i formati consentiti sono unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms" + +#: command.c:4311 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: gli stili di linea permessi sono ascii, old-ascii, unicode" + +#: command.c:4326 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: gli stili riga Unicode dei bordi consentiti sono single, double" + +#: command.c:4341 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: gli stili riga Unicode delle colonne consentiti sono single, double" + +#: command.c:4356 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: gli stili riga Unicode delle intestazioni consentiti sono single, double" + +#: command.c:4399 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: csv_fieldsep deve essere un singolo carattere di un byte" + +#: command.c:4404 +#, c-format +msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return" +msgstr "\\pset: csv_fieldsep non può essere un apice, una nuova riga o un ritorno a capo" + +#: command.c:4541 command.c:4729 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: opzione sconosciuta: %s" + +#: command.c:4561 +#, c-format +msgid "Border style is %d.\n" +msgstr "Lo stile del bordo è %d.\n" + +#: command.c:4567 +#, c-format +msgid "Target width is unset.\n" +msgstr "La lunghezza di destinazione non è impostata.\n" + +#: command.c:4569 +#, c-format +msgid "Target width is %d.\n" +msgstr "La larghezza di destinazione è %d.\n" + +#: command.c:4576 +#, c-format +msgid "Expanded display is on.\n" +msgstr "La visualizzazione espansa è attiva.\n" + +#: command.c:4578 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "La visualizzazione espansa è usata automaticamente.\n" + +#: command.c:4580 +#, c-format +msgid "Expanded display is off.\n" +msgstr "La visualizzazione espansa è disattivata.\n" + +#: command.c:4586 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "Il separatore di campo per i CSV è \"%s\".\n" + +#: command.c:4594 command.c:4602 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Il separatore di campo è il byte zero.\n" + +#: command.c:4596 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Il separatore di campo è \"%s\".\n" + +#: command.c:4609 +#, c-format +msgid "Default footer is on.\n" +msgstr "Il piè di pagina di default è attivo.\n" + +#: command.c:4611 +#, c-format +msgid "Default footer is off.\n" +msgstr "Il piè di pagina di default è disattivato.\n" + +#: command.c:4617 +#, c-format +msgid "Output format is %s.\n" +msgstr "Il formato di output è %s.\n" + +#: command.c:4623 +#, c-format +msgid "Line style is %s.\n" +msgstr "Lo stile della linea è %s.\n" + +#: command.c:4630 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "La visualizzazione dei null è \"%s\".\n" + +#: command.c:4638 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "La correzione dell'output numerico secondo il locale è attiva.\n" + +#: command.c:4640 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "La correzione dell'output numerico secondo il locale è disattivata.\n" + +#: command.c:4647 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Usa la paginazione per risultati estesi.\n" + +#: command.c:4649 +#, c-format +msgid "Pager is always used.\n" +msgstr "Paginazione sempre attiva.\n" + +#: command.c:4651 +#, c-format +msgid "Pager usage is off.\n" +msgstr "Paginazione disattivata.\n" + +#: command.c:4657 +#, 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:4667 command.c:4677 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Il separatore di record è il byte zero.\n" + +#: command.c:4669 +#, c-format +msgid "Record separator is .\n" +msgstr "Il separatore di record è .\n" + +#: command.c:4671 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Il separatore di record è \"%s\".\n" + +#: command.c:4684 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Gli attributi di tabella sono \"%s\".\n" + +#: command.c:4687 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Gli attributi di tabella non sono specificati.\n" + +#: command.c:4694 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Il titolo è \"%s\".\n" + +#: command.c:4696 +#, c-format +msgid "Title is unset.\n" +msgstr "Il titolo non è assegnato.\n" + +#: command.c:4703 +#, c-format +msgid "Tuples only is on.\n" +msgstr "La visualizzazione dei soli dati è attiva.\n" + +#: command.c:4705 +#, c-format +msgid "Tuples only is off.\n" +msgstr "La visualizzazione dei soli dati è disattivata.\n" + +#: command.c:4711 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Lo stile riga Unicode dei bordi è \"%s\".\n" + +#: command.c:4717 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Lo stile riga Unicode delle colonne è \"%s\".\n" + +#: command.c:4723 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Lo stile riga Unicode delle intestazioni è \"%s\".\n" + +#: command.c:4956 +#, c-format +msgid "\\!: failed" +msgstr "\\!: fallita" + +#: command.c:4990 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch non può essere usato con una query vuota" + +#: command.c:5022 +#, c-format +msgid "could not set timer: %m" +msgstr "redirezione di stderr fallita: %m" + +#: command.c:5084 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (ogni %gs)\n" + +#: command.c:5087 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (ogni %gs)\n" + +#: command.c:5148 +#, c-format +msgid "could not wait for signals: %m" +msgstr "impossibile attendere i segnali: %m" + +#: command.c:5206 command.c:5213 common.c:568 common.c:575 common.c:1118 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5392 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\" non è una vista" + +#: command.c:5408 +#, c-format +msgid "could not parse reloptions array" +msgstr "interpretazione dell'array reloptions fallita" + +#: common.c:162 +#, c-format +msgid "cannot escape without active connection" +msgstr "non è possibile effettuare l'escape senza una connessione attiva" + +#: common.c:203 +#, c-format +msgid "shell command argument contains a newline or carriage return: \"%s\"" +msgstr "l'argomento del comando da shell contiene un caratteri newline o un ritorno a capo: \"%s\"" + +#: common.c:307 +#, c-format +msgid "connection to server was lost" +msgstr "connessione al server persa" + +#: common.c:311 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Connessione al server persa. Tentativo di reset: " + +#: common.c:316 +#, c-format +msgid "Failed.\n" +msgstr "Fallito.\n" + +#: common.c:333 +#, c-format +msgid "Succeeded.\n" +msgstr "Riuscito.\n" + +#: common.c:385 common.c:1054 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "rilevato PQresultStatus imprevisto: %d" + +#: common.c:507 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Tempo: %.3f ms\n" + +#: common.c:522 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Tempo: %.3f ms (%02d:%06.3f)\n" + +#: common.c:531 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Tempo: %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:538 +#, 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:562 common.c:619 common.c:1089 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "Al momento non sei connesso ad un database." + +#: common.c:650 +#, 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:653 +#, 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:686 common.c:705 +#, c-format +msgid "could not print result table: %m" +msgstr "impossibile stampare la tabella dei risultati: %m" + +#: common.c:726 +#, c-format +msgid "no rows returned for \\gset" +msgstr "nessuna riga restituita per \\gset" + +#: common.c:731 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "più di una riga restituita per \\gset" + +#: common.c:749 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "tentativo di \\gset nella variabile \"%s\" trattata in modo speciale ignorato" + +#: common.c:1098 +#, 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:1181 +#, c-format +msgid "STATEMENT: %s" +msgstr "COMANDO: %s" + +#: common.c:1217 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "stato della transazione imprevisto (%d)" + +#: common.c:1358 describe.c:2020 +msgid "Column" +msgstr "Colonna" + +#: common.c:1359 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Tipo" + +#: common.c:1408 +#, 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" + +#: common.c:1561 +#, c-format +msgid "\\watch cannot be used with COPY" +msgstr "\\watch non può essere usato con COPY" + +#: copy.c:98 +#, c-format +msgid "\\copy: arguments required" +msgstr "\\copy: parametri richiesti" + +#: copy.c:253 +#, c-format +msgid "\\copy: parse error at \"%s\"" +msgstr "\\copy: errore di sintassi a \"%s\"" + +#: copy.c:255 +#, c-format +msgid "\\copy: parse error at end of line" +msgstr "\\copy: errore di sintassi a fine riga" + +#: copy.c:328 +#, c-format +msgid "could not execute command \"%s\": %m" +msgstr "esecuzione del comando \"%s\" fallita: %m" + +#: copy.c:344 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "non è stato possibile ottenere informazioni sul file \"%s\": %m" + +#: copy.c:348 +#, c-format +msgid "%s: cannot copy from/to a directory" +msgstr "%s: non è possibile copiare da/a una directory" + +#: copy.c:385 +#, c-format +msgid "could not close pipe to external command: %m" +msgstr "chiusura della pipe per verso il comando esterno fallita: %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 "scrittura dei dati COPY fallita: %m" + +#: copy.c:469 +#, c-format +msgid "COPY data transfer failed: %s" +msgstr "trasferimento dei dati COPY fallito: %s" + +#: copy.c:530 +msgid "canceled by user" +msgstr "annullata dall'utente" + +#: 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 "" +"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:684 +msgid "aborted because of read failure" +msgstr "interrotto a causa di lettura non riuscita" + +#: copy.c:718 +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" +msgstr "\\crosstabview: l'istruzione non ha restituito dati" + +#: crosstabview.c:129 +#, c-format +msgid "\\crosstabview: query must return at least three columns" +msgstr "\\crosstabview: la query deve restituire almeno tre colonne" + +#: crosstabview.c:156 +#, c-format +msgid "\\crosstabview: vertical and horizontal headers must be different columns" +msgstr "\\crosstabview: le intestazioni verticali ed orizzontali devono essere in colonne diverse" + +#: crosstabview.c:172 +#, c-format +msgid "\\crosstabview: data column must be specified when query returns more than three columns" +msgstr "\\crosstabview: la colonna dei dati deve essere specificata quando la query restituisce più di tre colonne" + +#: crosstabview.c:228 +#, c-format +msgid "\\crosstabview: maximum number of columns (%d) exceeded" +msgstr "\\crosstabview: numero massimo di colonne (%d) superato" + +#: crosstabview.c:397 +#, c-format +msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"" +msgstr "\\crosstabview: i risultati della query contengono più di un valore per la riga \"%s\", colonna \"%s\"" + +#: crosstabview.c:645 +#, c-format +msgid "\\crosstabview: column number %d is out of range 1..%d" +msgstr "\\crosstabview: il numero di colonna %d è al di fuori dell'intervallo 1..%d" + +#: crosstabview.c:670 +#, c-format +msgid "\\crosstabview: ambiguous column name: \"%s\"" +msgstr "\\crosstabview: nome di colonna ambiguo: \"%s\"" + +#: crosstabview.c:678 +#, c-format +msgid "\\crosstabview: column name not found: \"%s\"" +msgstr "\\crosstabview: colonna non trovata: \"%s\"" + +#: describe.c:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Schema" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Nome" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Tipo dato del risultato" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Tipo dato dei parametri" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Descrizione" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Lista delle funzione aggregate" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "Il server (versione %s) non supporta metodi di accesso." + +#: describe.c:168 +msgid "Index" +msgstr "Indice" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Tabella" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Handler" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Lista dei metodi di accesso" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Proprietario" + +#: describe.c:231 +msgid "Location" +msgstr "Posizione" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Opzioni" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Dimensione" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Lista dei tablespace" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df accetta come opzioni solo [anptwS+]" + +#: describe.c:319 +#, c-format +msgid "\\df does not take a \"%c\" option with server version %s" +msgstr "\\df non accetta un'opzione \"%c\" con il server in versione %s" + +#. translator: "agg" is short for "aggregate" +#: describe.c:354 describe.c:372 +msgid "agg" +msgstr "aggr" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "finestra" + +#: describe.c:356 +msgid "proc" +msgstr "procedura" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "funzione" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "trigger" + +#: describe.c:386 +msgid "immutable" +msgstr "immutabile" + +#: describe.c:387 +msgid "stable" +msgstr "stabile" + +#: describe.c:388 +msgid "volatile" +msgstr "volatile" + +#: describe.c:389 +msgid "Volatility" +msgstr "Volatilità" + +#: describe.c:397 +msgid "restricted" +msgstr "ristretta" + +#: describe.c:398 +msgid "safe" +msgstr "sicura" + +#: describe.c:399 +msgid "unsafe" +msgstr "non sicura" + +#: describe.c:400 +msgid "Parallel" +msgstr "Parallela" + +#: describe.c:405 +msgid "definer" +msgstr "definitore" + +#: describe.c:406 +msgid "invoker" +msgstr "invocatore" + +#: describe.c:407 +msgid "Security" +msgstr "Sicurezza" + +#: describe.c:412 +msgid "Language" +msgstr "Linguaggio" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Codice sorgente" + +#: describe.c:594 +msgid "List of functions" +msgstr "Lista delle funzioni" + +#: describe.c:657 +msgid "Internal name" +msgstr "Nome interno" + +#: describe.c:659 +msgid "Elements" +msgstr "Elementi" + +#: describe.c:711 +msgid "List of data types" +msgstr "Lista dei tipi di dati" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Argomento sinistro" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Argomento destro" + +#: describe.c:816 +msgid "Result type" +msgstr "Tipo di risultato" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Funzione" + +#: describe.c:902 +msgid "List of operators" +msgstr "Lista degli operatori" + +#: describe.c:938 +msgid "Encoding" +msgstr "Codifica" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Ordinamento" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "ICU Locale" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Provider di localizzazione" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Tablespace" + +#: describe.c:990 +msgid "List of databases" +msgstr "Lista dei database" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "tabella" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "vista" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "vista materializzata" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "sequenza" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "tabella esterna" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "tabella partizionata" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Privilegi di colonna" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Regole di sicurezza" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Privilegi di accesso" + +#: describe.c:1188 +msgid "function" +msgstr "funzione" + +#: describe.c:1190 +msgid "type" +msgstr "tipo" + +#: describe.c:1192 +msgid "schema" +msgstr "schema" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Privilegi di accesso di default" + +#: describe.c:1259 +msgid "Object" +msgstr "Oggetto" + +#: describe.c:1273 +msgid "table constraint" +msgstr "vincolo di tabella" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "vincolo di dominio" + +#: describe.c:1321 +msgid "operator class" +msgstr "classe operatori" + +#: describe.c:1345 +msgid "operator family" +msgstr "famiglia operatori" + +#: describe.c:1368 +msgid "rule" +msgstr "regola" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Descrizioni oggetti" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "Non è stata trovata nessuna relazione chiamata \"%s\"." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "Non è stata trovata nessuna relazione." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "Non è stata trovata nessuna relazione con OID %s." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "Inizio" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Minimo" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Massimo" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Incremento" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "sì" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "no" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "Riparte?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Cache" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Proprietario: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Sequenza per la colonna identità: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Sequenza non registrata \"%s.%s\"" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Sequenza \"%s.%s\"" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Tabella non loggata \"%s.%s\"" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Tabella \"%s.%s\"" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Vista \"%s.%s\"" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Vista materializzata non loggata \"%s.%s\"" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Vista materializzata \"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Indice non loggato \"%s.%s\"" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Indice \"%s.%s\"" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Indice partizionato non registrato \"%s.%s\"" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Indice partizionato \"%s.%s\"" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "Tabella TOAST \"%s.%s\"" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Tipo composito \"%s.%s\"" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Tabella esterna \"%s.%s\"" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Tabella partizionata non registrata \"%s.%s\"" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Tabella partizionata \"%s.%s\"" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Ordinamento" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "Può essere null" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "Default" + +#: describe.c:2029 +msgid "Key?" +msgstr "Chiave?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Definizione" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "Opzioni FDW" + +#: describe.c:2035 +msgid "Storage" +msgstr "Memorizzazione" + +#: describe.c:2037 +msgid "Compression" +msgstr "Compression" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Destinazione statistiche" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Partizione di: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Nessun vincolo di partizione" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Vincolo di partizione: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Chiave di partizione: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Tabella proprietaria: \"%s.%s\"" + +#: describe.c:2309 +msgid "primary key, " +msgstr "chiave primaria, " + +#: describe.c:2312 +msgid "unique" +msgstr "univoco" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls non distinti" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "per la tabella \"%s.%s\"" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", predicato (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", raggruppato" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", non valido" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", deferibile" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", inizialmente deferito" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", identità di replica" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Indici:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Vincoli di controllo:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Vincoli di integrità referenziale:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Referenziato da:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Regole di sicurezza:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Regole (sicurezza per riga forzata abilitata):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Regole (sicurezza per riga abilitata): (nessuna)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Regole (sicurezza per riga forzata abilitata): (nessuna)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Regole (sicurezza per riga disabilitata):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Oggetti statistiche:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Regole:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Regole disabilitate:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Regole sempre abilitate:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Regole abilitate solo su replica:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Pubblicazioni:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Definizione vista:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Trigger:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Trigger utente disabilitati:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Trigger interni disabilitati:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Trigger sempre abilitati:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Trigger abilitati solo su replica:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Server: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "Opzioni FDW (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Eredita" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Numero di partizioni: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "Numero di partizioni: %d (Usa \\d+ per elencarle.)" + +#: describe.c:3424 +#, 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:3431 +msgid "Child tables" +msgstr "Tabelle figlio" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Partizioni" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Tabella di tipo: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Identità di replica" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Ha OID: sì" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Metodo di accesso %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", tablespace \"%s\"" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Lista dei ruoli" + +#: describe.c:3670 +msgid "Role name" +msgstr "Nome ruolo" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Attributi" + +#: describe.c:3673 +msgid "Member of" +msgstr "Membro di" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Superutente" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "Nessuna ereditarietà" + +#: describe.c:3690 +msgid "Create role" +msgstr "Crea ruoli" + +#: describe.c:3693 +msgid "Create DB" +msgstr "Crea DB" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "Login non possibile" + +#: describe.c:3699 +msgid "Replication" +msgstr "Replica" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Scavalca RLS" + +#: describe.c:3712 +msgid "No connections" +msgstr "Niente connessioni" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d connessione" +msgstr[1] "%d connessioni" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Password valida fino a " + +#: describe.c:3777 +msgid "Role" +msgstr "Ruolo" + +#: describe.c:3778 +msgid "Database" +msgstr "Database" + +#: describe.c:3779 +msgid "Settings" +msgstr "Impostazioni" + +#: describe.c:3803 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "Non è stata trovata nessuna impostazione per il ruolo \"%s\" e il database \"%s\"." + +#: describe.c:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "Non è stata trovata nessuna impostazione per il ruolo \"%s\"." + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "Non è stata trovata nessuna impostazione." + +#: describe.c:3814 +msgid "List of settings" +msgstr "Lista delle impostazioni" + +#: describe.c:3885 +msgid "index" +msgstr "indice" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "Tabella TOAST" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "indice partizionato" + +#: describe.c:3910 +msgid "permanent" +msgstr "permanente" + +#: describe.c:3911 +msgid "temporary" +msgstr "temporaneo" + +#: describe.c:3912 +msgid "unlogged" +msgstr "non registrato" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Persistenza" + +#: describe.c:3929 +msgid "Access method" +msgstr "Metodo di accesso" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Lista delle relazioni" + +#: describe.c:4063 +#, c-format +msgid "The server (version %s) does not support declarative table partitioning." +msgstr "Il server (versione %s) non supporta il partizionamento dichiarativo delle tabelle." + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "Elenco di indici partizionati" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Elenco delle tabelle partizionate" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Lista delle relazioni" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Nome del genitore" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Dimensione partizione foglia" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Dimensione totale" + +#: describe.c:4258 +msgid "Trusted" +msgstr "Fidato" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Linguaggio interno" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Handler di chiamata" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Validatore" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Handler inline" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Lista dei linguaggi" + +#: describe.c:4346 +msgid "Check" +msgstr "Controllo" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Lista dei domini" + +#: describe.c:4424 +msgid "Source" +msgstr "Sorgente" + +#: describe.c:4425 +msgid "Destination" +msgstr "Destinazione" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "Predefinito?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Lista delle conversioni" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Parametro" + +#: describe.c:4498 +msgid "Value" +msgstr "Valore" + +#: describe.c:4505 +msgid "Context" +msgstr "Contesto" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Elenco dei parametri di configurazione" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Elenco dei parametri di configurazione non predefiniti" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "Il server (versione %s) non supporta i trigger di eventi." + +#: describe.c:4587 +msgid "Event" +msgstr "Evento" + +#: describe.c:4589 +msgid "enabled" +msgstr "abilitato" + +#: describe.c:4590 +msgid "replica" +msgstr "replica" + +#: describe.c:4591 +msgid "always" +msgstr "sempre" + +#: describe.c:4592 +msgid "disabled" +msgstr "disabilitato" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Abilitato" + +#: describe.c:4595 +msgid "Tags" +msgstr "Tag" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Lista di trigger di evento" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "Il server (versione %s) non supporta le statistiche estese." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinto" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Dipendenze" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Definisci una statistica estesa" + +#: describe.c:4745 +msgid "Source type" +msgstr "Tipo di partenza" + +#: describe.c:4746 +msgid "Target type" +msgstr "Tipo di arrivo" + +#: describe.c:4770 +msgid "in assignment" +msgstr "in assegnazione" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Implicito?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Lista delle conversioni di tipo" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Provider" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Deterministico?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Lista degli ordinamenti" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Lista degli schemi" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Lista degli analizzatori di ricerca resto" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "Non è stato trovato nessun analizzatore di ricerca testo chiamato \"%s\"." + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "Non è stato trovato nessun analizzatore di ricerca testo." + +#: describe.c:5245 +msgid "Start parse" +msgstr "Inizio analisi" + +#: describe.c:5246 +msgid "Method" +msgstr "Metodo" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Ottiene il token successivo" + +#: describe.c:5252 +msgid "End parse" +msgstr "Fine analisi" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Ottiene intestazione" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Ottieni i tipi token" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Analizzatore di ricerca teso \"%s.%s\"" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Analizzatore di ricerca testo \"%s\"" + +#: describe.c:5289 +msgid "Token name" +msgstr "Nome token" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Tipi token per l'analizzatore \"%s.%s\"" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Tipi token per l'analizzatore \"%s\"" + +#: describe.c:5350 +msgid "Template" +msgstr "Modello" + +#: describe.c:5351 +msgid "Init options" +msgstr "Opzioni iniziali" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Lista dei dizionari di ricerca testo" + +#: describe.c:5411 +msgid "Init" +msgstr "Init" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Lista dei modelli di ricerca testo" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Lista delle configurazioni di ricerca testo" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "Non è stata trovata nessuna configurazione di ricerca testo chiamata \"%s\"." + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "Non è stata trovata nessuna configurazione di ricerca testo." + +#: describe.c:5619 +msgid "Token" +msgstr "Token" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Dizionari" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Configurazione di ricerca testo \"%s.%s\"" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Configurazione di ricerca testo \"%s\"" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Analizzatore \"%s.%s\"" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Analizzatore: \"%s\"" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Lista dei wrapper di dati esterni" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Wrapper per dati esterni" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Versione" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Lista dei server esterni" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Server" + +#: describe.c:5825 +msgid "User name" +msgstr "Nome utente" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Lista delle mappature degli utenti" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Lista delle tabelle esterne" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Lista delle estensioni installate" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "Non è stata trovata nessuna estensione chiamata \"%s\"." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "Non è stata trovata nessuna estensione." + +#: describe.c:6075 +msgid "Object description" +msgstr "Descrizione dell'oggetto" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Oggetti nell'estensione \"%s\"" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "nome qualificato improprio (troppi nomi puntati): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "i riferimenti tra database diversi non sono implementati: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "Il server (versione %s) non supporta pubblicazioni." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Tutte le tabelle" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Inserimenti" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Modifiche" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Cancellazioni" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Troncamenti" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Via root" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Lista delle pubblicazioni" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "Non è stata trovata nessuna pubblicazione chiamata \"%s\"." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "Non è stata trovata nessuna pubblicazione." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Pubblicazione %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Tabelle:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Tabelle da schemi:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "Il server (versione %s) non supporta sottoscrizioni." + +#: describe.c:6497 +msgid "Publication" +msgstr "Pubblicazione" + +#: describe.c:6506 +msgid "Binary" +msgstr "Binario" + +#: describe.c:6507 +msgid "Streaming" +msgstr "Streaming" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Commit in due fasi" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Disattiva in caso di errore" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Commit sincrono" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Conninfo" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Salta LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Lista di sottoscrizioni" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "Tipo di input" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Tipo di archiviazione" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Classe operatori" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Famiglia operatori" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Elenco delle classi di operatori" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Tipi applicabili" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Elenco delle famiglie di operatori" + +#: describe.c:6807 +msgid "Operator" +msgstr "Operatore" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Strategia" + +#: describe.c:6809 +msgid "ordering" +msgstr "ordinare" + +#: describe.c:6810 +msgid "search" +msgstr "ricerca" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Scopo" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "Ordina la famiglia" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Elenco degli operatori delle famiglie di operatori" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Tipo sinistro registrato" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Tipo destro registrato" + +#: describe.c:6904 +msgid "Number" +msgstr "Numero" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Elenco delle funzioni di supporto delle famiglie di operatori" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "Large object" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql è il terminale interattivo per PostgreSQL.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Utilizzo:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPZIONI]... [NOME DB [NOME UTENTE]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Opzioni generali:\n" + +#: help.c:84 +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:85 +#, 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:87 +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:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l --list elenca i database disponibili ed esci\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version mostra informazioni sulla versione ed esci\n" + +#: help.c:93 +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:94 +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:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=opzioni] mostra quest'aiuto ed esci\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands mostra la lista dei comandi backslash ed esci\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables mostra la lista delle variabili speciali ed esci\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Opzioni di input e output:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all mostra tutti gli input dallo script\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors mostra i comandi falliti\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries mostra i comandi inviati al server\n" + +#: help.c:104 +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:105 +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:106 +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:107 +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:108 +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:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step modalità passo singolo (conferma ogni query)\n" + +#: help.c:110 +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:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Opzioni formato output:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align modo output tabelle disallineato\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv Modalità di output della tabella CSV (valori separati da virgola).\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html modo output tabelle in HTML\n" + +#: help.c:119 +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:120 +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:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only mostra solo le righe\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded attiva output tabelle espanso\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opzioni di connessione:\n" + +#: help.c:133 +#, 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:134 +msgid "local socket" +msgstr "sockect locale" + +#: help.c:137 +#, 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:140 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password non chiedere mai le password\n" + +#: help.c:143 +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:145 +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:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Segnala i bug a <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s pagina iniziale: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "Generali\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright mostra i termini di uso e distribuzione di PostgreSQL\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr " \\crosstabview [COLONNE] esegui la query e mostra il risultato in crosstab\n" + +#: help.c:194 +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:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(OPZIONI)] [FILE] esegue la query (e invia il risultato a file o |pipe);\n" +" \\g senza argomenti equivale a un punto e virgola\n" + +#: help.c:197 +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc descrivi il risultato della query, senza eseguirla\n" + +#: help.c:198 +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:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [PREFIX] esegui la query e salva il risultato in una variabile psql\n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr "" +" \\gx [(OPZIONI)] [FILE] come \\g, ma forza la modalità di output espansa\n" +"\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q esci da psql\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] esegui una query ogni SEC secondi\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Aiuto\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] mostra aiuto sui comandi backslash\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options mostra aiuto sulle opzioni di riga di comando psql\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables mostra aiusto sulle variabili speciali\n" + +#: help.c:210 +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:213 +msgid "Query Buffer\n" +msgstr "Buffer Query\n" + +#: help.c:214 +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:215 +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:216 +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:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p mostra i contenuti del buffer query\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r reimposta (cancella) il buffer query\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [FILE] mostra la cronologia salvala in un file\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILE scrivi il buffer query su file\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "Input/Output\n" + +#: help.c:226 +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:227 +msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n" +msgstr " \\echo [-n] [STRING] scrive la stringa nello standard output (-n per nessuna nuova riga)\n" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILE esegui i comandi dal file\n" + +#: help.c:229 +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:230 +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:231 +msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n" +msgstr "" +" \\qecho [-n] [STRING] scrive la stringa in \\o flusso di output (-n per nessuna nuova riga)\n" +"\n" + +#: help.c:232 +msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n" +msgstr " \\warn [-n] [STRING] scrive la stringa nell'errore standard (-n per nessuna nuova riga)\n" + +#: help.c:235 +msgid "Conditional\n" +msgstr "Condizionale\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if ESPR inizia un blocco condizionale\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif ESPR alternativa all'interno di un blocco condizionale\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else alternativa finale in un blocco condizionale\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif fine del blocco condizionale\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Informativi\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (opzioni: S = mostra gli oggetti di sistema, + = dettagli addizionali)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] elenca le tabelle, le viste e le sequenze\n" + +#: help.c:245 +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:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [MODELLO] elenca le funzioni di aggregazione\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [MODELLO] elenca i metodi di accesso\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] elenca le classi di operatori\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] elenca le famiglie di operatori\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] elenca gli operatori delle famiglie di operatori\n" + +#: help.c:251 +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] elenca le funzioni di supporto delle famiglie di operatori\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [MODELLO] elenca i tablespace\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [MODELLO] elenca le conversioni di codifica\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [PATTERN] elenca i parametri di configurazione\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [MODELLO] elenca le conversioni di tipo\n" + +#: help.c:256 +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:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [MODELLO] elenca i domini\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [MODELLO] elenca i privilegi predefiniti\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MODELLO] elenca le tabelle esterne\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [MODELLO] elenca i server esterni\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MODELLO] elenca le tabelle esterne\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [MODELLO] elenca le mappature degli utenti\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [MODELLO] elenca i wrapper di dati esterni\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" elenco funzioni di [solo agg/normal/procedura/trigger/finestra]\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [MODELLO] elenca le configurazioni di ricerca testo\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [MODELLO] elenca i dizionari di ricerca testo\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [MODELLO] elenca gli analizzatori di ricerca testo\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [MODELLO] elenca i modelli di ricerca di testo\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [MODELLO] elenca i ruoli\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [MODELLO] elenca gli indici\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] elenca i large object, stesso risultato di \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MODELLO] elenca i linguaggi procedurali\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [PATTERN] elenca le viste materializzate\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MODELLO] elenca gli schemi\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" operatori di liste\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MODELLO] elenca gli ordinamenti\n" + +#: help.c:279 +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:280 +msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n" +msgstr " \\dP[itn+] [PATTERN] list [solo indice/tabella] relazioni partizionate [n=nidificato]\n" + +#: help.c:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr " \\drds [ROLEPTRN [DBPTRN]] elenca le impostazioni del ruolo per database\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [MODELLO] elenca le pubblicazioni di replica\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [MODELLO] elenca le sottoscrizioni di replica\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [MODELLO] elenca le sequenze\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [MODELLO] elenca le tabelle\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [MODELLO] elenca i tipi di dato\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [MODELLO] elenca i ruoli\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [MODELLO] elenca le viste\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MODELLO] elenca le estensioni\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [PATTERN] elenca le statistiche estese\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [PATTERN] elenca i trigger di evento\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [PATTERN] elenca i database\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNZIONE mostra la definizione di una funzione\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] VISTA mostra la definizione di una vista\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [MODELLO] uguale a \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "Large Object\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export FILE LOBOID scrive un oggetto di grandi dimensioni su un file\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import FILE [COMMENTO]\n" +" leggi oggetti di grandi dimensioni da file\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] elenca gli oggetti di grandi dimensioni\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID elimina un oggetto di grandi dimensioni\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Formattazione\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a alterna tra modalità di output allineata e disallineata\n" + +#: help.c:308 +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:309 +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:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H cambia modalità HTML (attualmente %s)\n" + +#: help.c:312 +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 [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:319 +#, 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:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [STRINGA] imposta gli attributi HTML di
, se non\n" +" specificato allora annullali\n" + +#: help.c:322 +#, 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:323 +msgid "auto" +msgstr "auto" + +#: help.c:326 +msgid "Connection\n" +msgstr "Connessione\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo mostra le informazioni su la connessione corrente\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [CODIFICA] mostra o imposta la codifica del client\n" + +#: help.c:336 +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:339 +msgid "Operating System\n" +msgstr "Sistema operativo\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIRECTORY] cambia la directory di lavoro\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVVAR recupera la variabile di ambiente\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NOME [VALORE] imposta o elimina una variabile d'ambiente\n" + +#: help.c:343 +#, 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:345 +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:348 +msgid "Variables\n" +msgstr "Variabili\n" + +#: help.c:349 +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:350 +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:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NOME cancella una variabile interna\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"Lista delle variabili speciali\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "variabili psql:\n" + +#: help.c:394 +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:396 +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:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" il nome del database attualmente connesso\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" codifica del set di caratteri del client corrente\n" + +#: help.c:411 +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:413 +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:415 +msgid "" +" HIDE_TABLEAM\n" +" if set, table access methods are not displayed\n" +msgstr "" +" NASCONDI_TABELLA\n" +" se impostato, i metodi di accesso alla tabella non vengono visualizzati\n" + +#: help.c:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" se impostato, i metodi di compressione non vengono visualizzati\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" controlla la storia dei comandi [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +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:423 +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:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" l'host del server del database attualmente connesso\n" + +#: help.c:427 +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:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" valore dell'ultimo OID interessato\n" + +#: help.c:431 +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:434 +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:436 +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:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" porta del server attualmente connesso\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" specifica il prompt psql standard\n" + +#: help.c:442 +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:444 +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:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" esegui silenziosamente (come con l'opzione -q)\n" + +#: help.c:448 +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:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" mostra tutti i risultati di una query combinata (\\;) anziché solo l'ultima\n" + +#: help.c:455 +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:457 +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:459 +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:461 +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:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" l'utente database attualmente connesso\n" + +#: help.c:465 +msgid "" +" VERBOSITY\n" +" controls verbosity of error reports [default, verbose, terse, sqlstate]\n" +msgstr "" +" VERBOSITÀ\n" +" controlla la verbosità dei rapporti di errore [predefinito, dettagliato, conciso, sqlstate]\n" + +#: help.c:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Impostazioni di visualizzazione:\n" + +#: help.c:474 +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:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" stile bordo (numero)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" larghezza destinazione per il formato wrapped\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (o x)\n" +" output espanso [on, off, auto]\n" + +#: help.c:482 +#, 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:485 +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:487 +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:489 +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:491 +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:493 +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:495 +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:497 +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:499 +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:501 +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:503 +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:506 +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:508 +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:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Variabili d'ambiente:\n" + +#: help.c:519 +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:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" numero di colonne per il formato wrapped\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" come il parametro di connessione application_name\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" come il parametro di connessione dbname\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" come il parametro di connessione host\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" nome del file delle password\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" password di connessione (uso non raccomandato)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" come il parametro di connessione port\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" come il parametro di connessione user\n" + +#: help.c:540 +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:542 +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:544 +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:546 +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:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" nome del programma di paginazione esterno\n" + +#: help.c:552 +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:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" shell usata dal comando \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" directory per i file temporanei\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Aiuti disponibili:\n" + +#: help.c:711 +#, c-format +msgid "" +"Command: %s\n" +"Description: %s\n" +"Syntax:\n" +"%s\n" +"\n" +"URL: %s\n" +"\n" +msgstr "" +"Comando: %s\n" +"Descrizione: %s\n" +"Sintassi:\n" +"%s\n" +"\n" +"URL: %s\n" +"\n" +"\n" + +#: help.c:734 +#, 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:217 +#, c-format +msgid "could not read from input file: %m" +msgstr "impossibile leggere dal file di input: %m" + +#: input.c:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "impossibile salvare la cronologia nel file \"%s\": %m" + +#: input.c:535 +#, c-format +msgid "history is not supported by this installation" +msgstr "la cronologia non è supportata da questa installazione" + +#: large_obj.c:65 +#, c-format +msgid "%s: not connected to a database" +msgstr "%s: non connesso ad un database" + +#: large_obj.c:84 +#, c-format +msgid "%s: current transaction is aborted" +msgstr "%s: questa transazione è stata interrotta" + +#: large_obj.c:87 +#, c-format +msgid "%s: unknown transaction status" +msgstr "%s: stato della transazione sconosciuto" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: escapato" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Utilizza \"\\q\" per uscire %s.\n" + +#: mainloop.c:214 +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:295 +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:297 +msgid "Use \\? for help." +msgstr "Usa \\? per avere un aiuto." + +#: mainloop.c:301 +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:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Usa \\q per uscire." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Usa control-D per uscire." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Usa control-C per uscire." + +#: mainloop.c:459 mainloop.c:618 +#, c-format +msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "query ignorata: usa \\endif o Ctrl-C per uscire dal blocco \\if corrente" + +#: mainloop.c:636 +#, c-format +msgid "reached EOF without finding closing \\endif(s)" +msgstr "raggiunta fine file senza aver trovato \\endif finali" + +#: psqlscanslash.l:638 +#, c-format +msgid "unterminated quoted string" +msgstr "stringa tra virgolette non terminata" + +#: psqlscanslash.l:811 +#, c-format +msgid "%s: out of memory" +msgstr "%s: memoria esaurita" + +#: 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4031 +#: sql_help.c:4142 sql_help.c:4171 sql_help.c:4186 sql_help.c:4689 +#: sql_help.c:4737 sql_help.c:4895 +msgid "name" +msgstr "nome" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4457 +msgid "aggregate_signature" +msgstr "signature_aggregato" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "nuovo_nome" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "nuovo_proprietario" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "nuovo_schema" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4486 +msgid "where aggregate_signature is:" +msgstr "dove signature_aggregato è:" + +#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3906 sql_help.c:4356 sql_help.c:4463 +#: sql_help.c:4470 sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 +#: sql_help.c:4493 +msgid "argmode" +msgstr "modo_arg" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4464 sql_help.c:4471 sql_help.c:4477 +#: sql_help.c:4488 sql_help.c:4491 sql_help.c:4494 +msgid "argname" +msgstr "nome_arg" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4465 sql_help.c:4472 +#: sql_help.c:4478 sql_help.c:4489 sql_help.c:4492 sql_help.c:4495 +msgid "argtype" +msgstr "tipo_arg" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3950 sql_help.c:4185 sql_help.c:4958 +msgid "option" +msgstr "opzione" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "dove opzione può essere:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "permetti_conn" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "limite_conn" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "è_template" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4189 +msgid "new_tablespace" +msgstr "nuovo_tablespace" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3918 sql_help.c:4207 sql_help.c:4368 sql_help.c:4677 +msgid "configuration_parameter" +msgstr "parametro_config" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3951 sql_help.c:4678 +#: sql_help.c:4679 sql_help.c:4680 sql_help.c:4681 +msgid "value" +msgstr "valore" + +#: sql_help.c:200 +msgid "target_role" +msgstr "ruolo_destinazione" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3881 sql_help.c:3890 +#: sql_help.c:3909 sql_help.c:3921 sql_help.c:4331 sql_help.c:4340 +#: sql_help.c:4359 sql_help.c:4371 +msgid "schema_name" +msgstr "nome_schema" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "grant_o_revoke_abbreviato" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "dove grant_o_revoke_abbreviato è uno di:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3930 sql_help.c:3934 +#: sql_help.c:4380 sql_help.c:4384 sql_help.c:4699 +msgid "role_name" +msgstr "nome_ruolo" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3982 +#: sql_help.c:3997 sql_help.c:3999 sql_help.c:4086 sql_help.c:4089 +#: sql_help.c:4091 sql_help.c:4550 sql_help.c:4551 sql_help.c:4560 +#: sql_help.c:4607 sql_help.c:4608 sql_help.c:4609 sql_help.c:4610 +#: sql_help.c:4611 sql_help.c:4612 sql_help.c:4652 sql_help.c:4653 +#: sql_help.c:4658 sql_help.c:4663 sql_help.c:4807 sql_help.c:4808 +#: sql_help.c:4817 sql_help.c:4864 sql_help.c:4865 sql_help.c:4866 +#: sql_help.c:4867 sql_help.c:4868 sql_help.c:4869 sql_help.c:4923 +#: sql_help.c:4925 sql_help.c:4985 sql_help.c:5045 sql_help.c:5046 +#: sql_help.c:5055 sql_help.c:5102 sql_help.c:5103 sql_help.c:5104 +#: sql_help.c:5105 sql_help.c:5106 sql_help.c:5107 +msgid "expression" +msgstr "espressione" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "vincolo_di_dominio" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3994 +msgid "constraint_name" +msgstr "nome_vincolo" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "nuovo_nome_vincolo" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "nuova_versione" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "oggetto_membro" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "dove oggetto_membro è:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4453 sql_help.c:4458 +#: sql_help.c:4459 sql_help.c:4460 sql_help.c:4461 sql_help.c:4467 +#: sql_help.c:4468 sql_help.c:4473 sql_help.c:4474 sql_help.c:4479 +#: sql_help.c:4480 sql_help.c:4481 sql_help.c:4482 sql_help.c:4483 +#: sql_help.c:4484 +msgid "object_name" +msgstr "nome_oggetto" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4456 +msgid "aggregate_name" +msgstr "nome_aggregato" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "tipo_sorgente" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "tipo_destinazione" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4355 sql_help.c:4462 sql_help.c:4579 +#: sql_help.c:4583 sql_help.c:4587 sql_help.c:4590 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4844 sql_help.c:4847 sql_help.c:5074 +#: sql_help.c:5078 sql_help.c:5082 sql_help.c:5085 +msgid "function_name" +msgstr "nome_funzione" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "nome_operatore" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "tipo_sx" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "tipo_dx" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "metodo_indice" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4469 +msgid "procedure_name" +msgstr "nome_procedura" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3905 sql_help.c:4475 +msgid "routine_name" +msgstr "nome_routine" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3927 sql_help.c:4377 +msgid "type_name" +msgstr "nome_di_tipo" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3912 +#: sql_help.c:4362 +msgid "lang_name" +msgstr "nome_linguaggio" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "e signature_aggregato è:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "funzione_handler" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "funzione_validazione" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "azione" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3884 +#: sql_help.c:3885 sql_help.c:3981 sql_help.c:3996 sql_help.c:3998 +#: sql_help.c:4000 sql_help.c:4085 sql_help.c:4088 sql_help.c:4090 +#: sql_help.c:4334 sql_help.c:4335 sql_help.c:4455 sql_help.c:4616 +#: sql_help.c:4622 sql_help.c:4624 sql_help.c:4873 sql_help.c:4879 +#: sql_help.c:4881 sql_help.c:4922 sql_help.c:4924 sql_help.c:4926 +#: sql_help.c:4973 sql_help.c:5111 sql_help.c:5117 sql_help.c:5119 +msgid "column_name" +msgstr "nome_colonna" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "nuovo_nome_colonna" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "dove azione è una di:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4143 +msgid "data_type" +msgstr "tipo_di_dato" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3991 +msgid "collation" +msgstr "ordinamento" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "vincolo_di_colonna" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4970 +msgid "integer" +msgstr "intero" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "opzione_attributo" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "vincoli_di_tabella" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "nome_trigger" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "tabella_padre" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "nome_estensione" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "costo_di_esecuzione" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "righe_risultato" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "support_function" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3882 +#: sql_help.c:3883 sql_help.c:3887 sql_help.c:3888 sql_help.c:3891 +#: sql_help.c:3892 sql_help.c:3894 sql_help.c:3895 sql_help.c:3897 +#: sql_help.c:3898 sql_help.c:3900 sql_help.c:3901 sql_help.c:3903 +#: sql_help.c:3904 sql_help.c:3910 sql_help.c:3911 sql_help.c:3913 +#: sql_help.c:3914 sql_help.c:3916 sql_help.c:3917 sql_help.c:3919 +#: sql_help.c:3920 sql_help.c:3922 sql_help.c:3923 sql_help.c:3925 +#: sql_help.c:3926 sql_help.c:3928 sql_help.c:3929 sql_help.c:3931 +#: sql_help.c:3932 sql_help.c:4332 sql_help.c:4333 sql_help.c:4337 +#: sql_help.c:4338 sql_help.c:4341 sql_help.c:4342 sql_help.c:4344 +#: sql_help.c:4345 sql_help.c:4347 sql_help.c:4348 sql_help.c:4350 +#: sql_help.c:4351 sql_help.c:4353 sql_help.c:4354 sql_help.c:4360 +#: sql_help.c:4361 sql_help.c:4363 sql_help.c:4364 sql_help.c:4366 +#: sql_help.c:4367 sql_help.c:4369 sql_help.c:4370 sql_help.c:4372 +#: sql_help.c:4373 sql_help.c:4375 sql_help.c:4376 sql_help.c:4378 +#: sql_help.c:4379 sql_help.c:4381 sql_help.c:4382 +msgid "role_specification" +msgstr "specifica_ruolo" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4709 +msgid "user_name" +msgstr "nome_utente" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3933 sql_help.c:4383 +msgid "where role_specification can be:" +msgstr "dove specifica_ruolo può essere:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "nome_gruppo" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3924 +#: sql_help.c:4374 +msgid "tablespace_name" +msgstr "nome_tablespace" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "nome_indice" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "parametro_di_memorizzazione" + +#: sql_help.c:607 +msgid "column_number" +msgstr "numero_colonna" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4466 +msgid "large_object_oid" +msgstr "oid_large_object" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "compression_method" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "new_access_method" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "proc_join" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "strategia_num" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "tipo_op" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "nome_famiglia_sort" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "num_supporto" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "tipo_argomento" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3880 sql_help.c:3886 +#: sql_help.c:3947 sql_help.c:3979 sql_help.c:4330 sql_help.c:4336 +#: sql_help.c:4454 sql_help.c:4565 sql_help.c:4567 sql_help.c:4629 +#: sql_help.c:4668 sql_help.c:4822 sql_help.c:4824 sql_help.c:4886 +#: sql_help.c:4920 sql_help.c:4972 sql_help.c:5060 sql_help.c:5062 +#: sql_help.c:5124 +msgid "table_name" +msgstr "nome_tabella" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "espressione_using" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "espressione_check" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "publication_object" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "parametro_pubblicazione" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "dove publication_object è uno di:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "password" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "timestamp" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3893 +#: sql_help.c:4343 +msgid "database_name" +msgstr "nome_database" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "incremento" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "valoremin" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "valoremax" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4563 sql_help.c:4666 +#: sql_help.c:4820 sql_help.c:4989 sql_help.c:5058 +msgid "start" +msgstr "inizio" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "riavvio" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "cache" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "new_target" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "conninfo" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "nome_pubblicazione" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "publication_option" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "opzione_refresh" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "parametro_sottoscrizione" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "skip_option" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "nome_partizione" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "specifica_margine_partizione" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "opzioni_sequenza" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "opzione_sequenza" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "vincoli_di_tabella_con_indice" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "nome_regola_di_riscrittura" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "e specifica_margine_partizione è:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "partition_bound_expr" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "letterale_numerico" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "e vincolo_di_colonna è:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "expr_default" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "generation_expr" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "parametri_di_indice" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "tabella_ref" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "colonna_ref" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "referential_action" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "e vincolo_di_tabella è:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "elemento_di_esclusione" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "operator" +msgstr "operatore" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "predicato" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "e vincolo_di_tabella_con_indice è:" + +#: sql_help.c:1421 sql_help.c:2967 +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:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "elemento_di_esclusione in un vincolo EXCLUDE è:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3992 +msgid "opclass" +msgstr "classe_op" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "referential_action in un vincolo FOREIGN KEY/REFERENCES è:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "opzione_tablespace" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "tipo_di_token" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "nome_dizionario" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "vecchio_dizionario" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "nuovo_dizionario" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "nome_attributo" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "nuovo_nome_attributo" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "nuovo_valore_enum" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "valore_enum_vicino" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "valore_enum_esistente" + +#: sql_help.c:1589 +msgid "property" +msgstr "proprietà" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3902 sql_help.c:3948 +#: sql_help.c:4352 +msgid "server_name" +msgstr "nome_server" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "nome_opzione_vista" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "valore_opzione_vista" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4959 sql_help.c:4960 +msgid "table_and_columns" +msgstr "tabelle_e_colonne" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4187 sql_help.c:4961 +msgid "where option can be one of:" +msgstr "dove opzione può essere una di:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4188 sql_help.c:4190 +#: sql_help.c:4962 sql_help.c:4963 sql_help.c:4964 sql_help.c:4965 +#: sql_help.c:4966 sql_help.c:4967 sql_help.c:4968 sql_help.c:4969 +msgid "boolean" +msgstr "booleano" + +#: sql_help.c:1724 sql_help.c:4971 +msgid "and table_and_columns is:" +msgstr "e tabelle_e_colonne è:" + +#: sql_help.c:1740 sql_help.c:4725 sql_help.c:4727 sql_help.c:4751 +msgid "transaction_mode" +msgstr "modalità_transazione" + +#: sql_help.c:1741 sql_help.c:4728 sql_help.c:4752 +msgid "where transaction_mode is one of:" +msgstr "dove modalità_transazione è una di:" + +#: sql_help.c:1750 sql_help.c:4571 sql_help.c:4580 sql_help.c:4584 +#: sql_help.c:4588 sql_help.c:4591 sql_help.c:4828 sql_help.c:4837 +#: sql_help.c:4841 sql_help.c:4845 sql_help.c:4848 sql_help.c:5066 +#: sql_help.c:5075 sql_help.c:5079 sql_help.c:5083 sql_help.c:5086 +msgid "argument" +msgstr "argomento" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "nome_relazione" + +#: sql_help.c:1855 sql_help.c:3896 sql_help.c:4346 +msgid "domain_name" +msgstr "nome_dominio" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "nome_regola" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "nome_ruolo" + +#: sql_help.c:1909 +msgid "text" +msgstr "testo" + +#: sql_help.c:1934 sql_help.c:4152 sql_help.c:4399 +msgid "transaction_id" +msgstr "id_transazione" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4018 +msgid "filename" +msgstr "nome_file" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "comando" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4002 sql_help.c:4079 sql_help.c:4082 sql_help.c:4554 +#: sql_help.c:4556 sql_help.c:4657 sql_help.c:4659 sql_help.c:4811 +#: sql_help.c:4813 sql_help.c:4929 sql_help.c:5049 sql_help.c:5051 +msgid "condition" +msgstr "condizione" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3983 +msgid "query" +msgstr "query" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "nome_formato" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "carattere_delimitatore" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "stringa_nulla" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "carattere_virgolette" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "carattere_di_escape" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "nome_codifica" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "tipo_metodo_accesso" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "topo_dato_argomento" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "sfunz" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "tipo_dato_stato" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "dimensione_dato_stato" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "ffunz" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "funz_combine" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "funz_serial" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "funz_deserial" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "condizione_iniziale" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "msfunz" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "minvfunz" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "tipo_dato_mstato" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "tipo_dato_mstato" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "mffunz" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "condizione_minima" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "operatore_di_ordinamento" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "o la vecchia sintassi" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "tipo_base" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "locale" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4452 +msgid "provider" +msgstr "provider" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "versione" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "ordinamento_esistente" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "codifica_origine" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "codifica_destinazione" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "template" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "codifica" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "strategia" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "icu_locale" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "locale_provider" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "collation_version" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "vincolo" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "dove vincolo di è:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "evento" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "valiabile_filtro" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "filter_value" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "dove vincolo_di_colonna è:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "tipo_ritorno" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "tipo_colonna" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "definizione" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "file_obj" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "simbolo_link" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "sql_body" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "metodo" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "opclass_parameter" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "handler_chiamata" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "handler_inline" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "funzione_valid" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "nome_famiglia" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "tipo_memorizzazione" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "dove evento può essere uno di:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "elemento_di_schema" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "tipo_di_server" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "versione_server" + +#: sql_help.c:2751 sql_help.c:3899 sql_help.c:4349 +msgid "fdw_name" +msgstr "nome_fdw" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "nome_statistica" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "tipo_statistica" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "nome_sottoscrizione" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "tabella_origine" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "opzioni_di_like" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "e opzione_like è:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "directory" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "nome_parser" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "config_origine" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "funzione_inizio" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "funzione_gettoken" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "funzione_fine" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "funzione_lextypes" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "funzione_headline" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "funzione_init" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "funzione_lexize" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "nome_funzione_from_sql" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "nome_funzione_to_sql" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "nome_tabella_referenziata" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "nome_tabella_transizione" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "argomenti" + +#: sql_help.c:3170 sql_help.c:4485 +msgid "label" +msgstr "etichetta" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "sottotipo" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "classe_operatore_sottotipo" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "funzione_canonica" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "funzione_diff_sottotipo" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "multirange_type_name" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "funzione_input" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "funzione_output" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "funzione_receive" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "funzione_send" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "funzione_input_modificatore_tipo" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "funzione_output_modificatore_tipo" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "funzione_analyze" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "subscript_function" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "lunghezza_interna" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "allineamento" + +#: sql_help.c:3189 +msgid "storage" +msgstr "memorizzazione" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "tipo_like" + +#: sql_help.c:3191 +msgid "category" +msgstr "categoria" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "preferito" + +#: sql_help.c:3193 +msgid "default" +msgstr "predefinito" + +#: sql_help.c:3194 +msgid "element" +msgstr "elemento" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "delimitatore" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "ordinabile" + +#: sql_help.c:3293 sql_help.c:3978 sql_help.c:4068 sql_help.c:4549 +#: sql_help.c:4651 sql_help.c:4806 sql_help.c:4919 sql_help.c:5044 +msgid "with_query" +msgstr "query_with" + +#: sql_help.c:3295 sql_help.c:3980 sql_help.c:4568 sql_help.c:4574 +#: sql_help.c:4577 sql_help.c:4581 sql_help.c:4585 sql_help.c:4593 +#: sql_help.c:4825 sql_help.c:4831 sql_help.c:4834 sql_help.c:4838 +#: sql_help.c:4842 sql_help.c:4850 sql_help.c:4921 sql_help.c:5063 +#: sql_help.c:5069 sql_help.c:5072 sql_help.c:5076 sql_help.c:5080 +#: sql_help.c:5088 +msgid "alias" +msgstr "alias" + +#: sql_help.c:3296 sql_help.c:4553 sql_help.c:4595 sql_help.c:4597 +#: sql_help.c:4601 sql_help.c:4603 sql_help.c:4604 sql_help.c:4605 +#: sql_help.c:4656 sql_help.c:4810 sql_help.c:4852 sql_help.c:4854 +#: sql_help.c:4858 sql_help.c:4860 sql_help.c:4861 sql_help.c:4862 +#: sql_help.c:4928 sql_help.c:5048 sql_help.c:5090 sql_help.c:5092 +#: sql_help.c:5096 sql_help.c:5098 sql_help.c:5099 sql_help.c:5100 +msgid "from_item" +msgstr "elemento_from" + +#: sql_help.c:3298 sql_help.c:3780 sql_help.c:4119 sql_help.c:4930 +msgid "cursor_name" +msgstr "nome_cursore" + +#: sql_help.c:3299 sql_help.c:3986 sql_help.c:4931 +msgid "output_expression" +msgstr "espressione_output" + +#: sql_help.c:3300 sql_help.c:3987 sql_help.c:4552 sql_help.c:4654 +#: sql_help.c:4809 sql_help.c:4932 sql_help.c:5047 +msgid "output_name" +msgstr "nome_output" + +#: sql_help.c:3316 +msgid "code" +msgstr "codice" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "parametro" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4144 +msgid "statement" +msgstr "istruzione" + +#: sql_help.c:3779 sql_help.c:3781 sql_help.c:4118 sql_help.c:4120 +msgid "direction" +msgstr "direzione" + +#: sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 sql_help.c:3785 +#: sql_help.c:3786 sql_help.c:4121 sql_help.c:4122 sql_help.c:4123 +#: sql_help.c:4124 sql_help.c:4125 sql_help.c:4562 sql_help.c:4564 +#: sql_help.c:4665 sql_help.c:4667 sql_help.c:4819 sql_help.c:4821 +#: sql_help.c:4988 sql_help.c:4990 sql_help.c:5057 sql_help.c:5059 +msgid "count" +msgstr "conteggio" + +#: sql_help.c:3889 sql_help.c:4339 +msgid "sequence_name" +msgstr "nome_sequenza" + +#: sql_help.c:3907 sql_help.c:4357 +msgid "arg_name" +msgstr "nome_arg" + +#: sql_help.c:3908 sql_help.c:4358 +msgid "arg_type" +msgstr "tipo_arg" + +#: sql_help.c:3915 sql_help.c:4365 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3946 +msgid "remote_schema" +msgstr "schema_remoto" + +#: sql_help.c:3949 +msgid "local_schema" +msgstr "schema_locale" + +#: sql_help.c:3984 +msgid "conflict_target" +msgstr "target_conflitto" + +#: sql_help.c:3985 +msgid "conflict_action" +msgstr "azione_conflitto" + +#: sql_help.c:3988 +msgid "where conflict_target can be one of:" +msgstr "dove target_conflitto può essere uno di:" + +#: sql_help.c:3989 +msgid "index_column_name" +msgstr "nome_colonna_indice" + +#: sql_help.c:3990 +msgid "index_expression" +msgstr "espressione_indice" + +#: sql_help.c:3993 +msgid "index_predicate" +msgstr "indice_predicato" + +#: sql_help.c:3995 +msgid "and conflict_action is one of:" +msgstr "e azione_conflitto è una di:" + +#: sql_help.c:4001 sql_help.c:4927 +msgid "sub-SELECT" +msgstr "sub-SELECT" + +#: sql_help.c:4010 sql_help.c:4133 sql_help.c:4903 +msgid "channel" +msgstr "canale" + +#: sql_help.c:4032 +msgid "lockmode" +msgstr "modalità_lock" + +#: sql_help.c:4033 +msgid "where lockmode is one of:" +msgstr "dove modalità_lock è una di:" + +#: sql_help.c:4069 +msgid "target_table_name" +msgstr "target_table_name" + +#: sql_help.c:4070 +msgid "target_alias" +msgstr "target_alias" + +#: sql_help.c:4071 +msgid "data_source" +msgstr "data_source" + +#: sql_help.c:4072 sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_condition" +msgstr "condizione_join" + +#: sql_help.c:4073 +msgid "when_clause" +msgstr "when_clause" + +#: sql_help.c:4074 +msgid "where data_source is:" +msgstr "dove data_source è:" + +#: sql_help.c:4075 +msgid "source_table_name" +msgstr "source_table_name" + +#: sql_help.c:4076 +msgid "source_query" +msgstr "source_query" + +#: sql_help.c:4077 +msgid "source_alias" +msgstr "source_alias" + +#: sql_help.c:4078 +msgid "and when_clause is:" +msgstr "e when_clause è:" + +#: sql_help.c:4080 +msgid "merge_update" +msgstr "merge_update" + +#: sql_help.c:4081 +msgid "merge_delete" +msgstr "merge_delete" + +#: sql_help.c:4083 +msgid "merge_insert" +msgstr "merge_insert" + +#: sql_help.c:4084 +msgid "and merge_insert is:" +msgstr "e merge_insert è:" + +#: sql_help.c:4087 +msgid "and merge_update is:" +msgstr "e merge_update è:" + +#: sql_help.c:4092 +msgid "and merge_delete is:" +msgstr "and merge_delete is:" + +#: sql_help.c:4134 +msgid "payload" +msgstr "payload" + +#: sql_help.c:4161 +msgid "old_role" +msgstr "vecchio_ruolo" + +#: sql_help.c:4162 +msgid "new_role" +msgstr "nuovo_ruolo" + +#: sql_help.c:4198 sql_help.c:4407 sql_help.c:4415 +msgid "savepoint_name" +msgstr "nome_punto_salvataggio" + +#: sql_help.c:4555 sql_help.c:4613 sql_help.c:4812 sql_help.c:4870 +#: sql_help.c:5050 sql_help.c:5108 +msgid "grouping_element" +msgstr "elemento_raggruppante" + +#: sql_help.c:4557 sql_help.c:4660 sql_help.c:4814 sql_help.c:5052 +msgid "window_name" +msgstr "nome_finestra" + +#: sql_help.c:4558 sql_help.c:4661 sql_help.c:4815 sql_help.c:5053 +msgid "window_definition" +msgstr "definizione_finestra" + +#: sql_help.c:4559 sql_help.c:4573 sql_help.c:4617 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4830 sql_help.c:4874 sql_help.c:5054 +#: sql_help.c:5068 sql_help.c:5112 +msgid "select" +msgstr "select" + +#: sql_help.c:4566 sql_help.c:4823 sql_help.c:5061 +msgid "where from_item can be one of:" +msgstr "dove from_item può essere uno di:" + +#: sql_help.c:4569 sql_help.c:4575 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4594 sql_help.c:4826 sql_help.c:4832 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4851 sql_help.c:5064 sql_help.c:5070 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5089 +msgid "column_alias" +msgstr "alias_colonna" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "sampling_method" +msgstr "metodo_di_campionamento" + +#: sql_help.c:4572 sql_help.c:4829 sql_help.c:5067 +msgid "seed" +msgstr "seme" + +#: sql_help.c:4576 sql_help.c:4615 sql_help.c:4833 sql_help.c:4872 +#: sql_help.c:5071 sql_help.c:5110 +msgid "with_query_name" +msgstr "nome_query_with" + +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4592 sql_help.c:4843 +#: sql_help.c:4846 sql_help.c:4849 sql_help.c:5081 sql_help.c:5084 +#: sql_help.c:5087 +msgid "column_definition" +msgstr "definizione_colonna" + +#: sql_help.c:4596 sql_help.c:4602 sql_help.c:4853 sql_help.c:4859 +#: sql_help.c:5091 sql_help.c:5097 +msgid "join_type" +msgstr "tipo_join" + +#: sql_help.c:4599 sql_help.c:4856 sql_help.c:5094 +msgid "join_column" +msgstr "colonna_join" + +#: sql_help.c:4600 sql_help.c:4857 sql_help.c:5095 +msgid "join_using_alias" +msgstr "join_using_alias" + +#: sql_help.c:4606 sql_help.c:4863 sql_help.c:5101 +msgid "and grouping_element can be one of:" +msgstr "e elemento_raggruppante può essere uno di:" + +#: sql_help.c:4614 sql_help.c:4871 sql_help.c:5109 +msgid "and with_query is:" +msgstr "e with_query è:" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "values" +msgstr "valori" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4620 sql_help.c:4877 sql_help.c:5115 +msgid "update" +msgstr "update" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "search_seq_col_name" +msgstr "search_seq_col_name" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_col_name" +msgstr "cycle_mark_col_name" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_mark_value" +msgstr "cycle_mark_value" + +#: sql_help.c:4627 sql_help.c:4884 sql_help.c:5122 +msgid "cycle_mark_default" +msgstr "cycle_mark_default" + +#: sql_help.c:4628 sql_help.c:4885 sql_help.c:5123 +msgid "cycle_path_col_name" +msgstr "cycle_path_col_name" + +#: sql_help.c:4655 +msgid "new_table" +msgstr "nuova_tabella" + +#: sql_help.c:4726 +msgid "snapshot_id" +msgstr "id_snapshot" + +#: sql_help.c:4986 +msgid "sort_expression" +msgstr "espressione_ordinamento" + +#: sql_help.c:5130 sql_help.c:6114 +msgid "abort the current transaction" +msgstr "annulla la transazione corrente" + +#: sql_help.c:5136 +msgid "change the definition of an aggregate function" +msgstr "cambia la definizione di una funzione di aggregazione" + +#: sql_help.c:5142 +msgid "change the definition of a collation" +msgstr "cambia la definizione di un ordinamento" + +#: sql_help.c:5148 +msgid "change the definition of a conversion" +msgstr "cambia la definizione di una conversione" + +#: sql_help.c:5154 +msgid "change a database" +msgstr "cambia un database" + +#: sql_help.c:5160 +msgid "define default access privileges" +msgstr "definisci i privilegi di accesso di default" + +#: sql_help.c:5166 +msgid "change the definition of a domain" +msgstr "cambia la definizione di un dominio" + +#: sql_help.c:5172 +msgid "change the definition of an event trigger" +msgstr "cambia la definizione di un trigger di evento" + +#: sql_help.c:5178 +msgid "change the definition of an extension" +msgstr "cambia la definizione di una estensione" + +#: sql_help.c:5184 +msgid "change the definition of a foreign-data wrapper" +msgstr "cambia la definizione di un wrapper di dati esterni" + +#: sql_help.c:5190 +msgid "change the definition of a foreign table" +msgstr "cambia la definizione di una tabella esterna" + +#: sql_help.c:5196 +msgid "change the definition of a function" +msgstr "cambia la definizione di una funzione" + +#: sql_help.c:5202 +msgid "change role name or membership" +msgstr "cambia il nome del ruolo o l'appartenenza" + +#: sql_help.c:5208 +msgid "change the definition of an index" +msgstr "cambia la definizione di un indice" + +#: sql_help.c:5214 +msgid "change the definition of a procedural language" +msgstr "cambia la definizione di un linguaggio procedurale" + +#: sql_help.c:5220 +msgid "change the definition of a large object" +msgstr "cambia la definizione di un large object" + +#: sql_help.c:5226 +msgid "change the definition of a materialized view" +msgstr "cambia la definizione di una vista materializzata" + +#: sql_help.c:5232 +msgid "change the definition of an operator" +msgstr "cambia la definizione di un operatore" + +#: sql_help.c:5238 +msgid "change the definition of an operator class" +msgstr "cambia la definizione di una classe di operatori" + +#: sql_help.c:5244 +msgid "change the definition of an operator family" +msgstr "cambia la definizione di una famiglia di operatori" + +#: sql_help.c:5250 +msgid "change the definition of a row-level security policy" +msgstr "cambia la definizione di una regola di sicurezza per riga" + +#: sql_help.c:5256 +msgid "change the definition of a procedure" +msgstr "cambia la definizione di una procedura" + +#: sql_help.c:5262 +msgid "change the definition of a publication" +msgstr "cambia la definizione di una pubblicazione" + +#: sql_help.c:5268 sql_help.c:5370 +msgid "change a database role" +msgstr "cambia un ruolo di database" + +#: sql_help.c:5274 +msgid "change the definition of a routine" +msgstr "cambia la definizione di una routine" + +#: sql_help.c:5280 +msgid "change the definition of a rule" +msgstr "cambia la definizione di una regola" + +#: sql_help.c:5286 +msgid "change the definition of a schema" +msgstr "cambia la definizione di uno schema" + +#: sql_help.c:5292 +msgid "change the definition of a sequence generator" +msgstr "cambia la definizione di un generatore di sequenza" + +#: sql_help.c:5298 +msgid "change the definition of a foreign server" +msgstr "cambia la definizione di un server esterno" + +#: sql_help.c:5304 +msgid "change the definition of an extended statistics object" +msgstr "cambia la definizione di una statistica estesa" + +#: sql_help.c:5310 +msgid "change the definition of a subscription" +msgstr "cambia la definizione di una sottoscrizione" + +#: sql_help.c:5316 +msgid "change a server configuration parameter" +msgstr "cambia un parametro di configurazione del server" + +#: sql_help.c:5322 +msgid "change the definition of a table" +msgstr "cambia la definizione di una tabella" + +#: sql_help.c:5328 +msgid "change the definition of a tablespace" +msgstr "cambia la definizione di un tablespace" + +#: sql_help.c:5334 +msgid "change the definition of a text search configuration" +msgstr "cambia la definizione di una configurazione di ricerca testo" + +#: sql_help.c:5340 +msgid "change the definition of a text search dictionary" +msgstr "cambia la definizione di un dizionario di ricerca testo" + +#: sql_help.c:5346 +msgid "change the definition of a text search parser" +msgstr "cambia la definizione di un analizzatore di ricerca testo" + +#: sql_help.c:5352 +msgid "change the definition of a text search template" +msgstr "cambia la definizione di un modello di ricerca testo" + +#: sql_help.c:5358 +msgid "change the definition of a trigger" +msgstr "cambia la definizione di un trigger" + +#: sql_help.c:5364 +msgid "change the definition of a type" +msgstr "cambia la definizione di un tipo di dato" + +#: sql_help.c:5376 +msgid "change the definition of a user mapping" +msgstr "cambia la definizione di una mappatura degli" + +#: sql_help.c:5382 +msgid "change the definition of a view" +msgstr "cambia la definizione di una vista" + +#: sql_help.c:5388 +msgid "collect statistics about a database" +msgstr "raccogli statistiche sul database" + +#: sql_help.c:5394 sql_help.c:6192 +msgid "start a transaction block" +msgstr "avvia un blocco di transazione" + +#: sql_help.c:5400 +msgid "invoke a procedure" +msgstr "esegui una procedura" + +#: sql_help.c:5406 +msgid "force a write-ahead log checkpoint" +msgstr "forza un checkpoint del write-ahead log" + +#: sql_help.c:5412 +msgid "close a cursor" +msgstr "chiudi un cursore" + +#: sql_help.c:5418 +msgid "cluster a table according to an index" +msgstr "raggruppa una tabella in base ad un indice" + +#: sql_help.c:5424 +msgid "define or change the comment of an object" +msgstr "definisci o modifica il commento di un oggetto" + +#: sql_help.c:5430 sql_help.c:5988 +msgid "commit the current transaction" +msgstr "rendi persistente la transazione corrente" + +#: sql_help.c:5436 +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:5442 +msgid "copy data between a file and a table" +msgstr "copia i dati tra un file ed una tabella" + +#: sql_help.c:5448 +msgid "define a new access method" +msgstr "definisci un nuovo metodo di accesso" + +#: sql_help.c:5454 +msgid "define a new aggregate function" +msgstr "definisci una nuova funzione aggregata" + +#: sql_help.c:5460 +msgid "define a new cast" +msgstr "definisci una nuova conversione di tipi" + +#: sql_help.c:5466 +msgid "define a new collation" +msgstr "definisci un nuovo ordinamento" + +#: sql_help.c:5472 +msgid "define a new encoding conversion" +msgstr "definisci una nuova conversione di codifica" + +#: sql_help.c:5478 +msgid "create a new database" +msgstr "crea un nuovo database" + +#: sql_help.c:5484 +msgid "define a new domain" +msgstr "definisci un nuovo dominio" + +#: sql_help.c:5490 +msgid "define a new event trigger" +msgstr "definisci un nuovo trigger di evento" + +#: sql_help.c:5496 +msgid "install an extension" +msgstr "installa un'estensione" + +#: sql_help.c:5502 +msgid "define a new foreign-data wrapper" +msgstr "definisci un nuovo wrapper di dati esterni" + +#: sql_help.c:5508 +msgid "define a new foreign table" +msgstr "definisci una nuova tabella esterna" + +#: sql_help.c:5514 +msgid "define a new function" +msgstr "definisci una nuova funzione" + +#: sql_help.c:5520 sql_help.c:5580 sql_help.c:5682 +msgid "define a new database role" +msgstr "definisci un nuovo ruolo database" + +#: sql_help.c:5526 +msgid "define a new index" +msgstr "crea un nuovo indice" + +#: sql_help.c:5532 +msgid "define a new procedural language" +msgstr "definisci un nuovo linguaggio procedurale" + +#: sql_help.c:5538 +msgid "define a new materialized view" +msgstr "definisci una nuova vista materializzata" + +#: sql_help.c:5544 +msgid "define a new operator" +msgstr "definisci un nuovo operatore" + +#: sql_help.c:5550 +msgid "define a new operator class" +msgstr "definisci una nuova classe di operatori" + +#: sql_help.c:5556 +msgid "define a new operator family" +msgstr "definisci una nuova famiglia operatore" + +#: sql_help.c:5562 +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:5568 +msgid "define a new procedure" +msgstr "definisci una nuova procedura" + +#: sql_help.c:5574 +msgid "define a new publication" +msgstr "definisci una nuova pubblicazione" + +#: sql_help.c:5586 +msgid "define a new rewrite rule" +msgstr "definisci una nuova regola di riscrittura" + +#: sql_help.c:5592 +msgid "define a new schema" +msgstr "crea un nuovo schema" + +#: sql_help.c:5598 +msgid "define a new sequence generator" +msgstr "definisci un nuovo generatore di sequenze" + +#: sql_help.c:5604 +msgid "define a new foreign server" +msgstr "definisci un nuovo server esterno" + +#: sql_help.c:5610 +msgid "define extended statistics" +msgstr "definisci una statistica estesa" + +#: sql_help.c:5616 +msgid "define a new subscription" +msgstr "definisci una nuova sottoscrizione" + +#: sql_help.c:5622 +msgid "define a new table" +msgstr "crea una nuova tabella" + +#: sql_help.c:5628 sql_help.c:6150 +msgid "define a new table from the results of a query" +msgstr "crea una nuova tabella dai risultati di una query" + +#: sql_help.c:5634 +msgid "define a new tablespace" +msgstr "crea un nuovo tablespace" + +#: sql_help.c:5640 +msgid "define a new text search configuration" +msgstr "definisci una nuova configurazione di ricerca testo" + +#: sql_help.c:5646 +msgid "define a new text search dictionary" +msgstr "definisci un nuovo dizionario di ricerca testo" + +#: sql_help.c:5652 +msgid "define a new text search parser" +msgstr "definisci un nuovo analizzatore di ricerca testo" + +#: sql_help.c:5658 +msgid "define a new text search template" +msgstr "definisci un nuovo modello di ricerca testo" + +#: sql_help.c:5664 +msgid "define a new transform" +msgstr "definisci una nuova trasformazione" + +#: sql_help.c:5670 +msgid "define a new trigger" +msgstr "definisci un nuovo trigger" + +#: sql_help.c:5676 +msgid "define a new data type" +msgstr "definisci un nuovo tipo di dato" + +#: sql_help.c:5688 +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:5694 +msgid "define a new view" +msgstr "definisci una nuova vista" + +#: sql_help.c:5700 +msgid "deallocate a prepared statement" +msgstr "dealloca una istruzione preparata" + +#: sql_help.c:5706 +msgid "define a cursor" +msgstr "definisci un cursore" + +#: sql_help.c:5712 +msgid "delete rows of a table" +msgstr "elimina le righe di una tabella" + +#: sql_help.c:5718 +msgid "discard session state" +msgstr "cancella lo stato della sessione" + +#: sql_help.c:5724 +msgid "execute an anonymous code block" +msgstr "esegui un blocco di codice anonimo" + +#: sql_help.c:5730 +msgid "remove an access method" +msgstr "rimuovi un metodo di accesso" + +#: sql_help.c:5736 +msgid "remove an aggregate function" +msgstr "elimina una funzione aggregata" + +#: sql_help.c:5742 +msgid "remove a cast" +msgstr "elimina una conversione di tipi" + +#: sql_help.c:5748 +msgid "remove a collation" +msgstr "elimina un ordinamento" + +#: sql_help.c:5754 +msgid "remove a conversion" +msgstr "elimina una conversione" + +#: sql_help.c:5760 +msgid "remove a database" +msgstr "elimina un database" + +#: sql_help.c:5766 +msgid "remove a domain" +msgstr "elimina un dominio" + +#: sql_help.c:5772 +msgid "remove an event trigger" +msgstr "elimina un trigger di evento" + +#: sql_help.c:5778 +msgid "remove an extension" +msgstr "elimina una estensione" + +#: sql_help.c:5784 +msgid "remove a foreign-data wrapper" +msgstr "elimina un wrapper di dati esterni" + +#: sql_help.c:5790 +msgid "remove a foreign table" +msgstr "elimina una tabella esterna" + +#: sql_help.c:5796 +msgid "remove a function" +msgstr "elimina una funzione" + +#: sql_help.c:5802 sql_help.c:5868 sql_help.c:5970 +msgid "remove a database role" +msgstr "elimina un ruolo di database" + +#: sql_help.c:5808 +msgid "remove an index" +msgstr "elimina un indice" + +#: sql_help.c:5814 +msgid "remove a procedural language" +msgstr "elimina un linguaggio procedurale" + +#: sql_help.c:5820 +msgid "remove a materialized view" +msgstr "elimina una vista materializzata" + +#: sql_help.c:5826 +msgid "remove an operator" +msgstr "elimina un operatore" + +#: sql_help.c:5832 +msgid "remove an operator class" +msgstr "elimina una classe di operatori" + +#: sql_help.c:5838 +msgid "remove an operator family" +msgstr "elimina una famiglia operatore" + +#: sql_help.c:5844 +msgid "remove database objects owned by a database role" +msgstr "elimina gli oggetti database di proprietà di un ruolo di database" + +#: sql_help.c:5850 +msgid "remove a row-level security policy from a table" +msgstr "rimuovi una regola di sicurezza per riga da una tabella" + +#: sql_help.c:5856 +msgid "remove a procedure" +msgstr "rimuovi una procedura" + +#: sql_help.c:5862 +msgid "remove a publication" +msgstr "rimuovi una pubblicazione" + +#: sql_help.c:5874 +msgid "remove a routine" +msgstr "rimuovi una routine" + +#: sql_help.c:5880 +msgid "remove a rewrite rule" +msgstr "elimina una regola di riscrittura" + +#: sql_help.c:5886 +msgid "remove a schema" +msgstr "elimina uno schema" + +#: sql_help.c:5892 +msgid "remove a sequence" +msgstr "elimina una sequenza" + +#: sql_help.c:5898 +msgid "remove a foreign server descriptor" +msgstr "elimina una descrizione server esterno" + +#: sql_help.c:5904 +msgid "remove extended statistics" +msgstr "rimuovi una statistica estesa" + +#: sql_help.c:5910 +msgid "remove a subscription" +msgstr "rimuovi una sottoscrizione" + +#: sql_help.c:5916 +msgid "remove a table" +msgstr "elimina una tabella" + +#: sql_help.c:5922 +msgid "remove a tablespace" +msgstr "elimina un tablespace" + +#: sql_help.c:5928 +msgid "remove a text search configuration" +msgstr "elimina una configurazione di ricerca testo" + +#: sql_help.c:5934 +msgid "remove a text search dictionary" +msgstr "elimina un dizionario di ricerca testo" + +#: sql_help.c:5940 +msgid "remove a text search parser" +msgstr "elimina un analizzatore di ricerca testo" + +#: sql_help.c:5946 +msgid "remove a text search template" +msgstr "elimina un modello di ricerca testo" + +#: sql_help.c:5952 +msgid "remove a transform" +msgstr "elimina una trasformazione" + +#: sql_help.c:5958 +msgid "remove a trigger" +msgstr "elimina un trigger" + +#: sql_help.c:5964 +msgid "remove a data type" +msgstr "elimina un tipo di dato" + +#: sql_help.c:5976 +msgid "remove a user mapping for a foreign server" +msgstr "elimina la mappatura degli utenti per un server esterno" + +#: sql_help.c:5982 +msgid "remove a view" +msgstr "elimina una vista" + +#: sql_help.c:5994 +msgid "execute a prepared statement" +msgstr "esegui una istruzione preparata" + +#: sql_help.c:6000 +msgid "show the execution plan of a statement" +msgstr "mostra il piano di esecuzione di una istruzione" + +#: sql_help.c:6006 +msgid "retrieve rows from a query using a cursor" +msgstr "estrai delle righe da una query utilizzando un cursore" + +#: sql_help.c:6012 +msgid "define access privileges" +msgstr "definisci i privilegi di accesso" + +#: sql_help.c:6018 +msgid "import table definitions from a foreign server" +msgstr "importa le definizioni di tabella da un server remoto" + +#: sql_help.c:6024 +msgid "create new rows in a table" +msgstr "crea nuove righe in una tabella" + +#: sql_help.c:6030 +msgid "listen for a notification" +msgstr "attendi l'arrivo di notifiche" + +#: sql_help.c:6036 +msgid "load a shared library file" +msgstr "carica un file di libreria condivisa" + +#: sql_help.c:6042 +msgid "lock a table" +msgstr "blocca una tabella" + +#: sql_help.c:6048 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "inserire, aggiornare o eliminare condizionalmente le righe di una tabella" + +#: sql_help.c:6054 +msgid "position a cursor" +msgstr "posiziona un cursore" + +#: sql_help.c:6060 +msgid "generate a notification" +msgstr "genera una notifica" + +#: sql_help.c:6066 +msgid "prepare a statement for execution" +msgstr "prepara una istruzione per l'esecuzione" + +#: sql_help.c:6072 +msgid "prepare the current transaction for two-phase commit" +msgstr "prepara la transazione corrente per un commit a due fasi" + +#: sql_help.c:6078 +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:6084 +msgid "replace the contents of a materialized view" +msgstr "sostituisci il contenuto di una vista materializzata" + +#: sql_help.c:6090 +msgid "rebuild indexes" +msgstr "ricostruisci indici" + +#: sql_help.c:6096 +msgid "destroy a previously defined savepoint" +msgstr "distruggi un punto di salvataggio precedentemente definito" + +#: sql_help.c:6102 +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:6108 +msgid "remove access privileges" +msgstr "elimina i privilegi di accesso" + +#: sql_help.c:6120 +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:6126 +msgid "roll back to a savepoint" +msgstr "annulla le modifiche fino a un punto di salvataggio" + +#: sql_help.c:6132 +msgid "define a new savepoint within the current transaction" +msgstr "definisci un nuovo punto di salvataggio per la transazione corrente" + +#: sql_help.c:6138 +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:6144 sql_help.c:6198 sql_help.c:6234 +msgid "retrieve rows from a table or view" +msgstr "estrai righe da una tabella o una vista" + +#: sql_help.c:6156 +msgid "change a run-time parameter" +msgstr "modifica un parametro di esecuzione" + +#: sql_help.c:6162 +msgid "set constraint check timing for the current transaction" +msgstr "imposta il momento del controllo dei vincoli per la transazione corrente" + +#: sql_help.c:6168 +msgid "set the current user identifier of the current session" +msgstr "imposta l'identificativo utente della sessione corrente" + +#: sql_help.c:6174 +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:6180 +msgid "set the characteristics of the current transaction" +msgstr "imposta le caratteristiche della transazione corrente" + +#: sql_help.c:6186 +msgid "show the value of a run-time parameter" +msgstr "mostra il valore di un parametro di esecuzione" + +#: sql_help.c:6204 +msgid "empty a table or set of tables" +msgstr "svuota una tabella o una lista di tabelle" + +#: sql_help.c:6210 +msgid "stop listening for a notification" +msgstr "termina l'attesa di notifiche" + +#: sql_help.c:6216 +msgid "update rows of a table" +msgstr "modifica le righe di una tabella" + +#: sql_help.c:6222 +msgid "garbage-collect and optionally analyze a database" +msgstr "pulisci ed eventualmente analizza il database" + +#: sql_help.c:6228 +msgid "compute a set of rows" +msgstr "genera una sequenza di righe" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 può essere utilizzato solo in modalità non interattiva" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "apertura del file di log \"%s\" fallita: %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Digita \"help\" per avere un aiuto.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "impossibile impostare il parametro di stampa \"%s\"" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Prova \"%s --help\" per maggiori informazioni." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "argomento aggiuntivo della riga di comando \"%s\" ignorato" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "non è stato possibile trovare il proprio programma eseguibile" + +#: tab-complete.c:5952 +#, c-format +msgid "" +"tab completion query failed: %s\n" +"Query was:\n" +"%s" +msgstr "" +"query per il completamento tab fallita: %s\n" +"La query era:\n" +"%s" + +#: variables.c:139 +#, c-format +msgid "unrecognized value \"%s\" for \"%s\": Boolean expected" +msgstr "valore \"%s\" non valido per \"%s\": è necessario un booleano" + +#: variables.c:176 +#, c-format +msgid "invalid value \"%s\" for \"%s\": integer expected" +msgstr "valore \"%s\" non valido per \"%s\": è necessario un intero" + +#: variables.c:224 +#, c-format +msgid "invalid variable name: \"%s\"" +msgstr "nome di variabile non valido: \"%s\"" + +#: variables.c:419 +#, c-format +msgid "" +"unrecognized value \"%s\" for \"%s\"\n" +"Available values are: %s." +msgstr "" +"valore \"%s\" non riconosciuto per \"%s\"\n" +"I valori disponibili sono: %s." + +#~ 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" + +#~ 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" + +#~ msgid "%s\n" +#~ msgstr "%s\n" + +#~ msgid "%s: %s\n" +#~ msgstr "%s: %s\n" + +#~ msgid "%s: could not open log file \"%s\": %s\n" +#~ msgstr "%s: apertura del file di log \"%s\" fallita: %s\n" + +#~ 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" + +#~ msgid "Disabled triggers:" +#~ msgstr "Trigger disabilitati:" + +#~ msgid "Enter new password: " +#~ msgstr "Inserire la nuova password: " + +#~ msgid "Invalid command \\%s. Try \\? for help.\n" +#~ msgstr "Comando errato \\%s. Prova \\? per la guida.\n" + +#~ msgid "Special relation \"%s.%s\"" +#~ msgstr "relazione speciale \"%s.%s\"" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ msgid "The server (version %s) does not support foreign servers.\n" +#~ msgstr "Il server (versione %s) non supporta server esterni.\n" + +#~ msgid "The server (version %s) does not support foreign tables.\n" +#~ msgstr "Il server (versione %s) non supporta tabelle esterne.\n" + +#~ 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" + +#~ msgid "The server (version %s) does not support full text search.\n" +#~ msgstr "Il server (versione %s) non supporta la ricerca full text.\n" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ 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" + +#~ msgid "The server (version %s) does not support tablespaces.\n" +#~ msgstr "Il server (versione %s) non supporta i tablespace.\n" + +#~ msgid "The server (version %s) does not support user mappings.\n" +#~ msgstr "Il server (versione %s) non supporta la mappatura di utenti.\n" + +#~ msgid "Try \"%s --help\" for more information.\n" +#~ msgstr "Prova \"%s --help\" per maggiori informazioni.\n" + +#~ msgid "child process was terminated by signal %s" +#~ msgstr "processo figlio terminato da segnale %s" + +#~ msgid "could not change directory to \"%s\": %s" +#~ msgstr "spostamento nella directory \"%s\" fallito: %s" + +#~ msgid "could not close pipe to external command: %s\n" +#~ msgstr "chiusura della pipe verso il comando esterno fallita: %s\n" + +#~ msgid "could not execute command \"%s\": %s\n" +#~ msgstr "esecuzione del comando \"%s\" fallito: %s\n" + +#~ msgid "could not open temporary file \"%s\": %s\n" +#~ msgstr "apertura del file temporaneo \"%s\" fallita: %s\n" + +#~ msgid "could not read symbolic link \"%s\"" +#~ msgstr "lettura del link simbolico \"%s\" fallita" + +#~ msgid "could not stat file \"%s\": %s\n" +#~ msgstr "richiesta informazioni sul file \"%s\" fallita: %s\n" + +#~ msgid "from_list" +#~ msgstr "lista_from" + +#~ msgid "pclose failed: %s" +#~ msgstr "pclose fallita: %s" + +#~ msgid "special" +#~ msgstr "speciale" + +#~ msgid "string_literal" +#~ msgstr "letterale_stringa" + +#~ msgid "timezone" +#~ msgstr "timezone" + +#~ msgid "unexpected result status for \\watch\n" +#~ msgstr "risultato imprevisto per \\watch\n" + +#~ msgid "unterminated quoted string\n" +#~ msgstr "stringa tra virgolette non terminata\n" + +#~ msgid "where direction can be empty or one of:" +#~ msgstr "dove direzione può essere vuota o una di:" diff --git a/src/bin/psql/po/ja.po b/src/bin/psql/po/ja.po new file mode 100644 index 0000000..b707ff5 --- /dev/null +++ b/src/bin/psql/po/ja.po @@ -0,0 +1,6476 @@ +# psql.po +# Japanese message translation file for psql +# +# Copyright (C) 2010-2022 PostgreSQL Global Development Group +# +# Michihide Hotta , 2010. +# +# This file is distributed under the same license as the PostgreSQL package. +# +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL 15)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-02-06 15:59+0900\n" +"PO-Revision-Date: 2023-02-06 17:39+0900\n" +"Last-Translator: Kyotaro Horiguchi \n" +"Language-Team: Japan PostgreSQL Users Group \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:276 +#, c-format +msgid "error: " +msgstr "エラー: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "警告: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "詳細: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "ヒント: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "カレントディレクトリを識別できませんでした: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "無効なバイナリ\"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "バイナリ\"%s\"を読み取ることができませんでした" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "実行対象の\"%s\"が見つかりませんでした" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "ディレクトリ\"%s\"に移動できませんでした: %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "シンボリックリンク\"%s\"を読めませんでした: %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() が失敗しました: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "キャンセル要求を送信しました\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "キャンセル要求を送信できませんでした: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu 行)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "割り込み\n" + +#: ../../fe_utils/print.c:3173 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "テーブルの内容にヘッダーを追加できません: 列数 %d が制限値を超えています。\n" + +#: ../../fe_utils/print.c:3213 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "テーブルの内容にセルを追加できません: セルの合計数 %d が制限値を超えています。\n" + +#: ../../fe_utils/print.c:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "出力フォーマットが無効(内部エラー):%d" + +#: ../../fe_utils/psqlscan.l:701 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "変数\"%s\"の再帰展開をスキップしています" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "ローカルユーザーID %dの参照に失敗しました: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "ID %d を持つローカルユーザーは存在しません" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "不正なコマンド \\%s " + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr " \\? でヘルプを表示します。" + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: 余分な引数\"%s\"は無視されました" + +#: command.c:304 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "\\%s コマンドは無視されます; 現在の\\ifブロックを抜けるには\\endifまたはCtrl-Cを使用します" + +#: command.c:573 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "ユーザーID %ldのホームディレクトリを取得できませんでした : %s" + +#: command.c:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: ディレクトリを\"%s\"に変更できませんでした: %m" + +#: command.c:617 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "現在データベースに接続していません。\n" + +#: command.c:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "問い合わせバッファがありません" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "不正な行番号です: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "変更されていません" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: エンコーディング名が不正であるか、または変換プロシージャが見つかりません。" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "直前のエラーはありません。" + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: 右括弧がありません" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: 必要な引数がありません" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: \\else の後には置けません" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: 対応する \\if がありません" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: \\else の後には置けません" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: 対応する \\if がありません" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: 対応する \\if がありません" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "問い合わせバッファは空です。" + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "ユーザー\"%s\"の新しいパスワードを入力してください: " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "もう一度入力してください: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "パスワードが一致しませんでした。" + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: 変数の値を読み取ることができませんでした" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "問い合わせバッファがリセット(クリア)されました。" + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "ファイル\"%s\"にヒストリーを出力しました。\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: 環境変数名に\"=\"を含めることはできません" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "関数名が必要です" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "ビュー名が必要です" + +#: command.c:2593 +msgid "Timing is on." +msgstr "タイミングは on です。" + +#: command.c:2595 +msgid "Timing is off." +msgstr "タイミングは off です。" + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "パスワード: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "ユーザー %s のパスワード: " + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "接続文字列使用時はユーザー、ホストおよびポートは個別に指定しないでください" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "パラメータ再利用に使用可能なデータベース接続がありません" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "以前の接続は保持されています" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "データベース\"%s\"にユーザー\"%s\"として接続しました。\n" + +#: command.c:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s、サーバー %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "SSL接続(プロトコル: %s、暗号化方式: %s、圧縮: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "不明" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "オフ" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "オン" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "GSSAPI暗号化接続\n" + +#: command.c:3717 +#, 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:3822 +#, c-format +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number" +msgstr "環境変数PSQL_EDITOR_LINENUMBER_ARGで行番号を指定する必要があります" + +#: command.c:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "エディタ\"%s\"を起動できませんでした" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "/bin/shを起動できませんでした" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "一時ディレクトリが見つかりませんでした: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "一時ファイル\"%s\"をオープンできませんでした: %m" + +#: command.c:4266 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "\\pset: 曖昧な短縮形\"%s\"が\"%s\"と\"%s\"のどちらにも合致します" + +#: command.c:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: 有効な線のスタイルは ascii, old-ascii, unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: 有効な Unicode 罫線のスタイルは single, double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: 有効な Unicode 列罫線のスタイルは single, double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: 有効な Unicode ヘッダー罫線のスタイルは single, double" + +#: command.c:4393 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: csv_fieldsepは単一の1バイト文字でなければなりません" + +#: command.c:4398 +#, 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:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: 未定義のオプション:%s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "罫線スタイルは %d です。\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "ターゲットの幅が設定されていません。\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "ターゲットの幅は %d です。\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "拡張表示は on です。\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "拡張表示が自動的に使われます。\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "拡張表示は off です。\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "CSVのフィールド区切り文字は\"%s\"です。\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "フィールド区切り文字はゼロバイトです。\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "フィールド区切り文字は\"%s\"です。\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "デフォルトフッター(行数の表示)は on です。\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "デフォルトフッター(行数の表示)は off です。\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "出力形式は %s です。\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "線のスタイルは %s です。\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null表示は\"%s\"です。\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "『数値出力時のロケール調整』は on です。\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "『数値出力時のロケール調整』は off です。\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "表示が縦に長くなる場合はページャーを使います。\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "常にページャーを使います。\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "「ページャーを使う」は off です。\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "レコードの区切り文字はゼロバイトです\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "レコード区切り文字はです。\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "レコード区切り記号は\"%s\"です。\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "テーブル属性は\"%s\"です。\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "テーブル属性は設定されていません。\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "タイトルは\"%s\"です。\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "タイトルは設定されていません。\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "「タプルのみ表示」は on です。\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "「タプルのみ表示」は off です。\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Unicode の罫線スタイルは\"%s\"です。\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Unicode 行罫線のスタイルは\"%s\"です。\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Unicodeヘッダー行のスタイルは\"%s\"です。\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: 失敗" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watchは空の問い合わせでは使えません" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "タイマーを設定できません: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (%g 秒毎)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (%g 秒毎)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "シグナルを待機できませんでした: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"******** 問い合わせ ******\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\"はビューではありません" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "reloptions配列をパースできませんでした" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "有効な接続がないのでエスケープできません" + +#: common.c:207 +#, c-format +msgid "shell command argument contains a newline or carriage return: \"%s\"" +msgstr "シェルコマンドの引数に改行(LF)または復帰(CR)が含まれています: \"%s\"" + +#: common.c:311 +#, c-format +msgid "connection to server was lost" +msgstr "サーバーへの接続が失われました" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "サーバーへの接続が失われました。リセットしています: " + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "失敗。\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "成功。\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "想定外のPQresultStatus: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "時間: %.3f ミリ秒\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "時間: %.3f ミリ秒(%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "時間: %.3f ミリ秒 (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, c-format +msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" +msgstr "時間: %.3f ミリ秒 (%.0f 日 %02d:%02d:%06.3f)\n" + +#: common.c:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "現在データベースに接続していません。" + +#: common.c:654 +#, 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:657 +#, c-format +msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "PID %2$dのサーバープロセスから非同期通知\"%1$s\"を受信しました。\n" + +#: common.c:688 +#, c-format +msgid "could not print result table: %m" +msgstr "結果テーブルを表示できませんでした: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "\\gset に対して返すべき行がありません" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "\\gset に対して複数の行が返されました" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "特殊変数\"%s\"への\\gsetは無視されました" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "文: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "想定外のトランザクション状態(%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "列" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "タイプ" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "読み取りエラーのため中止" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "スキーマ" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "名前" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "結果のデータ型" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "引数のデータ型" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "説明" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "集約関数一覧" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "このサーバー(バージョン%s)はアクセスメソッドをサポートしていません。" + +#: describe.c:168 +msgid "Index" +msgstr "インデックス" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "テーブル" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "ハンドラ" + +#: describe.c:201 +msgid "List of access methods" +msgstr "アクセスメソッド一覧" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "所有者" + +#: describe.c:231 +msgid "Location" +msgstr "場所" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "オプション" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "サイズ" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "テーブル空間一覧" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\dfで指定できるオプションは [anptwS+] のみです" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "集約" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "ウィンドウ" + +#: describe.c:356 +msgid "proc" +msgstr "プロシージャ" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "関数" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "トリガー" + +#: describe.c:386 +msgid "immutable" +msgstr "IMMUTABLE" + +#: describe.c:387 +msgid "stable" +msgstr "STABLE" + +#: describe.c:388 +msgid "volatile" +msgstr "VOLATILE" + +#: describe.c:389 +msgid "Volatility" +msgstr "関数の変動性分類" + +#: describe.c:397 +msgid "restricted" +msgstr "制限付き" + +#: describe.c:398 +msgid "safe" +msgstr "安全" + +#: describe.c:399 +msgid "unsafe" +msgstr "危険" + +#: describe.c:400 +msgid "Parallel" +msgstr "並列実行" + +#: describe.c:405 +msgid "definer" +msgstr "定義ロール" + +#: describe.c:406 +msgid "invoker" +msgstr "起動ロール" + +#: describe.c:407 +msgid "Security" +msgstr "セキュリティ" + +#: describe.c:412 +msgid "Language" +msgstr "手続き言語" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "ソースコード" + +#: describe.c:594 +msgid "List of functions" +msgstr "関数一覧" + +#: describe.c:657 +msgid "Internal name" +msgstr "内部名" + +#: describe.c:659 +msgid "Elements" +msgstr "構成要素" + +#: describe.c:711 +msgid "List of data types" +msgstr "データ型一覧" + +#: describe.c:814 +msgid "Left arg type" +msgstr "左辺の型" + +#: describe.c:815 +msgid "Right arg type" +msgstr "右辺の型" + +#: describe.c:816 +msgid "Result type" +msgstr "結果の型" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "関数" + +#: describe.c:902 +msgid "List of operators" +msgstr "演算子一覧" + +#: describe.c:938 +msgid "Encoding" +msgstr "エンコーディング" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "照合順序" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype(変換演算子)" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "ICUロケール" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "ロケールプロバイダー" + +#: describe.c:964 +msgid "Tablespace" +msgstr "テーブル空間" + +#: describe.c:990 +msgid "List of databases" +msgstr "データベース一覧" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "テーブル" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "ビュー" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "実体化ビュー" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "シーケンス" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "外部テーブル" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "パーティションテーブル" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "列の権限" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "ポリシー" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "アクセス権限" + +#: describe.c:1188 +msgid "function" +msgstr "関数" + +#: describe.c:1190 +msgid "type" +msgstr "型" + +#: describe.c:1192 +msgid "schema" +msgstr "スキーマ" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "デフォルトのアクセス権限" + +#: describe.c:1259 +msgid "Object" +msgstr "オブジェクト" + +#: describe.c:1273 +msgid "table constraint" +msgstr "テーブル制約" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "ドメイン制約" + +#: describe.c:1321 +msgid "operator class" +msgstr "演算子クラス" + +#: describe.c:1345 +msgid "operator family" +msgstr "演算子族" + +#: describe.c:1368 +msgid "rule" +msgstr "ルール" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "オブジェクトの説明" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "\"%s\"という名前のリレーションは見つかりませんでした。" + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "リレーションが見つかりませんでした。" + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "OID %sを持つリレーションが見つかりませんでした。" + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "開始" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "最小" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "最大" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "増分" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "はい" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "いいえ" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "循環?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "キャッシュ" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "所有者: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "識別列のシーケンス: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "ログ出力なしのシーケンス\"%s.%s\"" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "シーケンス \"%s.%s\"" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "ログ出力なしのテーブル\"%s.%s\"" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "テーブル\"%s.%s\"" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "ビュー\"%s.%s\"" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "ログ出力なしの実体化ビュー\"%s.%s\"" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "実体化ビュー\"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "ログ出力なしのインデックス\"%s.%s\"" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "インデックス\"%s.%s\"" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "ログ出力なしのパーティション親インデックス\"%s.%s\"" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "パーティションインデックス\"%s.%s\"" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST テーブル\"%s.%s\"" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "複合型\"%s.%s\"" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "外部テーブル\"%s.%s\"" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "ログ出力なしのパーティション親テーブル\"%s.%s\"" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "パーティションテーブル\"%s.%s\"" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "照合順序" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "Null 値を許容" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "デフォルト" + +#: describe.c:2029 +msgid "Key?" +msgstr "キー?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "定義" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "FDW オプション" + +#: describe.c:2035 +msgid "Storage" +msgstr "ストレージ" + +#: describe.c:2037 +msgid "Compression" +msgstr "圧縮" + +#: describe.c:2039 +msgid "Stats target" +msgstr "統計目標" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "親パーティション: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "パーティション制約なし" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "パーティションの制約: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "パーティションキー: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "所属先テーブル\"%s.%s\"" + +#: describe.c:2309 +msgid "primary key, " +msgstr "プライマリキー, " + +#: describe.c:2312 +msgid "unique" +msgstr "ユニーク" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls not distinct" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "テーブル\"%s.%s\"用" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr "、述語 (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr "、クラスター化" + +#: describe.c:2332 +msgid ", invalid" +msgstr "無効" + +#: describe.c:2335 +msgid ", deferrable" +msgstr "、遅延可能" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr "、最初から遅延中" + +#: describe.c:2341 +msgid ", replica identity" +msgstr "、レプリカの id" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "インデックス:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Check 制約:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "外部キー制約:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "参照元:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "ポリシー:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "ポリシー(行セキュリティを強制的に有効化):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "ポリシー(行セキュリティ有効化): (なし)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "ポリシー(行セキュリティを強制的に有効化): (なし)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "ポリシー(行セキュリティを無効化):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "統計オブジェクト:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "ルール:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "無効化されたルール:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "常に適用するルール:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "レプリカ上でのみ適用するルール:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "パブリケーション:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "ビューの定義:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "トリガー:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "無効化されたユーザートリガ:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "無効化された内部トリガー:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "常に適用するするトリガー:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "レプリカ上でのみ適用するトリガー:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "サーバー: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "FDW オプション: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "継承元" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "パーティション数: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "パーティション数: %d (\\d+ で一覧を表示)。" + +#: describe.c:3424 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "子テーブル数: %d (\\d+ で一覧を表示)" + +#: describe.c:3431 +msgid "Child tables" +msgstr "子テーブル" + +#: describe.c:3431 +msgid "Partitions" +msgstr "パーティション" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "%s 型の型付きテーブル" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "レプリカ識別" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "OID あり: はい" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "アクセスメソッド: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr "、テーブル空間\"%s\"" + +#: describe.c:3668 +msgid "List of roles" +msgstr "ロール一覧" + +#: describe.c:3670 +msgid "Role name" +msgstr "ロール名" + +#: describe.c:3671 +msgid "Attributes" +msgstr "属性" + +#: describe.c:3673 +msgid "Member of" +msgstr "所属グループ" + +#: describe.c:3684 +msgid "Superuser" +msgstr "スーパーユーザー" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "継承なし" + +#: describe.c:3690 +msgid "Create role" +msgstr "ロール作成可" + +#: describe.c:3693 +msgid "Create DB" +msgstr "DB作成可" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "ログインできません" + +#: describe.c:3699 +msgid "Replication" +msgstr "レプリケーション可" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "RLS のバイパス" + +#: describe.c:3712 +msgid "No connections" +msgstr "接続なし" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d 個の接続" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "パスワードの有効期限 " + +#: describe.c:3777 +msgid "Role" +msgstr "ロール" + +#: describe.c:3778 +msgid "Database" +msgstr "データベース" + +#: describe.c:3779 +msgid "Settings" +msgstr "設定" + +#: describe.c:3803 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "ロール\"%s\"とデータベース\"%s\"の設定が見つかりませんでした。" + +#: describe.c:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "ロール\"%s\"の設定が見つかりませんでした。" + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "設定が見つかりませんでした。" + +#: describe.c:3814 +msgid "List of settings" +msgstr "設定一覧" + +#: describe.c:3885 +msgid "index" +msgstr "インデックス" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "TOAST テーブル" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "パーティションインデックス" + +#: describe.c:3910 +msgid "permanent" +msgstr "永続" + +#: describe.c:3911 +msgid "temporary" +msgstr "一時" + +#: describe.c:3912 +msgid "unlogged" +msgstr "ログなし" + +#: describe.c:3913 +msgid "Persistence" +msgstr "永続性" + +#: describe.c:3929 +msgid "Access method" +msgstr "アクセスメソッド" + +#: describe.c:4015 +msgid "List of relations" +msgstr "リレーション一覧" + +#: describe.c:4063 +#, c-format +msgid "The server (version %s) does not support declarative table partitioning." +msgstr "このサーバー(バージョン%s)は宣言的テーブルパーティショニングをサポートしていません。" + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "パーティションインデックスの一覧" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "パーティションテーブルの一覧" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "パーティションリレーションの一覧" + +#: describe.c:4111 +msgid "Parent name" +msgstr "親の名前" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "末端パーティションのサイズ" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "トータルサイズ" + +#: describe.c:4258 +msgid "Trusted" +msgstr "信頼済み" + +#: describe.c:4267 +msgid "Internal language" +msgstr "内部言語" + +#: describe.c:4268 +msgid "Call handler" +msgstr "呼び出しハンドラー" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "バリデーター" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "インラインハンドラー" + +#: describe.c:4305 +msgid "List of languages" +msgstr "手続き言語一覧" + +#: describe.c:4346 +msgid "Check" +msgstr "CHECK制約" + +#: describe.c:4390 +msgid "List of domains" +msgstr "ドメイン一覧" + +#: describe.c:4424 +msgid "Source" +msgstr "変換元" + +#: describe.c:4425 +msgid "Destination" +msgstr "変換先" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "デフォルト?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "符号化方式一覧" + +#: describe.c:4497 +msgid "Parameter" +msgstr "パラメータ" + +#: describe.c:4498 +msgid "Value" +msgstr "値" + +#: describe.c:4505 +msgid "Context" +msgstr "コンテクスト" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "設定パラメータの一覧" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "非デフォルトの設定パラメータの一覧" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "このサーバー(バージョン%s)はイベントトリガーをサポートしていません。" + +#: describe.c:4587 +msgid "Event" +msgstr "イベント" + +#: describe.c:4589 +msgid "enabled" +msgstr "有効" + +#: describe.c:4590 +msgid "replica" +msgstr "レプリカ" + +#: describe.c:4591 +msgid "always" +msgstr "常時" + +#: describe.c:4592 +msgid "disabled" +msgstr "無効" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "有効状態" + +#: describe.c:4595 +msgid "Tags" +msgstr "タグ" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "イベントトリガー一覧" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "このサーバー(バージョン%s)は拡張統計情報をサポートしていません。" + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Dependencies" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "拡張統計情報の一覧" + +#: describe.c:4745 +msgid "Source type" +msgstr "変換元の型" + +#: describe.c:4746 +msgid "Target type" +msgstr "変換先の型" + +#: describe.c:4770 +msgid "in assignment" +msgstr "代入時のみ" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "暗黙的に適用 ?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "キャスト一覧" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "プロバイダー" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "確定的?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "照合順序一覧" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "スキーマ一覧" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "テキスト検索用パーサ一覧" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "テキスト検索用パーサ\"%s\"が見つかりませんでした。" + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "テキスト検索パーサが見つかりませんでした。" + +#: describe.c:5245 +msgid "Start parse" +msgstr "パース開始" + +#: describe.c:5246 +msgid "Method" +msgstr "メソッド" + +#: describe.c:5250 +msgid "Get next token" +msgstr "次のトークンを取得" + +#: describe.c:5252 +msgid "End parse" +msgstr "パース終了" + +#: describe.c:5254 +msgid "Get headline" +msgstr "見出しを取得" + +#: describe.c:5256 +msgid "Get token types" +msgstr "トークンタイプを取得" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "テキスト検索パーサ\"%s.%s\"" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "テキスト検索パーサ\"%s\"" + +#: describe.c:5289 +msgid "Token name" +msgstr "トークン名" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "パーサ\"%s.%s\"のトークンタイプ" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "パーサ\"%s\"のトークンタイプ" + +#: describe.c:5350 +msgid "Template" +msgstr "テンプレート" + +#: describe.c:5351 +msgid "Init options" +msgstr "初期化オプション" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "テキスト検索用辞書一覧" + +#: describe.c:5411 +msgid "Init" +msgstr "初期化" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Lex 処理" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "テキスト検索テンプレート一覧" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "テキスト検索設定一覧" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "テキスト検索用設定\"%s\"が見つかりませんでした。" + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "テキスト検索設定が見つかりませんでした。" + +#: describe.c:5619 +msgid "Token" +msgstr "トークン" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "辞書" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "テキスト検索設定\"%s.%s\"" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "テキスト検索設定\"%s\"" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"パーサ: \"%s.%s\"" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"パーサ: \"%s\"" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "外部データラッパ一覧" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "外部データラッパ" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "バージョン" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "外部サーバー一覧" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "サーバー" + +#: describe.c:5825 +msgid "User name" +msgstr "ユーザー名" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "ユーザーマッピング一覧" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "外部テーブル一覧" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "インストール済みの拡張一覧" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "\"%s\"という名前の機能拡張が見つかりませんでした。" + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "機能拡張が見つかりませんでした。" + +#: describe.c:6075 +msgid "Object description" +msgstr "オブジェクトの説明" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "機能拡張\"%s\"内のオブジェクト" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "修飾名が不適切です(ドット区切りの名前が多すぎます): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "データベース間の参照は実装されていません: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "このサーバー(バージョン%s)はパブリケーションをサポートしていません。" + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "全テーブル" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Insert文" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Update文" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Delete文" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Truncate文" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "最上位パーティションテーブル経由" + +#: describe.c:6221 +msgid "List of publications" +msgstr "パブリケーション一覧" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "\"%s\"という名前のパブリケーションが見つかりませんでした。" + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "パブリケーションが見つかりませんでした。" + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "パブリケーション %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "テーブル:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "以下のスキーマ内のテーブル:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "このサーバー(バージョン%s)はサブスクリプションをサポートしていません。" + +#: describe.c:6497 +msgid "Publication" +msgstr "パブリケーション" + +#: describe.c:6506 +msgid "Binary" +msgstr "バイナリ" + +#: describe.c:6507 +msgid "Streaming" +msgstr "ストリーミング" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "2相コミット" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "エラー時無効化" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "同期コミット" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "接続情報" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "スキップLSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "サブスクリプション一覧" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "入力の型" + +#: describe.c:6618 +msgid "Storage type" +msgstr "ストレージタイプ" + +#: describe.c:6619 +msgid "Operator class" +msgstr "演算子クラス" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "演算子族" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "演算子クラス一覧" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "適用可能型" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "演算子族一覧" + +#: describe.c:6807 +msgid "Operator" +msgstr "演算子" + +#: describe.c:6808 +msgid "Strategy" +msgstr "ストラテジ" + +#: describe.c:6809 +msgid "ordering" +msgstr "順序付け" + +#: describe.c:6810 +msgid "search" +msgstr "検索" + +#: describe.c:6811 +msgid "Purpose" +msgstr "目的" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "ソート演算子族" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "演算子族の演算子一覧" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "登録左辺型" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "登録右辺型" + +#: describe.c:6904 +msgid "Number" +msgstr "番号" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "演算子族のサポート関数一覧" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "ラージ オブジェクト" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql は PostgreSQL の対話型ターミナルです。\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "使い方:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [オプション]... [データベース名 [ユーザー名]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "一般的なオプション:\n" + +#: help.c:84 +msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" +msgstr " -c, --command=コマンド 単一の(SQLまたは内部)コマンドを一つだけ実行して終了\n" + +#: help.c:85 +#, c-format +msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr " -d, --dbname=DB名 接続するデータベース名(デフォルト: \"%s\")\n" + +#: help.c:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=FILENAME ファイルからコマンドを読み込んで実行した後に終了\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l(エル), --list 使用可能なデータベース一覧を表示して終了\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version バージョン情報を表示して終了\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc 初期化ファイル (~/.psqlrc) を読み込まない\n" + +#: help.c:94 +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-interactive)\n" +msgstr "" +" -1 (数字の1), --single-transaction\n" +" (対話形式でない場合)単一のトランザクションとして実行\n" + +#: help.c:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] このヘルプを表示して終了\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands バックスラッシュコマンドの一覧を表示して終了\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables 特殊変数の一覧を表示して終了\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"入出力オプション:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all スクリプトから読み込んだ入力をすべて表示\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors 失敗したコマンドを表示\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries サーバーへ送信したコマンドを表示\n" + +#: help.c:104 +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden 内部コマンドが生成した問い合わせを表示\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME セッションログをファイルに書き込む\n" + +#: help.c:106 +msgid " -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr " -n, --no-readline 拡張コマンドライン編集機能(readline)を無効にする\n" + +#: help.c:107 +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr " -o, --output=FILENAME 問い合わせの結果をファイル (または |パイプ)に送る\n" + +#: help.c:108 +msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgstr " -q, --quiet 静かに実行 (メッセージなしで、問い合わせの出力のみ)\n" + +#: help.c:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step シングルステップモード (各問い合わせごとに確認)\n" + +#: help.c:110 +msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" +msgstr " -S, --single-line 単一行モード (行末でSQLコマンドを終端)\n" + +#: help.c:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"出力フォーマットのオプション\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align 桁揃えなしのテーブル出力モード\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv CSV(カンマ区切り)テーブル出力モード\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html HTML テーブル出力モード\n" + +#: help.c:119 +msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" +msgstr "" +" -P, --pset=変数[=値] 表示オプション '変数' を '値' にセット\n" +" (\\pset コマンドを参照)\n" + +#: help.c:120 +msgid "" +" -R, --record-separator=STRING\n" +" record separator for unaligned output (default: newline)\n" +msgstr "" +" -R, --record-separator=文字列\n" +" 桁揃えなし出力におけるレコード区切り文字\n" +" (デフォルト: 改行)\n" + +#: help.c:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only 行のみを表示\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded 拡張テーブル出力に切り替える\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"接続オプション:\n" + +#: help.c:133 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" +msgstr "" +" -h, --host=HOSTNAME データベースサーバーのホストまたはソケットの\n" +" ディレクトリ(デフォルト: \"%s\")\n" + +#: help.c:134 +msgid "local socket" +msgstr "ローカルソケット" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password パスワード入力を要求しない\n" + +#: help.c:143 +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password パスワードプロンプトの強制表示(本来は自動的に表示)\n" + +#: help.c:145 +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 <%s>.\n" +msgstr "バグは<%s>に報告してください。\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s ホームページ: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "一般\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright PostgreSQL の使い方と配布条件を表示\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr " \\crosstabview [列リスト] 問い合わせを実行し、結果をクロス表形式で出力\n" + +#: help.c:194 +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose 最後のエラーメッセージを最大の冗長性で表示\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(OPTIONS)] [FILE] 問い合わせ実行 (結果はファイルまたは |パイプへ出力);\n" +" 引数なしの\\gはセミコロンと同義\n" + +#: help.c:197 +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc 問い合わせを実行せずに結果の説明を行う\n" + +#: help.c:198 +msgid " \\gexec execute query, then execute each value in its result\n" +msgstr " \\gexec 問い合わせを実行し、結果の中の個々の値を実行\n" + +#: help.c:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [PREFIX] 問い合わせを実行して結果を psql 変数に格納\n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr " \\gx [ファイル名] \\g と同じ、ただし拡張出力モードを強制\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q psql を終了する\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [秒数] 指定した秒数ごとに問い合わせを実行\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "ヘルプ\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [コマンド] バックスラッシュコマンドのヘルプを表示\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? オプション psql のコマンドライン・オプションのヘルプを表示\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? 変数名 特殊変数のヘルプを表示\n" + +#: help.c:210 +msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" +msgstr " \\h [名前] SQLコマンドの文法ヘルプの表示。* で全コマンドを表示\n" + +#: help.c:213 +msgid "Query Buffer\n" +msgstr "問い合わせバッファ\n" + +#: help.c:214 +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" +msgstr "" +" \\e [ファイル] [行番号] 現在の問い合わせバッファ(やファイル)を外部エディタで\n" +" 編集\n" + +#: help.c:215 +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [関数名 [行番号]] 関数定義を外部エディタで編集\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [ビュー名 [行番号]] ビュー定義を外部エディタで編集\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p 問い合わせバッファの内容を表示\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r 問い合わせバッファをリセット(クリア)\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [ファイル] ヒストリを表示またはファイルに保存\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w ファイル 問い合わせバッファの内容をファイルに保存\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "入出力\n" + +#: help.c:226 +msgid " \\copy ... perform SQL COPY with data stream to the client host\n" +msgstr "" +" \\copy ... クライアントホストに対し、データストリームを使って\n" +" SQL COPYを実行\n" + +#: help.c:227 +msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n" +msgstr " \\echo [-n] [文字列] 文字列を標準出力に書き込む (-n で改行しない)\n" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i ファイル ファイルからコマンドを読み込んで実行\n" + +#: help.c:229 +msgid " \\ir FILE as \\i, but relative to location of current script\n" +msgstr "" +" \\ir ファイル \\i と同じ。ただし現在のスクリプトの場所からの相対パス\n" +" で指定\n" + +#: help.c:230 +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [ファイル] 問い合わせ結果をすべてファイルまたは |パイプ へ送出\n" + +#: help.c:231 +msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n" +msgstr "" +" \\qecho [-n] [文字列] 文字列を\\oで指定した出力ストリームに書き込む(-n で改行\n" +" しない)\n" + +#: help.c:232 +msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n" +msgstr " \\warn [-n] [文字列] 文字列を標準エラー出力に書き込む (-n で改行しない)\n" + +#: help.c:235 +msgid "Conditional\n" +msgstr "条件分岐\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR 条件分岐ブロックの開始\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR 現在の条件分岐ブロック内の選択肢\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else 現在の条件分岐ブロックにおける最後の選択肢\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif 条件分岐ブロックの終了\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "情報表示\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (オプション:S = システムオブジェクトを表示, + = 詳細表示)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] テーブル、ビュー、およびシーケンスの一覧を表示\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr "" +" \\d[S+] 名前 テーブル、ビュー、シーケンス、またはインデックスの\n" +" 説明を表示\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [パターン] 集約関数の一覧を表示\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [パターン] アクセスメソッドの一覧を表示\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] 演算子クラスの一覧を表示\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] 演算子族の一覧を表示\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] 演算子族の演算子の一覧を表示\n" + +#: help.c:251 +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] 演算子族のサポート関数の一覧を表示\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [パターン] テーブル空間の一覧を表示\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [パターン] 符号化方式間の変換の一覧を表示\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [PATTERN] 設定パラメータの一覧を表示\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [パターン] キャストの一覧を表示します。\n" + +#: help.c:256 +msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr " \\dd[S] [パターン] 他では表示されないオブジェクトの説明を表示\n" + +#: help.c:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [パターン] ドメインの一覧を表示\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [パターン] デフォルト権限の一覧を表示\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [パターン] 外部テーブルの一覧を表示\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [パターン] 外部サーバーの一覧を表示\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [パターン] 外部テーブルの一覧を表示\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [パターン] ユーザーマッピングの一覧を表示\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [パターン] 外部データラッパの一覧を表示\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [関数パターン [型パターン ...]]\n" +" [集約/通常/プロシージャ/トリガー/ウィンドウ]\n" +" 関数のみの一覧を表示\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [パターン] テキスト検索設定の一覧を表示\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [パターン] テキスト検索辞書の一覧を表示\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [パターン] テキスト検索パーサの一覧を表示\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [パターン] テキスト検索テンプレートの一覧を表示\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [パターン] ロールの一覧を表示\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [パターン] インデックスの一覧を表示\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] ラージオブジェクトの一覧を表示、\\lo_list と同じ\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [パターン] 手続き言語の一覧を表示\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [パターン] 実体化ビューの一覧を表示\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [パターン] スキーマの一覧を表示\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [演算子パターン [型パターン [型パターン]]]\n" +" 演算子の一覧を表示\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [パターン] 照合順序の一覧を表示\n" + +#: help.c:279 +msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr " \\dp [パターン] テーブル、ビュー、シーケンスのアクセス権の一覧を表示\n" + +#: help.c:280 +msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n" +msgstr "" +" \\dP[itn+] [パターン] パーティションリレーション[テーブル/インデックスのみ]\n" +" の一覧を表示 [n=入れ子]\n" + +#: help.c:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr "" +" \\drds [ロールパターン [DBパターン]]\n" +" データベース毎のロール設定の一覧を表示\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [パターン] レプリケーションのパブリケーションの一覧を表示\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [パターン] レプリケーションのサブスクリプションの一覧を表示\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [パターン] シーケンスの一覧を表示\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [パターン] テーブルの一覧を表示\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [パターン] データ型の一覧を表示\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [パターン] ロールの一覧を表示\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [パターン] ビューの一覧を表示\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [パターン] 機能拡張の一覧を表示\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [パターン] 拡張統計情報の一覧を表示\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [パターン] イベントトリガーの一覧を表示\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [パターン] データベースの一覧を表示\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] 関数名 関数の定義を表示\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] ビュー名 ビューの定義を表示\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [パターン] \\dp と同じ\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "ラージ・オブジェクト\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr "" +" \\lo_export LOBOID ファイル名\n" +" ラージ・オブエジェクトをファイルに書き込む\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import ファイル名 [コメント]\n" +" ラージ・オブジェクトをファイルから読み込む\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] ラージ・オブジェクトの一覧を表示\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID ラージ・オブジェクトを削除\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "書式設定\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a 非整列と整列間の出力モードの切り替え\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C [文字列] テーブルのタイトルを設定、値がなければ削除\n" + +#: help.c:309 +msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgstr "" +" \\f [文字列] 問い合わせ結果の非整列出力時のフィールド区切り文字を\n" +" 表示または設定\n" + +#: help.c:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H HTML出力モードの切り替え (現在値: %s)\n" + +#: help.c:312 +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:319 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] 結果行のみ表示 (現在値: %s)\n" + +#: help.c:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [文字列] HTMLの
タグ属性の設定、値がなければ解除\n" + +#: help.c:322 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr " \\x [on|off|auto] 拡張出力の切り替え (現在値: %s)\n" + +#: help.c:323 +msgid "auto" +msgstr "自動(auto)" + +#: help.c:326 +msgid "Connection\n" +msgstr "接続\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo 現在の接続に関する情報を表示\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [エンコーディング] クライアントのエンコーディングを表示または設定\n" + +#: help.c:336 +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [ユーザー名] ユーザーのパスワードを安全に変更\n" + +#: help.c:339 +msgid "Operating System\n" +msgstr "オペレーティングシステム\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIR] カレントディレクトリを変更\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr "" +" \\getenv psql変数 環境変数\n" +" 環境変数を取得\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv 名前 [値] 環境変数を設定または解除\n" + +#: help.c:343 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] コマンドの実行時間表示の切り替え (現在値: %s)\n" + +#: help.c:345 +msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" +msgstr "" +" \\! [コマンド] シェルでコマンドを実行するか、もしくは対話型シェルを\n" +" 起動します。\n" + +#: help.c:348 +msgid "Variables\n" +msgstr "変数\n" + +#: help.c:349 +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [テキスト] 変数名 ユーザーに対して内部変数の設定を要求します\n" + +#: help.c:350 +msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" +msgstr " \\set [変数名 [値]] 内部変数の値を設定、パラメータがなければ一覧を表示\n" + +#: help.c:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset 変数名 内部変数を削除\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"特別に扱われる変数の一覧\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "psql変数:\n" + +#: help.c:394 +msgid "" +" psql --set=NAME=VALUE\n" +" or \\set NAME VALUE inside psql\n" +"\n" +msgstr "" +" psql --set=名前=値\n" +" またはpsql内で \\set 名前 値\n" +"\n" + +#: help.c:396 +msgid "" +" AUTOCOMMIT\n" +" if set, successful SQL commands are automatically committed\n" +msgstr "" +" AUTOCOMMIT\n" +" セットされている場合、SQLコマンドが成功した際に自動的にコミット\n" + +#: help.c:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" 現在接続中のデータベース名\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" 現在のクライアント側の文字セットのエンコーディング\n" + +#: help.c:411 +msgid "" +" ERROR\n" +" true if last query failed, else false\n" +msgstr "" +" ERROR\n" +" 最後の問い合わせが失敗であれば真、そうでなければ偽\n" + +#: help.c:413 +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:415 +msgid "" +" HIDE_TABLEAM\n" +" if set, table access methods are not displayed\n" +msgstr "" +" HIDE_TABLEAM\n" +" 設定すると、テーブルアクセスメソッドは表示されない\n" +"\n" + +#: help.c:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" 設定すると、圧縮方式は表示されない\n" +"\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" コマンド履歴の制御 [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr "" +" HISTFILE\n" +" コマンド履歴を保存するファイルの名前\n" + +#: help.c:423 +msgid "" +" HISTSIZE\n" +" maximum number of commands to store in the command history\n" +msgstr "" +" HISTSIZE\n" +" コマンド履歴で保存するコマンド数の上限\n" + +#: help.c:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" 現在接続中のデータベースサーバーホスト\n" + +#: help.c:427 +msgid "" +" IGNOREEOF\n" +" number of EOFs needed to terminate an interactive session\n" +msgstr "" +" IGNOREEOF\n" +" 対話形セッションを終わらせるのに必要なEOFの数\n" + +#: help.c:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" 最後の変更の影響を受けたOID\n" + +#: help.c:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" エラー発生後にバッチ実行を停止\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" 現在の接続のサーバーポート\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" psql の標準のプロンプトを指定\n" + +#: help.c:442 +msgid "" +" PROMPT2\n" +" specifies the prompt used when a statement continues from a previous line\n" +msgstr "" +" PROMPT2\n" +" 文が前行から継続する場合のプロンプトを指定\n" + +#: help.c:444 +msgid "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3\n" +" COPY ... FROM STDIN の最中に使われるプロンプトを指定\n" + +#: help.c:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" メッセージを表示しない (-q オプションと同じ)\n" + +#: help.c:448 +msgid "" +" ROW_COUNT\n" +" number of rows returned or affected by last query, or 0\n" +msgstr "" +" ROW_COUNT\n" +" 最後の問い合わせで返却した、または影響を与えた行の数、または0\n" + +#: help.c:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" 複合問い合わせ(\\;)の最後の結果のみではなくすべてを表示する\n" + +#: help.c:455 +msgid "" +" SHOW_CONTEXT\n" +" controls display of message context fields [never, errors, always]\n" +msgstr "" +" SHOW_CONTEXT\n" +" メッセージコンテキストフィールドの表示を制御 [never, errors, always]\n" + +#: help.c:457 +msgid "" +" SINGLELINE\n" +" if set, end of line terminates SQL commands (same as -S option)\n" +msgstr "" +" SINGLELINE\n" +" セットした場合、改行はSQLコマンドを終端する (-S オプションと同じ)\n" + +#: help.c:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" シングルステップモード (-s オプションと同じ)\n" + +#: help.c:461 +msgid "" +" SQLSTATE\n" +" SQLSTATE of last query, or \"00000\" if no error\n" +msgstr "" +" SQLSTATE\n" +" 最後の問い合わせの SQLSTATE、またはエラーでなければ\"00000\"\n" + +#: help.c:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" 現在接続中のデータベースユーザー\n" + +#: help.c:465 +msgid "" +" VERBOSITY\n" +" controls verbosity of error reports [default, verbose, terse, sqlstate]\n" +msgstr "" +" VERBOSITY\n" +" エラー報告の詳細度を制御 [default, verbose, terse, sqlstate]\n" + +#: help.c:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"表示設定:\n" + +#: help.c:474 +msgid "" +" psql --pset=NAME[=VALUE]\n" +" or \\pset NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" psql --pset=名前[=値]\n" +" またはpsql内で \\pset 名前 [値]\n" +"\n" + +#: help.c:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" 境界線のスタイル (番号)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" 折り返し形式で目標とする横幅\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (or x)\n" +" 拡張出力 [on, off, auto]\n" + +#: help.c:482 +#, c-format +msgid "" +" fieldsep\n" +" field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep\n" +" 非整列出力でのフィールド区切り文字(デフォルトは \"%s\")\n" + +#: help.c:485 +msgid "" +" fieldsep_zero\n" +" set field separator for unaligned output to a zero byte\n" +msgstr "" +" fieldsep_zero\n" +" 非整列出力でのフィールド区切り文字をバイト値の0に設定\n" + +#: help.c:487 +msgid "" +" footer\n" +" enable or disable display of the table footer [on, off]\n" +msgstr "" +" footer\n" +" テーブルフッター出力の要否を設定 [on, off]\n" + +#: help.c:489 +msgid "" +" format\n" +" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr "" +" format\n" +" 出力フォーマットを設定 [unaligned, aligned, wrapped, html, asciidoc, ...]\n" + +#: help.c:491 +msgid "" +" linestyle\n" +" set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr "" +" linestyle\n" +" 境界線の描画スタイルを設定 [ascii, old-ascii, unicode]\n" + +#: help.c:493 +msgid "" +" null\n" +" set the string to be printed in place of a null value\n" +msgstr "" +" null\n" +" null 値の代わりに表示する文字列を設定\n" + +#: help.c:495 +msgid "" +" numericlocale\n" +" enable display of a locale-specific character to separate groups of digits\n" +msgstr "" +" numericlocale\n" +" ロケール固有文字での桁区切りを表示するかどうかを指定\n" + +#: help.c:497 +msgid "" +" pager\n" +" control when an external pager is used [yes, no, always]\n" +msgstr "" +" pager\n" +" いつ外部ページャーを使うかを制御 [yes, no, always]\n" + +#: help.c:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" 非整列出力でのレコード(行)区切り\n" + +#: help.c:501 +msgid "" +" recordsep_zero\n" +" set record separator for unaligned output to a zero byte\n" +msgstr "" +" recordsep_zero\n" +" 非整列出力でレコード区切りにバイト値の0に設定\n" + +#: help.c:503 +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:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" 以降に表示される表のタイトルを設定\n" + +#: help.c:508 +msgid "" +" tuples_only\n" +" if set, only actual table data is shown\n" +msgstr "" +" tuples_only\n" +" セットされた場合、実際のテーブルデータのみを表示\n" + +#: help.c:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"環境変数:\n" + +#: help.c:519 +msgid "" +" NAME=VALUE [NAME=VALUE] psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" 名前=値 [名前=値] psql ...\n" +" またはpsql内で \\setenv 名前 [値]\n" +"\n" + +#: help.c:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" 折り返し書式におけるカラム数\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" application_name 接続パラメータと同じ\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" dbname 接続パラメータと同じ\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" host 接続パラメータと同じ\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" パスワードファイル名\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" 接続用パスワード (推奨されません)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" port 接続パラメータと同じ\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" user 接続パラメータと同じ\n" + +#: help.c:540 +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:542 +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:544 +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" コマンドライン履歴ファイルの代替の場所\n" + +#: help.c:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" 外部ページャープログラムの名前\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" \\watchで使用する外部ページャープログラムの名前\n" + +#: help.c:552 +msgid "" +" PSQLRC\n" +" alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC\n" +" ユーザーの .psqlrc ファイルの代替の場所\n" + +#: help.c:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" \\! コマンドで使われるシェル\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" テンポラリファイル用ディレクトリ\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "利用可能なヘルプ:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "ファイル\"%s\"にヒストリーを保存できませんでした: %m" + +#: input.c:535 +#, 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: 未知のトランザクション状態" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: 脱出しました" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "\"\\q\"で%sを抜けます。\n" + +#: mainloop.c:214 +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:295 +msgid "Use \\? for help or press control-C to clear the input buffer." +msgstr "\\? でヘルプの表示、control-C で入力バッファをクリアします。" + +#: mainloop.c:297 +msgid "Use \\? for help." +msgstr " \\? でヘルプを表示します。" + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "PostgreSQL へのコマンド ライン インターフェイス、psql を使用しています。" + +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "\\q で終了します。" + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "control-D で終了します。" + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "control-C で終了します。" + +#: mainloop.c:459 mainloop.c:618 +#, c-format +msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "問い合わせは無視されました; \\endifかCtrl-Cで現在の\\ifブロックを抜けてください" + +#: mainloop.c:636 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "名前" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "集約関数のシグニチャー" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "新しい名前" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "新しい所有者" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "新しいスキーマ" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +msgid "where aggregate_signature is:" +msgstr "集約関数のシグニチャーには以下のものがあります:" + +#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "引数のモード" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "引数の名前" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "引数の型" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "オプション" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "オプションには以下のものがあります:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "接続の可否(真偽値)" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "最大同時接続数" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "テンプレートかどうか(真偽値)" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "新しいテーブル空間名" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "設定パラメータ" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "値" + +#: sql_help.c:200 +msgid "target_role" +msgstr "対象のロール" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "スキーマ名" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "GRANT/REVOKEの省略形" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "GRANT/REVOKEの省略形は以下のいずれかです:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "ロール名" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "評価式" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "ドメイン制約" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "制約名" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "新しい制約名" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "新しいバージョン" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "メンバーオブジェクト" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "メンバーオブジェクトは以下の通りです:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "オブジェクト名" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "集約関数名" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "変換前の型" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "変換後の型" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "関数名" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "演算子名" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "左辺の型" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "右辺の型" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "インデックスメソッド" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "プロシージャ名" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "ルーチン名" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "型名" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "言語名" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "集約関数のシグニチャーは以下の通りです:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "ハンドラー関数" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "バリデーター関数" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "アクション" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "列名" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "新しい列名" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "アクションは以下のいずれかです:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "データ型" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "照合順序" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "カラム制約" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "整数" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "属性オプション" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "テーブル制約" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "トリガー名" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "親テーブル" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "拡張名" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "実行コスト" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "結果の行数" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "サポート関数" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "ロールの指定" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "ユーザー名" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "ロール指定は以下の通りです:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "グループ名" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "テーブル空間名" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "インデックス名" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "ストレージパラメータ" + +#: sql_help.c:607 +msgid "column_number" +msgstr "列番号" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "ラージオブジェクトのOID" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "圧縮方式" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "新しいアクセスメソッド" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "制約選択評価関数" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "結合選択評価関数" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "戦略番号" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "演算子の型" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "ソートファミリー名" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "サポート番号" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "引数の型" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "テーブル名" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "USING式" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "CHECK式" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "発行オブジェクト" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "パブリケーションパラメータ" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "発行オブジェクトは以下のいずれかです:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "パスワード" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "タイムスタンプ" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "データベース名" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "増分値" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "最小値" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "最大値" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "開始番号" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "再開始番号" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "キャッシュ割り当て数" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "新しいターゲット" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "接続文字列" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "パブリケーション名" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "パブリケーション・オプション" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "{REFRESH PUBLICATION の追加オプション}" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "{SUBSCRIPTION パラメータ名}" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "スキップオプション" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "パーティション名" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "パーティション境界の仕様" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "シーケンスオプション" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "シーケンスオプション" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "インデックスを使うテーブルの制約" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "書き換えルール名" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "パーティション境界の仕様は以下の通りです:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "パーティション境界式" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "numericリテラル" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "そしてカラム制約は以下の通りです:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "デフォルト表現" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "生成式" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "インデックスパラメータ" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "参照テーブル" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "参照列" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "参照動作" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "テーブル制約は以下の通りです:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "除外対象要素" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "演算子" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "インデックスの述語" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "テーブル制約は以下の通りです:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "UNIQUE, PRIMARY KEY, EXCLUDE 制約のインデックスパラメータは以下の通りです:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "EXCLUDE 制約の除外対象要素は以下の通りです:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "演算子クラス" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "FOREIGN KEY/REFERENCES制約の参照動作は以下の通り:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "テーブル空間のオプション" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "トークンの型" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "辞書名" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "元の辞書" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "新しい辞書" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "属性名" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "新しい属性名" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "新しい列挙値" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "隣接した列挙値" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "既存の列挙値" + +#: sql_help.c:1589 +msgid "property" +msgstr "プロパティ" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "サーバー名" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "ビューのオプション名" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "ビューオプションの値" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "テーブルおよび列" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "オプションには以下のうちのいずれかを指定します:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "真偽値" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "そしてテーブルと列の指定は以下の通りです:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "トランザクションのモード" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "トランザクションのモードは以下の通りです:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "引数" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "リレーション名" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "ドメイン名" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "ポリシー名" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "ルール名" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "文字列リテラル" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "トランザクションID" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "ファイル名" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "コマンド" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "条件" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "問い合わせ" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "フォーマット名" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "区切り文字" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "NULL文字列" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "引用符文字" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "エスケープ文字" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "エンコーディング名" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "アクセスメソッドの型" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "入力データ型" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "状態遷移関数" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "状態データの型" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "状態データのサイズ" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "終了関数" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "結合関数" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "シリアライズ関数" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "デシリアライズ関数" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "初期条件" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "前方状態遷移関数" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "逆状態遷移関数" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "移動集約モード時の状態値のデータ型" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "移動集約モード時の状態値のデータサイズ" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "移動集約モード時の終了関数" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "移動集約モード時の初期条件" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "ソート演算子" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "または古い構文" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "基本の型" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "ロケール" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "照合順序" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "Ctype(変換演算子)" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "プロバイダ" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "バージョン" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "既存の照合順序" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "変換元のエンコーディング" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "変換先のエンコーディング" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "テンプレート" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "エンコード" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "ストラテジ" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "ICUロケール" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "ロケールプロバイダ" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "照合順序バージョン" + +#: sql_help.c:2212 +msgid "oid" +msgstr "オブジェクトID" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "制約条件" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "制約条件は以下の通りです:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "イベント" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "フィルター変数" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "フィルター値" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "カラム制約は以下の通りです:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "戻り値の型" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "列の型" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "定義" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "オブジェクトファイル名" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "リンクシンボル" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "SQL本体" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "UID" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "インデックスメソッド" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "演算子クラスパラメータ" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "呼び出しハンドラー" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "インラインハンドラー" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "バリデーション関数" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "交代演算子" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "否定演算子" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "演算子族の名前" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "ストレージタイプ" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "イベントは以下のいずれかです:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "スキーマ要素" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "サーバーのタイプ" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "サーバーのバージョン" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "外部データラッパ名" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "統計オブジェクト名" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "統計種別" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "サブスクリプション名" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "コピー元のテーブル" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "LIKEオプション" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "LIKE オプションは以下の通りです:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "ディレクトリ" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "パーサ名" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "複製元の設定" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "開始関数" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "トークン取得関数" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "終了関数" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "LEXTYPE関数" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "見出し関数" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "初期処理関数" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "LEXIZE関数" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "{FROM SQL 関数名}" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "{TO SQL 関数名}" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "被参照テーブル名" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "移行用リレーション名" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "引数" + +#: sql_help.c:3170 +msgid "label" +msgstr "ラベル" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "当該範囲のデータ型" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "当該範囲のデータ型の演算子クラス" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "正規化関数" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "当該範囲のデータ型の差分抽出関数" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "複範囲型名" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "入力関数" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "出力関数" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "受信関数" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "送信関数" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "型修飾子の入力関数" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "型修飾子の出力関数" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "分析関数" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "添字関数" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "内部長" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "バイト境界" + +#: sql_help.c:3189 +msgid "storage" +msgstr "ストレージ" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "LIKEの型" + +#: sql_help.c:3191 +msgid "category" +msgstr "カテゴリー" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "優先データ型かどうか(真偽値)" + +#: sql_help.c:3193 +msgid "default" +msgstr "デフォルト" + +#: sql_help.c:3194 +msgid "element" +msgstr "要素のデータ型" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "区切り記号" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "照合可能" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "WITH問い合わせ" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "別名" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "FROM項目" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "カーソル名" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "出力表現" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "出力名" + +#: sql_help.c:3316 +msgid "code" +msgstr "コードブロック" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "パラメータ" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "文" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "方向" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "方向 は以下のうちのいずれか:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "取り出す位置や行数" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "シーケンス名" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "引数名" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "引数の型" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "ラージオブジェクトid" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "リモートスキーマ" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "ローカルスキーマ" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "競合ターゲット" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "競合時アクション" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "競合ターゲットは以下のいずれかです:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "インデックスのカラム名" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "インデックス表現" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "インデックスの述語" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "競合時アクションは以下のいずれかです:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "副問い合わせ句" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "チャネル" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "ロックモード" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "ロックモードは以下のいずれかです:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "ターゲットテーブル名" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "ターゲット別名" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "データ源" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "JOIN条件" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "WHEN句" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "ここで\"データ源\"は以下の通り:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "データ源テーブル名" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "データ源問い合わせ" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "データ源別名" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "WHEN句は以下の通り:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "マージ更新" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "マージ削除" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "マージ挿入" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "そして\"マージ挿入\"は以下の通り:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "そして\"マージ更新\"は以下の通り:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "そして\"マージ削除\"は以下の通り:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "ペイロード" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "元のロール" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "新しいロール" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "セーブポイント名" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "グルーピング要素" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "ウィンドウ名" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "ウィンドウ定義" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "SELECT句" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "FROM項目は以下のいずれかです:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "列別名" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "サンプリングメソッド" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "乱数シード" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "WITH問い合わせ名" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "カラム定義" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "JOINタイプ" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "JOINカラム" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "JOIN用別名" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "グルーピング要素は以下のいずれかです:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "WITH問い合わせは以下のいずれかです:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "VALUES句" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "INSERT句" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "UPDATE句" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "DELETE句" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "SEARCH順序列名" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "循環識別列名" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "循環識別値" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "循環識別デフォルト" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "循環パス列名" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "新しいテーブル" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "スナップショットID" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "ソート表現" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "現在のトランザクションを中止します" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "集約関数の定義を変更します" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "照合順序の定義を変更します" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "エンコーディング変換ルールの定義を変更します" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "データベースを変更します" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "デフォルトのアクセス権限を定義します" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "ドメインの定義を変更します" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "イベントトリガーの定義を変更します" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "機能拡張の定義を変更します" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "外部データラッパの定義を変更します" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "外部テーブルの定義を変更します" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "関数の定義を変更します" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "ロール名またはメンバーシップを変更します" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "インデックスの定義を変更します" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "手続き言語の定義を変更します" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "ラージオブジェクトの定義を変更します" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "実体化ビューの定義を変更します" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "演算子の定義を変更します" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "演算子クラスの定義を変更します" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "演算子族の定義を変更します" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "行レベルのセキュリティ ポリシーの定義を変更します" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "プロシージャの定義を変更します" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "パブリケーションの定義を変更します" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "データベースロールを変更します" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "ルーチンの定義を変更します" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "ルールの定義を変更します" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "スキーマの定義を変更します" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "シーケンス生成器の定義を変更します" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "外部サーバーの定義を変更します" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "拡張統計情報オブジェクトの定義を変更します" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "サブスクリプションの定義を変更します" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "サーバーの設定パラメータを変更します" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "テーブルの定義を変更します。" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "テーブル空間の定義を変更します" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "テキスト検索設定の定義を変更します" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "テキスト検索辞書の定義を変更します" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "テキスト検索パーサーの定義を変更します" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "テキスト検索テンプレートの定義を変更します" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "トリガーの定義を変更します" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "型の定義を変更します" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "ユーザーマッピングの定義を変更します" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "ビューの定義を変更します" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "データベースの統計情報を収集します" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "トランザクション区間を開始します" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "プロシージャを実行します" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "先行書き込みログのチェックポイントを強制的に実行します" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "カーソルを閉じます" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "インデックスに従ってテーブルをクラスタ化します" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "オブジェクトのコメントを定義または変更します" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "現在のトランザクションをコミットします" + +#: sql_help.c:5434 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "二相コミットのために事前に準備されたトランザクションをコミットします" + +#: sql_help.c:5440 +msgid "copy data between a file and a table" +msgstr "ファイルとテーブルとの間でデータをコピーします" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "新しいアクセスメソッドを定義します" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "新しい集約関数を定義します" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "新しい型変換を定義します" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "新しい照合順序を定義します" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "新しいエンコーディング変換を定義します" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "新しいデータベースを作成します" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "新しいドメインを定義します" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "新しいイベントトリガーを定義します" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "機能拡張をインストールします" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "新しい外部データラッパを定義します" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "新しい外部テーブルを定義します" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "新しい関数を定義します" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "新しいデータベースロールを定義します" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "新しいインデックスを定義します" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "新しい手続き言語を定義します" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "新しい実体化ビューを定義します" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "新しい演算子を定義します" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "新しい演算子クラスを定義します" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "新しい演算子族を定義します" + +#: sql_help.c:5560 +msgid "define a new row-level security policy for a table" +msgstr "テーブルに対して新しい行レベルセキュリティポリシーを定義します" + +#: sql_help.c:5566 +msgid "define a new procedure" +msgstr "新しいプロシージャを定義します" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "新しいパブリケーションを定義します" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "新しい書き換えルールを定義します" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "新しいスキーマを定義します" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "新しいシーケンス生成器を定義します。" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "新しい外部サーバーを定義します" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "拡張統計情報を定義します" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "新しいサブスクリプションを定義します" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "新しいテーブルを定義します" + +#: sql_help.c:5626 sql_help.c:6148 +msgid "define a new table from the results of a query" +msgstr "問い合わせの結果から新しいテーブルを定義します" + +#: sql_help.c:5632 +msgid "define a new tablespace" +msgstr "新しいテーブル空間を定義します" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "新しいテキスト検索設定を定義します" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "新しいテキスト検索辞書を定義します" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "新しいテキスト検索パーサーを定義します" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "新しいテキスト検索テンプレートを定義します" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "新しいデータ変換を定義します" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "新しいトリガーを定義します" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "新しいデータ型を定義します" + +#: sql_help.c:5686 +msgid "define a new mapping of a user to a foreign server" +msgstr "外部サーバーに対するユーザーの新しいマッピングを定義します。" + +#: sql_help.c:5692 +msgid "define a new view" +msgstr "新しいビューを定義します" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "準備した文を解放します" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "カーソルを定義します" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "テーブルの行を削除します" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "セッション状態を破棄します" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "無名コードブロックを実行します" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "アクセスメソッドを削除します" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "集約関数を削除します" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "型変換を削除します" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "照合順序を削除します" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "符号化方式変換を削除します" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "データベースを削除します" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "ドメインを削除します" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "イベントトリガーを削除します" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "機能拡張を削除します" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "外部データラッパを削除します" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "外部テーブルを削除します" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "関数を削除します" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "データベースロールを削除します" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "インデックスを削除します" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "手続き言語を削除します" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "実体化ビューを削除します" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "演算子を削除します" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "演算子クラスを削除します" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "演算子族を削除します" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "データベースロールが所有するデータベースオブジェクトを削除します" + +#: sql_help.c:5848 +msgid "remove a row-level security policy from a table" +msgstr "テーブルから行レベルのセキュリティポリシーを削除します" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "プロシージャを削除します" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "パブリケーションを削除します" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "ルーチンを削除します" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "書き換えルールを削除します" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "スキーマを削除します" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "シーケンスを削除します" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "外部サーバー記述子を削除します" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "拡張統計情報を削除します" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "サブスクリプションを削除します" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "テーブルを削除します" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "テーブル空間を削除します" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "テキスト検索設定を削除します" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "テキスト検索辞書を削除します" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "テキスト検索パーサーを削除します" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "テキスト検索テンプレートを削除します" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "データ変換を削除します" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "トリガーを削除します" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "データ型を削除します" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "外部サーバーのユーザーマッピングを削除します" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "ビューを削除します" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "準備した文を実行します" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "文の実行計画を表示します" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "カーソルを使って問い合わせから行を取り出します" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "アクセス権限を定義します" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "外部サーバーからテーブル定義をインポートします" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "テーブルに新しい行を作成します" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "通知メッセージを監視します" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "共有ライブラリファイルをロードします" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "テーブルをロックします" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "条件によってテーブルの行を挿入、更新または削除する" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "カーソルを位置づけます" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "通知を生成します" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "実行に備えて文を準備します" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "二相コミットに備えて現在のトランザクションを準備します" + +#: sql_help.c:6076 +msgid "change the ownership of database objects owned by a database role" +msgstr "データベースロールが所有するデータベースオブジェクトの所有権を変更します" + +#: sql_help.c:6082 +msgid "replace the contents of a materialized view" +msgstr "実体化ビューの内容を置き換えます" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "インデックスを再構築します" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "以前に定義されたセーブポイントを破棄します" + +#: sql_help.c:6100 +msgid "restore the value of a run-time parameter to the default value" +msgstr "実行時パラメータの値をデフォルト値に戻します" + +#: sql_help.c:6106 +msgid "remove access privileges" +msgstr "アクセス権限を削除します" + +#: sql_help.c:6118 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "二相コミットのために事前に準備されたトランザクションをキャンセルします" + +#: sql_help.c:6124 +msgid "roll back to a savepoint" +msgstr "セーブポイントまでロールバックします" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "現在のトランザクション内で新しいセーブポイントを定義します" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "オブジェクトに適用されるセキュリティラベルを定義または変更します" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "テーブルまたはビューから行を取得します" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "実行時パラメータを変更します" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "現在のトランザクションについて、制約チェックのタイミングを設定します" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "現在のセッションの現在のユーザー識別子を設定します" + +#: sql_help.c:6172 +msgid "set the session user identifier and the current user identifier of the current session" +msgstr "セッションのユーザー識別子および現在のセッションの現在のユーザー識別子を設定します" + +#: sql_help.c:6178 +msgid "set the characteristics of the current transaction" +msgstr "現在のトランザクションの特性を設定します" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "実行時パラメータの値を表示します" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "一つの、または複数のテーブルを空にします" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "通知メッセージの監視を中止します" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "テーブルの行を更新します" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "ガーベッジコレクションを行い、また必要に応じてデータベースを分析します" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "行セットを計算します" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 は非対話モード時でのみ使用可能です" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "ロックファイル\"%s\"をオープンできませんでした: %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"\"help\"でヘルプを表示します。\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "表示パラメータ\"%s\"を設定できませんでした" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "詳細は\"%s --help\"を実行してください。" + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "余分なコマンドライン引数\"%s\"は無視されました" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "実行可能ファイルが見つかりませんでした" + +#: tab-complete.c:5955 +#, 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:419 +#, c-format +msgid "" +"unrecognized value \"%s\" for \"%s\"\n" +"Available values are: %s." +msgstr "" +"\"%2$s\"の値\"%1$s\"が認識できません。\n" +"有効な値は %3$s。" diff --git a/src/bin/psql/po/ka.po b/src/bin/psql/po/ka.po new file mode 100644 index 0000000..1e6cb84 --- /dev/null +++ b/src/bin/psql/po/ka.po @@ -0,0 +1,6456 @@ +# Georgian message translation file for psql +# Copyright (C) 2022 PostgreSQL Global Development Group +# This file is distributed under the same license as the psql (PostgreSQL) package. +# Temuri Doghonadze , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-03-26 18:16+0000\n" +"PO-Revision-Date: 2023-03-27 07:16+0200\n" +"Last-Translator: Temuri Doghonadze \n" +"Language-Team: Georgian \n" +"Language: ka\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 3.2.2\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "შეცდომა: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "გაფრთხილება: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "დეტალები: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "მინიშნება: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "მიმდინარე საქაღალდის იდენტიფიკაციის პრობლემა: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "არასწორი ბინარული ფაილი \"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "ბინარული ფაილის (%s) წაკითხვის შეცდოა" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "გასაშვებად ფაილის \"%s\" პოვნა შეუძლებელია" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "საქაღალდის %s-ზე შეცვლის შეცდომა: %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "სიმბოლური ბმის \"%s\" წაკითხვის შეცდომა: %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s()-ის შეცდომა: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "გაუქმების მოთხოვნა გაგზავნილია\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "გაუქმების მოთხოვნის გაგზავნა შეუძლებელია: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu მწკრივი)" +msgstr[1] "(%lu მწკრივი)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "შეწყვეტილია\n" + +#: ../../fe_utils/print.c:3173 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "ცხრილის შემცველობაზე თავსართის დამატება შეუძლებელია: სვეტების რაოდენობა %d გადაჭარბებულია.\n" + +#: ../../fe_utils/print.c:3213 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "ცხრილის შემცველობაზე უჯრედის დამატება შეუძლებელია: უჯრედების რაოდენობა %d-ზე მეტია.\n" + +#: ../../fe_utils/print.c:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "გამოტანის არასწორი ფორმატი (შიდა შეცდომა): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "რეკურსიული გაფართოების გამოტოვება ცვლადისთვის \"%s\"" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "ლოკალური მომხმარებლის ID-ის (%d) ამოხსნა შეუძლებელია: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "ლოკალური მომხმარებელი ID-ით %d არ არსებობს" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "არასწორი ბრძანება \\%s" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "დახმარებისთვის სცადეთ \\? ." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: დამატებითი არგუმენტი \"%s\" იგნორირებულია" + +#: command.c:304 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "\\%s ბრძანება გნორირებულია; მიმდინარე \\if ბლოკიდან გამოსასვლელად გამოიყენეთ \\endif ან Control-C" + +#: command.c:573 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "მომხმარებლის, ID-ით %ld, საწყის საქაღალდეზე გადასვლის შეცდომა: %s" + +#: command.c:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: საქაღალდის \"%s\"-ზე შეცვლის შეცდომა: %m" + +#: command.c:617 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "ამჟამად მონაცემთა ბაზასთან მიერთებული არ ბრძანდებით.\n" + +#: command.c:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "მოთხოვნების ბაფერის გარეშე" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "ხაზის არასწორი ნომერი: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "ცვლილებების გარეშე" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: კოდირების არასწორი სახელი ან გადაყვანის პროცედურა არ არსებობს" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "წინა შეცდომის გარეშე." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: აკლია მარჯვენა მრგვალი ფრჩხილი" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: აკლია საჭირო არგუმენტი" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: არ შეიძლება \\else -ის შემდეგ იყოს" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: შესაბამისი \\if -ის გარეშე" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: ვერ გაჩნდება \\else -ის შემდეგ" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: შესაბამისი \\if -ის გარეშე" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: შესაბამისი \\if -ის გარეშე" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "მოთხოვნის ბაფერი ცარიელია." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "შეიყვანეთ მომხმარებლის (\"%s\") ახალი პაროლი: " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "შეიყვანეთ კდევ ერთხელ: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "პაროლები არ ემთხვევა." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: ცვლადის მნიშვნელობის წაკითხვის შეცდომა" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "მოთხოვნის ბაფერი ცარიელია(გასუფთავდა)." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "ისტორია ჩაწერილია ფაილში \"%s\".\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: გარემოს ცვლადის სახელი \"=\" -ს არ შეიძლება შეიცავდეს" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "ფუნქციის სახელი აუცილებელია" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "საჭიროა ხედის სახელი" + +#: command.c:2593 +msgid "Timing is on." +msgstr "დროის დათვლა ჩართულია." + +#: command.c:2595 +msgid "Timing is off." +msgstr "დროის დათვლა გამორთულია." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "პაროლი: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "პაროლი მომხმარებლისთვის %s: " + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "შეერთების სტრიქონის გამოყენებისას მომხმარებლის, ჰოსტისა და და პორტის არ მითითება" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "მონაცემთა ბაზის კავშირი პარამეტრების ხელახლა გამოსაყენებლად არ არსებობს" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "წინა შეერთება ჯერ კიდევ არსებობს" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "ახლა მიერთებული ბრძანდებით ბაზასთან \"%s\" როგორც მომხმარებელი \"%s\"\n" + +#: command.c:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, სერვერი %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "SSL შეერთება (პროდოკოლი: %s, შიფრაცა: %s, შეკუშმვა: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "უცნობი" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "გამორთული" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "ჩართ" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "GSSAPI-ით დაშიფრული შეერთება\n" + +#: command.c:3717 +#, 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" +" იხილეთ psql-ის დოკუმენტაციის გვერდი გვერდი \"შენიშვნები Windows-ის მომხმარებლებისთვის\".\n" + +#: command.c:3822 +#, c-format +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number" +msgstr "საჭიროა გარემოს ცვლადის PSQL_EDITOR_LINENUMBER_ARG დაყენება ხაზის ნომერზე" + +#: command.c:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "რედაქტორის გაშვების შეცდომა: \"%s\"" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "/bin/sh-ის გაშვების შეცდომა" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "დროებითი საქაღალდის მოძებნის შეცდომა: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "დროებითი ფაილის (\"%s\") გახსნის შეცდომა: %m" + +#: command.c:4266 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "\\pset: \"%s\"-ის არასწორი აბრევიატურა ორივეს, \"%s\"-ს და \"%s-ს ემთხვევა\"" + +#: command.c:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: ხაზის ნებადართული სტილებია ascii, old-ascii და unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: უნიკოდის საზღვრის ხაზის ნებადართული სტილებია single და double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: უნიკოდის სვეტის ხაზის ნებადართული სტილებია single და double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset:უნიკოდის თავსართის ხაზების ნებადართულ სტილებია single და double" + +#: command.c:4393 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: csv_fieldsep ერთი ერთბაიტიანი სიმბოლო უნდა იყოს" + +#: command.c:4398 +#, c-format +msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return" +msgstr "\\pset: csv_fieldsep არ შეიძლება იყოს ორმაგი ბრჭყალი, ხაზის დასასრული და კარეტის გადატანა" + +#: command.c:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: არასწორი პარამეტრი: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "საზღვრის სტილი: %d\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "სამიზნის სიგანე დაყენებული არაა.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "სამიზნის სიგანეა %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "გაფართოებული ეკრანი ჩართულია.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "გაფართოებული ეკრანი ავტომატურად გამოიყენება.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "გაფართოებული ეკრანი გამორთულია.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "CSV-ში ველების განმაცალკევებელია \"%s\".\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "ველების განმაცალკევებელი ნულოვანი ბაიტია.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "ველების განმაცალკევებელია \"%s\".\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "მდგომარეობის ზოლი ჩართულია.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "ნაგულისხმები ქვესართი გამორთულია\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "გამოტანის ფორმატია %s.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "ხაზის სტილია %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "ნულოვანია ეკრანია \"%s\".\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "რიცხვების ენაზე მორგებული გამოტანა ჩართულია.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "რიცხვების ენაზე მორგებული გამოტანა გამორთულა.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "გრძელი გამოტანისას გამოიყენება გვერდების გადამრთველი.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "გვერდების გადამრთველი ყოველთვის გამოიყენება.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "გვერდების გადამრთველი გამორთულია.\n" + +#: command.c:4651 +#, 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" + +#: command.c:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "ჩანაწერის გამყოფი ნული ბაიტია.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "ჩანაწერის გამყოფია .\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "ჩანაწერის გამყოფია \"%s\".\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "ცხრილის ატრიბუტებია \"%s\".\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "ცხრილის ატრიბუტები მოხსნილია.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "სათაურია \"%s\".\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "სათაურის დაყენება გაუქმდა.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "მხოლოდ სტრუქტურები ჩართულია.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "მხოლოდ სტრუქტურები გამორთულია.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "უნიკოდის საზღვრის ხაზის სტილია \"%s\".\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "უნიკოდის სვეტის ხაზის სტილია \"%s\".\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "უნიკოდის თავსართის ხაზის სტილია \"%s\".\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: შეცდომა" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch ცარიელი მოთხოვნით გამოყენებული ვერ იქნება" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "დროის აღმრიცხველის დაყენების შეცდომა: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (ყოველ %g-ში)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (ყოველ %g-ში)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "სიგნალებისთვის დალოდება შეუძლებელია: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* მოთხოვნა **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\" ხედი არაა" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "reloptions მასივის დამუშავების შეცდომა" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "გაქცევა აქტიური შეერთებს გარეშე შეუძლებელია" + +#: common.c:207 +#, c-format +msgid "shell command argument contains a newline or carriage return: \"%s\"" +msgstr "გარსის ბრძანება ხაზის გადატანას ან კარეტის დაბრუნებას შეიცავს: \"%s\"" + +#: common.c:311 +#, c-format +msgid "connection to server was lost" +msgstr "სერვერთან კავშირი დაკარგულია" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "სერვერთან კავშირი დაკარგულია. ვეცდები თავიდან დავიწყო: " + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "წარუმატებელი.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "წარმატებულია.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "მოულოდნელი PQresultStatus: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "დრო: %.3f მწმ\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "დრო: %.3f მწმ (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "დრო: %.3f მწმ (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, c-format +msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" +msgstr "დრო: %.3f მწმ (%.0f დღე %02d:%02d:%06.3f)\n" + +#: common.c:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "ამჟამად მონაცემთა ბაზასთან მიერთებული არ ბრძანდებით." + +#: common.c:654 +#, 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:657 +#, c-format +msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "მიღებულია ასინქრონული გაფრთხილება \"%s\" სერვერის პროცესისგან PID-ით %d.\n" + +#: common.c:688 +#, c-format +msgid "could not print result table: %m" +msgstr "შედეგების ცხრილის გამოტანის შეცდომა: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "\\gset -სთვის მწკრივები არ დაბრუნებულა" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "\\gset -სთვის ერთზე მეტი მწკრივი დაბრუნდა" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "მცდელობა, \\gset-ი სპეციალურ ცვლადზე (\"%s\") ყოფილიყო გამოყენებული, იგნორირებულია" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "ოპერატორი: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "ტრანზაქციის მოულოდნელი სტატუსი (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "სვეტი" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "ტიპი" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "დასრულდა კითხვის შეცდომის გამო" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "სქემა" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "სახელი" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "შედეგის მონაცემების ტიპი" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "არგუმენტის მონაცემების ტიპი" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "აღწერა" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "აგრეგატული ფუნქცების სია" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "სერვერს (ვერსია %s) წვდომის მეთოდების მხარდაჭერა არ გააჩნია." + +#: describe.c:168 +msgid "Index" +msgstr "ინდექსი" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "ცხრილი" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "დამმუშავებელი" + +#: describe.c:201 +msgid "List of access methods" +msgstr "წვდომის მეთოდების სია" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "მფლობელი" + +#: describe.c:231 +msgid "Location" +msgstr "მდებარეობა" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "პარამეტრები" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "ზომა" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "ცხრილის სივრცეების სია" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df მხოლოდ [anptwS+] -ს იღებს პარამეტრად" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "აგ" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "ფანჯარა" + +#: describe.c:356 +msgid "proc" +msgstr "პროც" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "ფუნქც" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "ტრიგერი" + +#: describe.c:386 +msgid "immutable" +msgstr "დაურღვეველი" + +#: describe.c:387 +msgid "stable" +msgstr "სტაბილური" + +#: describe.c:388 +msgid "volatile" +msgstr "ცვალებადი" + +#: describe.c:389 +msgid "Volatility" +msgstr "ცვალებადობა" + +#: describe.c:397 +msgid "restricted" +msgstr "შეზღუდულია" + +#: describe.c:398 +msgid "safe" +msgstr "უსაფრთხო" + +#: describe.c:399 +msgid "unsafe" +msgstr "სახიფათო" + +#: describe.c:400 +msgid "Parallel" +msgstr "პარალელური" + +#: describe.c:405 +msgid "definer" +msgstr "აღმწერი" + +#: describe.c:406 +msgid "invoker" +msgstr "ჩამწოდებელი" + +#: describe.c:407 +msgid "Security" +msgstr "უსაფრთხოება" + +#: describe.c:412 +msgid "Language" +msgstr "ენა" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "საწყისი კოდი" + +#: describe.c:594 +msgid "List of functions" +msgstr "ფუნქციების სია" + +#: describe.c:657 +msgid "Internal name" +msgstr "შიდა სახელი" + +#: describe.c:659 +msgid "Elements" +msgstr "ელემენტები" + +#: describe.c:711 +msgid "List of data types" +msgstr "მონაცემების ტიპების სია" + +#: describe.c:814 +msgid "Left arg type" +msgstr "მარცხენა არგუმენტის ტიპი" + +#: describe.c:815 +msgid "Right arg type" +msgstr "მარჯვენა არგუმენტის ტიპი" + +#: describe.c:816 +msgid "Result type" +msgstr "შედეგის ტიპი" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "ფუნქცია" + +#: describe.c:902 +msgid "List of operators" +msgstr "ოპერატორების სია" + +#: describe.c:938 +msgid "Encoding" +msgstr "კოდირება" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "დაშლა" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "ICU ენა" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "ენის მომწოდებელი" + +#: describe.c:964 +msgid "Tablespace" +msgstr "ცხრილების სივრცე" + +#: describe.c:990 +msgid "List of databases" +msgstr "მონაცემთა ბაზების სია" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "ცხრილი" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "ხედი" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "მატერიალიზებული ხედი" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "მიმდევრობა" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "გარე ცხრილი" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "დაყოფილი ცხრილი" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "სვეტის წვდომები" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "წესები" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "წვდომები" + +#: describe.c:1188 +msgid "function" +msgstr "ფუნქცია" + +#: describe.c:1190 +msgid "type" +msgstr "ტიპი" + +#: describe.c:1192 +msgid "schema" +msgstr "სქემა" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "ნაგულისხმები წვდომები" + +#: describe.c:1259 +msgid "Object" +msgstr "ობიექტი" + +#: describe.c:1273 +msgid "table constraint" +msgstr "ცხრილის შეზღუდვები" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "დომენის შეზღუდვები" + +#: describe.c:1321 +msgid "operator class" +msgstr "ოპერატორის კლასი" + +#: describe.c:1345 +msgid "operator family" +msgstr "ოპერატორის ოჯახი" + +#: describe.c:1368 +msgid "rule" +msgstr "წესი" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "ობიექტების აღწერა" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "ურთიერთობა სახელით \"%s\" არ არსებობს." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "ურთიერთობები ნაპოვნი არაა." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "ურთიერთობები, რომლის OID=%s, არ არსებობს." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "დაწყება" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "მინიმუმი" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "მაქსიმუმი" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "გაზრდა" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "დიახ" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "არა" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "ციკლები?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "კეში" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "მფლობელი: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "იდენტიფიკაციის სვეტის მიმდევრობა: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "ჟურნალში არ-ჩაწერილი მიმდევრომა \"%s.%s\"" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "მიმდევრობა \"%s.%s\"" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "ჟურნალში არ-ჩაწერილი ცხრილი \"%s.%s\"" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "ცხრილი \"%s.%s\"" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "ხედი \"%s.%s\"" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "ჟურნალში არ-ჩაწერილი მატერიალიზებული ხედი \"%s.%s\"" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "მატერიალიზებული ხედი \"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "ჟურნალში არ-ჩაწერილი ინდექსი \"%s.%s\"" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "ინდექსი \"%s.%s\"" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "ჟურნალში არ-ჩაწერილი დაყოფილი ინდექსი \"%s.%s\"" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "დაყოფილი ინდექი \"%s.%s\"" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST ცხრილი \"%s.%s\"" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "კომპოზიტის ტიპი \"%s.%s\"" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "გარე ცხრილი \"%s.%s\"" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "ჟურნალში არ-ჩაწერილი დაყოფილი ცხრილი \"%s.%s\"" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "დაყოფილი ცხრილი \"%s.%s\"" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "კოლაცია" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "განულებადი" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "ნაგულისხმევი" + +#: describe.c:2029 +msgid "Key?" +msgstr "გასაღები?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "განმარტება" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "FDW -ის მორგება" + +#: describe.c:2035 +msgid "Storage" +msgstr "საცავი" + +#: describe.c:2037 +msgid "Compression" +msgstr "შეკუმშვა" + +#: describe.c:2039 +msgid "Stats target" +msgstr "სამიზნის სტატისტიკა" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "დანაყოფი: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "დანაყოფის შეზღუდვების გარეშე" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "დანაყოფის შეზღუდვა: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "დანაყოფს გასაღები: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "ცხრილის მფლობელი: \"%s.%s\"" + +#: describe.c:2309 +msgid "primary key, " +msgstr "ძირითადი გასაღები. " + +#: describe.c:2312 +msgid "unique" +msgstr "უნიკალური" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " ნულები განსხვავებული არაა" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "ცხრილისთვის \"%s.%s\"" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", პრედიკატი (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", დაკლასტერებული" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", არასწორი" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", deferrable" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", თავიდან გადადებული" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", რეპლიკის იდენტიფიკატორი" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "ინდექსები:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "შეამოწმეთ შეზღუდვები:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "გარე-გასაღების შეზღუდვები:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "ბმული გარედან:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "წესები:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "წესები (მწკრივების გაძლიერებული დაცვა ჩართულია):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "წესები (მწკრივების დაცვა ჩართულია): (არცერთი)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "წესები (მწკრივების გაძლიერებული დაცვა ჩართულია: (არცერთი)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "წესები (მწკრივების უსაფრთხოება გამორთულია)" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "სტატისტიკის ობიექტები:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "წესები:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "გამორთული წესები:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "ყოველთვის გაშვებადი წესები:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "მხოლოდ რეპლიკაზე გაშვებადი წესები:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "გამოცემები:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "აღწერის ნახვა:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "ტრიგერები:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "მომხმარებლის გამორთული ტრიგერები:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "გამორთული შიდა ტრიგერები:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "ყოველთვის გაშვებადი ტრიგერები:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "მხოლოდ რეპლიკაზე გაშვებადი ტრიგერები:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "სერვერი: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "FDW პარამეტრები: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "მემკვიდრეობით" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "დანაყოფების რიცხვი: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "დანაყოფების რიცხვი: %d (სიის მისაღებად გამოიყენეთ \\d+.)" + +#: describe.c:3424 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "შვილეული ცხრილების რიცხვი: %d (სიის გამოსატანად გამოიყენეთ \\d+ )" + +#: describe.c:3431 +msgid "Child tables" +msgstr "შვილეული ცხრილები" + +#: describe.c:3431 +msgid "Partitions" +msgstr "დანაყოფები" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "ტიპიზირებული ცხრილის ტიპი: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "რეპლიკის იდენტიფიკატორი" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "აქვს OID-ები: დიახ" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "წვდომის მეთოდი: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", ცხრილების სივრცე: \"%s\"" + +#: describe.c:3668 +msgid "List of roles" +msgstr "როლების სია" + +#: describe.c:3670 +msgid "Role name" +msgstr "როლის სახელი" + +#: describe.c:3671 +msgid "Attributes" +msgstr "ატრიბუტები" + +#: describe.c:3673 +msgid "Member of" +msgstr "წარმოადგენს წევრს" + +#: describe.c:3684 +msgid "Superuser" +msgstr "ზემომხმარებელი" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "მემკვიდრეობითობის გარეშე" + +#: describe.c:3690 +msgid "Create role" +msgstr "როლის შექმნა" + +#: describe.c:3693 +msgid "Create DB" +msgstr "ბაზის შექმნა" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "შესვლა შეუძლებელია" + +#: describe.c:3699 +msgid "Replication" +msgstr "რეპლიკაცია" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "RLS-ის გამოტოვება" + +#: describe.c:3712 +msgid "No connections" +msgstr "შეერთებების გარეშე" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d შეერთება" +msgstr[1] "%d შეერთება" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "პაროლს ვადა " + +#: describe.c:3777 +msgid "Role" +msgstr "როლი" + +#: describe.c:3778 +msgid "Database" +msgstr "მონაცემთა ბაზა" + +#: describe.c:3779 +msgid "Settings" +msgstr "მორგება" + +#: describe.c:3803 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "როლისთვის \"%s\" და ბაზისთვის \"%s\" პარამეტრები ნაპოვნი არაა." + +#: describe.c:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "როლისთვის (\"%s\") პარამეტრები ნაპოვნი არაა." + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "პარამეტრები ნაპოვნი არაა." + +#: describe.c:3814 +msgid "List of settings" +msgstr "პარამეტრების სია" + +#: describe.c:3885 +msgid "index" +msgstr "ინდექსი" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "TOAST ცხრილი" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "დაყოფილი ინდექსი" + +#: describe.c:3910 +msgid "permanent" +msgstr "მუდმივი" + +#: describe.c:3911 +msgid "temporary" +msgstr "დროებითი" + +#: describe.c:3912 +msgid "unlogged" +msgstr "ჟურნალში არ-ჩაწერილი" + +#: describe.c:3913 +msgid "Persistence" +msgstr "შენახვა" + +#: describe.c:3929 +msgid "Access method" +msgstr "წვდომის მეთოდი" + +#: describe.c:4015 +msgid "List of relations" +msgstr "ურთიერთობების სია" + +#: describe.c:4063 +#, c-format +msgid "The server (version %s) does not support declarative table partitioning." +msgstr "სერვერს (ვერსია %s) ცხრილების დეკლარატიულ დაყოფის მხარდაჭერა არ გააჩნია." + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "დაყოფილი ინდექსების სია" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "დაყოფილი ცხრილების სია" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "დაყოფილი ურთიერთობების სია" + +#: describe.c:4111 +msgid "Parent name" +msgstr "მშობლის სახელი" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "ბოლო დანაყოფის ზომა" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "ჯამური ზომა" + +#: describe.c:4258 +msgid "Trusted" +msgstr "სანდო" + +#: describe.c:4267 +msgid "Internal language" +msgstr "შიდა ენა" + +#: describe.c:4268 +msgid "Call handler" +msgstr "გამოძახების დამმუშავებელი" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "შემმოწმებელი" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "ჩადგმული კოდის დამმუშავებელი" + +#: describe.c:4305 +msgid "List of languages" +msgstr "ენების სია" + +#: describe.c:4346 +msgid "Check" +msgstr "შემოწმება" + +#: describe.c:4390 +msgid "List of domains" +msgstr "დომენების სია" + +#: describe.c:4424 +msgid "Source" +msgstr "წყარო" + +#: describe.c:4425 +msgid "Destination" +msgstr "დანიშნულება" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "ნაგულისხმები?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "გადაყვანების სია" + +#: describe.c:4497 +msgid "Parameter" +msgstr "პარამეტრი" + +#: describe.c:4498 +msgid "Value" +msgstr "მნიშვნელობა" + +#: describe.c:4505 +msgid "Context" +msgstr "კონტექსტი" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "კონფიგურაციის პარამეტრების სია" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "კონფიგურაციის არანაგულისხმებადი პარამეტრების სია" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "სერვერს (ვერსია %s) მოვლენის ტრიგერების მხარდაჭერა არ გააჩნია." + +#: describe.c:4587 +msgid "Event" +msgstr "მოვლენა" + +#: describe.c:4589 +msgid "enabled" +msgstr "ჩართულია" + +#: describe.c:4590 +msgid "replica" +msgstr "რეპლიკა" + +#: describe.c:4591 +msgid "always" +msgstr "ყოველთვის" + +#: describe.c:4592 +msgid "disabled" +msgstr "გამორთულია" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "ჩართულია" + +#: describe.c:4595 +msgid "Tags" +msgstr "ჭდეები" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "მოვლენების ტრიგერების სია" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "სერვერს (ვერსია %s) გაფართოებული სტატისტიკის მხარდაჭერა არ გააჩნია." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "დამოკიდებულებები" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "გაფართოებული სტატისტიკის სია" + +#: describe.c:4745 +msgid "Source type" +msgstr "წყაროს ტიპი" + +#: describe.c:4746 +msgid "Target type" +msgstr "სამიზნის ტიპი" + +#: describe.c:4770 +msgid "in assignment" +msgstr "მინიჭებაში" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "აშკარა?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "კასტების სია" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "სერვისის მომწოდებელი" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "დეტერმნისტული?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "კოლაციების სია" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "სქემების სია" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "ტექსტური ძებნის დამმუშავებლების სია" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "ტექსტის ძებნის დამმუშავებელი სახელით \"%s\" არ არსებობს." + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "ტექსტის ძებნის დამმუშავებლები ვერ ვიპოვე." + +#: describe.c:5245 +msgid "Start parse" +msgstr "დამუშავების დაწყება" + +#: describe.c:5246 +msgid "Method" +msgstr "მეთოდი" + +#: describe.c:5250 +msgid "Get next token" +msgstr "შემდეგი კოდის მიღება" + +#: describe.c:5252 +msgid "End parse" +msgstr "დამუშავების დასასრული" + +#: describe.c:5254 +msgid "Get headline" +msgstr "ამონაწერის მიღება" + +#: describe.c:5256 +msgid "Get token types" +msgstr "კოდის ტიპების მიღება" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "ტექსტის ძებნის დამმუშავებელი \"%s.%s\"" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "ტექსტის ძებნის დამმუშავებელი \"%s\"" + +#: describe.c:5289 +msgid "Token name" +msgstr "კოდის სახელი" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "კოდის ტიპები დამმუშავებლისთვის \"%s.%s\"" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "კოდის ტიპები დამმუშავებლისთვის \"%s\"" + +#: describe.c:5350 +msgid "Template" +msgstr "ნიმუში" + +#: describe.c:5351 +msgid "Init options" +msgstr "ინიციალიზაციის პარამეტრები" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "ტექსტის ძებნის ლექსიკონების სია" + +#: describe.c:5411 +msgid "Init" +msgstr "ერთეული" + +#: describe.c:5412 +msgid "Lexize" +msgstr "ლექსით გამოყოფა" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "ტექსტის ძებნის შაბლონების სია" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "ტექსტის ძებნის კონფიგურაციების სია" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "ტექსტის ძებნის კონფიგურაცია სახელით \"%s\" არ არსებობს." + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "ტექსტის ძებნის არცერთი კონფიგურაცია ნაპოვნი არაა." + +#: describe.c:5619 +msgid "Token" +msgstr "ტოკენი" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "ლექსიკონები" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "ტექსტის ძებნის კონფიგურაცია \"%s.%s\"" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "ტექსტის ძებნის კონფიგურაცია \"%s\"" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"დამმუშავებელი: \"%s.%s\"" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"დამუშავებელი: \"%s\"" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "გარე მონაცემების გადამტანების სია" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "გარე-მონაცემების გადამტანი" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "ვერსია" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "გარე სერვერების სია" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "სერვერი" + +#: describe.c:5825 +msgid "User name" +msgstr "მომხმარებლის სახელი" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "მომხმარებლების მიმაგრებების სია" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "გარე ცხრილების სია" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "დაყენებული გაფართოებების სია" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "გაფართოება სახელით \"%s\" არ არსებობს." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "გაფართოებების პოვნა შეუძლებელია." + +#: describe.c:6075 +msgid "Object description" +msgstr "ობიექტის აღწერა" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "ობიექტები გაფართებაში \"%s\"" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "არასწორი სრული სახელი (ძალიან ბევრი წერტილიანი სახელი): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "ბაზებს შორის ბმულები განხორციელებული არაა: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "სერვერს (ვერსია %s) გამოცემების მხარდაჭერა არ გააჩნია." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "ყველა ცხრილი" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "ჩასმები" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "განახლებები" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "წაშლები" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "შეკვეცები" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Root-ის გავლით" + +#: describe.c:6221 +msgid "List of publications" +msgstr "გამოცემების სია" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "გამოცემა სახელით \"%s\" არ არსებობს." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "გამოცემების გარეშე." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "პუბლიკაცია %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "ცხრილები:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "ცხრილები სქემებიდან:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "სერვერს (ვერსია %s) გამოწერების მხარდაჭერა არ გააჩნია." + +#: describe.c:6497 +msgid "Publication" +msgstr "გამოცება" + +#: describe.c:6506 +msgid "Binary" +msgstr "ბინარული" + +#: describe.c:6507 +msgid "Streaming" +msgstr "გაადაცემა" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "ორ-ფაზიანი გადაცემა" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "გამორთვა შეცდომის შემთხვევაში" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "სინქრონული გადაგზავნა" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "შეერთ. ინფო" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "LSN-ის გამოტოვება" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "გამოწერების სია" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "შეყვანის ტიპი" + +#: describe.c:6618 +msgid "Storage type" +msgstr "საცავის ტიპი" + +#: describe.c:6619 +msgid "Operator class" +msgstr "ოპერატორის კლასი" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "ოპერატორის ოჯახი" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "ოპერატორის კლასების სია" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "განკუთვნილი ტიპები" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "ოპერატორის ოჯახების სია" + +#: describe.c:6807 +msgid "Operator" +msgstr "ოპერატორი" + +#: describe.c:6808 +msgid "Strategy" +msgstr "სტრატეგია" + +#: describe.c:6809 +msgid "ordering" +msgstr "დალაგება" + +#: describe.c:6810 +msgid "search" +msgstr "ძებნა" + +#: describe.c:6811 +msgid "Purpose" +msgstr "მიზანი" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "ოპერატორის ოჯახის დალაგება" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "ოპერატორის ოჯახების ოპერატორების სია" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "რეგისტრირებული მარცხენა ტიპი" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "რეგისტრირებული მარჯვენა ტიპი" + +#: describe.c:6904 +msgid "Number" +msgstr "რიცხვი" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "ოპერატორის ოჯახების ფუნქციების სია" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "დიდი ობიექტები" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql PostgreSQL-ის ინტერაქტიური ტერმინალია.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "გამოყენება:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [პარამეტრი]... [ბაზისსახელი [მომხმსახელი]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "ზოგადი პარამეტრები:\n" + +#: help.c:84 +msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" +msgstr " -c, --command=ბრძანება მხოლოდ ერთი (SQL ან შიდა) ბრძანების გაშვება და გასვლა\n" + +#: help.c:85 +#, c-format +msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr " -d, --dbname=ბაზისსახელი მისაერთებელი ბაზის სახელი (ნაგულისხმები: \"%s\")\n" + +#: help.c:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=ფალისსახელი ბრძანებების ფაილიდან შესრულება და გასვლა\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list ხელმისაწვდომი ბაზების სიის გამოტანა და გასვლა\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version ვერსიის ინფორმაციის გამოტანა და გასვლა\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc გაშვებისას წასაკითხი ფაილის (~/.psqlrc) წაკითხვის შეცდომა\n" + +#: help.c:94 +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-interactive)\n" +msgstr "" +" -1 (\"one\"), --single-transaction\n" +" როგორც ერთი ტრანზაქციის, ისე გაშვება (თუ არაინტერაქტიურია)\n" + +#: help.c:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=პარამეტრები] ამ დახმარების ჩვენება და გასვლა\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands \"\\\"-ით დაწყებული ბრძანებების ჩვენება და გასვლა\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables განსაკუთრებული ცვლადების სიის გამოტანა და გასვლა\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"შეტანისა და გამოტანის პარამეტრები:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all სკრიპტიდან წაკითხულის ეკრანზე ჩვენება\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors შეცდომის გამომტანი ბრძანებების ჩვენება\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries სერვერზე გაგზავნილი ბრძანებების გამოტანა\n" + +#: help.c:104 +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden შიდა ბრძანებების მიერ გენერირებული მოთხოვნების გამოტანა\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME სესიის ჟურნალის ფაილში ჩაწერა\n" + +#: help.c:106 +msgid " -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr " -n, --no-readline ბრძანების სტრიქონის დამატებითი კონტროლის (readline) გამორთვა\n" + +#: help.c:107 +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr " -o, --output=FILENAME მოთხოვნის შედეგების ფაილში ჩაწერა (ან |ფაიფში)\n" + +#: help.c:108 +msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgstr " -q, --quiet ჩუმად გაშვება (შეტყობინებების გარეშე, მხოლოდ მოთხოვნის შედეგები)\n" + +#: help.c:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step ერთნაბიჯიანი რეჟიმი (თითოეული მოთხოვნის დადასტურება)\n" + +#: help.c:110 +msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" +msgstr " -S, --single-line ერთხაზიანი რეჟიმი (ხაზის დასრულება SQL-ის ბრძანებასაც ასრულებს)\n" + +#: help.c:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"გამოტანის ფორმატის მორგება:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align ცხრილის დაულაგებლად გამოტანის რეჟიმი\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv CSV (მძიმით გამოყოფილი მნიშვნელობები) ცხრილის გამოტანის რეჟიმი\n" + +#: help.c:115 +#, c-format +msgid "" +" -F, --field-separator=STRING\n" +" field separator for unaligned output (default: \"%s\")\n" +msgstr "" +" -F, --field-separator=სტრიქონი\n" +" ველების გამყოფ სიმბოლო დაულაგებელი გამოტანისთვის (ნაგულისხმები: \"%s\")\n" + +#: help.c:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html HTML ცხრილის გამოტანის რეჟიმი\n" + +#: help.c:119 +msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" +msgstr " -P, --pset=ცვლ[=არგ] ცვლ გამოტანის პარამეტრის არგ-ზე დაყენება (იხ, \\pset ბრძანება)\n" + +#: help.c:120 +msgid "" +" -R, --record-separator=STRING\n" +" record separator for unaligned output (default: newline)\n" +msgstr "" +" -R, --record-separator=სტრიქონი\n" +" ჩანაწერების გამყოფი დაულაგებელი გამოტანისთვის (ნაგულისხმები: ახალი ხაზი)\n" + +#: help.c:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only მხოლოდ მწკრივების გამოტანა\n" + +#: help.c:123 +msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" +msgstr " -T, --table-attr=ტექსტი HTML ცხრილის ჭდის ატრიბუტების დაყენება (მაგ: სიგრძე, საზღვარი)\n" + +#: help.c:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded ცხრილის გაფართოებული გამოტანის ჩართვა\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"შეერთების პარამეტრები:\n" + +#: help.c:133 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" +msgstr " -h, --host=HOSTNAME მონაცემთა ბაზის სერვერის ჰოსტის ან სოკეტის საქაღალდე (ნაგულისხმები: \"%s\")\n" + +#: help.c:134 +msgid "local socket" +msgstr "ლოკალური სოკეტი" + +#: help.c:137 +#, 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=მომხმარებელი ბაზის მომხმარებლის სახელი (ნაგულისხმები: \"%s\")\n" + +#: help.c:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password არასოდეს მკითხო პაროლი\n" + +#: help.c:143 +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password პაროლის ყოველთვის კითხვა (ავტომატურად უნდა ხდებოდეს)\n" + +#: help.c:145 +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-ის შესახებ დამატებითი ინფორმაციის მისაღებად \n" +"აკრიფეთ \"\\?\" (შიდა ბრძანებებისთვის) ან \"\\help\" (SQL ბრძანებებისთვის), \n" +"ან გაეცანით \"psql\" განყოფილებას PostgreSQL-ის დოკუმენტაციაში.\n" +"\n" + +#: help.c:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "შეცდომების შესახებ მიწერეთ: <%s>\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s-ის საწყისი გვერდია: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "ზოგადი\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright აჩვენებს PostgreSQL-ის გამოყენებისა და დისტრიბუციის პირობებს\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr " \\crosstabview [სვეტები] შეასრულებს მოთხოვნას და შედეგს crosstab-ში აჩვენებს\n" + +#: help.c:194 +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose ბოლო შეცდომის დეტალების მაქსიმალურად ჩვენება\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(პარამეტრი)] [ფაილი] მოთხოვნის შესრულება (და შედეგის ფაილში ან |ფაიფში გაგზავნა;\n" +" \\g არგუმენტების გარეშე იგივეა, რაც წერტილმძიმე\n" + +#: help.c:197 +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc მოთხოვნის შედეგის აღწერა მისი შესრულების გარეშე\n" + +#: help.c:198 +msgid " \\gexec execute query, then execute each value in its result\n" +msgstr " \\gexec ჯერ მოთხოვნის, მერე კი მისი თითოეული შედეგის შესრულება\n" + +#: help.c:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [პრეფიქსი] მოთხოვნის შესრულება და შედეგის psql-ის ცვლადებში შენახვა\n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr " \\gx [(პარამეტრები)] [ფაილი] როგორც \\g, მაგრამ გამოტანის რეჟიმი უფრო ფართო იქნება\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q psql-დან გასვლა\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] მოთხოვნის ყოველ SEC წამში ერთხელ გაშვება\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "დახმარება\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] დახმარება \"\\\"-ით დაწყებული ბრძანებების შესახებ\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options დახმარება psql-ის ბრძანების სტრიქონის შესახებ\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables დახმარების ჩვენება განსაკუთრებული ცვლადების შესახებ\n" + +#: help.c:210 +msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" +msgstr " \\h [სახელი] SQL ბრძანებების დახმარება, * ყველა ბრძანებისთვის\n" + +#: help.c:213 +msgid "Query Buffer\n" +msgstr "მოთხოვნების ბაფერი\n" + +#: help.c:214 +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" +msgstr " \\e [ფაილი] [ხაზი] მოთხოვნების ბაფერის (ან ფაილის) გარე რედაქტორში გახსნა\n" + +#: help.c:215 +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [ფუნქცსახელი [ხაზი]] ფუნქციის აღწერის გარე რედაქტორში ჩასწორება\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [ხედისსახელი [ხაზი]] ხედის აღწერის გარე რედაქტორით ჩასწორება\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p მოთხოვნების ბაფერის შემცველობის ჩვენება\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r მოთხოვნების ბაფერის გასუფთავება\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [ფაილი] ისტორიის ჩვენება ან ფაილში შენახვა\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILE მოთხოვნების ბაფერის ფაილში ჩაწერა\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "შეტანა/გამოტანა\n" + +#: help.c:226 +msgid " \\copy ... perform SQL COPY with data stream to the client host\n" +msgstr " \\copy ... SQL COPY -ის შესრულება მონაცემების ნაკადით კლიენტის ჰოსტამდე\n" + +#: help.c:227 +msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n" +msgstr " \\echo [-n] [სტრიქონი] სტრიქონის სტანდარტულ გამოტანაზე გაშვება(ხაზის გადატანის გარეშე -n )\n" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i ბრძანებების ფაილიდან შესრულება\n" + +#: help.c:229 +msgid " \\ir FILE as \\i, but relative to location of current script\n" +msgstr " \\ir ფაილი იგივე, რაც \\i, მაგრამ სკრიპტის მიმდინარე ადგილიდან დამოკიდებულებით\n" + +#: help.c:230 +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [ფაილი] მოთხოვნის ყველა შედეგის ფაილში ან |ფაიფში გაგზავნა\n" + +#: help.c:231 +msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n" +msgstr " \\qecho [-n] [striqoni] სტრიქონის \\o გამოტანის ნაკადში ჩაწერა (-n ახალი ხაზების გარეშე)\n" + +#: help.c:232 +msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n" +msgstr " \\warn [-n] [სტრიქონი] სტრიქონის სტანდარტულ შეცდომაზე გადამოტანა (-n გადატანის გარეშე)\n" + +#: help.c:235 +msgid "Conditional\n" +msgstr "პირობითი\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR პირობის შემცველი ბლოკის დასაწყისი\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR ალტერნატიული პირობა მიმდინარე პირობით ბლოკში\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else პირობის მიმდინარე ბლოკის ალტერნატიული გზა\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif პირობის შემცველი ბლოკის დასასრული\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "საინფორმაციო\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (პარამეტრები: S = სისტემური ობიექტების ჩვენება, + = დამატებითი დეტალები)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] ცხრილების, ხედებისა და მიმდევრობების სია\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAME ცხრილის, ხედის, მიმდევრობის ან ინდექსის აღწერა\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [PATTERN] აგრეგატების სია\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [PATTERN] წვდომის მეთოდების სია\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] ოპერატორის კლასების სია\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] ოპერატორების ოჯახების სია\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] ოპერატორების ოჯახების ოპერატორების სია\n" + +#: help.c:251 +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] ოპერატორის ოჯახების მხარდაჭერის ფუნქციების სია\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [PATTERN] ცხრილის სივრცეების სია\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [PATTERN] გადაყვანების სია\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [PATTERN] კონფიგურაციის პარამეტრების სია\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [PATTERN] კასტების სია\n" + +#: help.c:256 +msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr " \\dd[S] [შაბლონი] ობიექტის აღწერის ჩვენება, რომელიც სხვაგან არსადაა ნაჩვენები\n" + +#: help.c:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [PATTERN] დომენების სია\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [შაბლონი] ნაგულისხმები პრივილეგიების სია\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [შაბლონი] გარე ცხრილების სია\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [შაბლონი] გარე სერვერების სია\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [შაბლონი] გარე ცხრილების სია\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [PATTERN] მომხმარებლების მომხმარებლის სია\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [შაბლონი] გარე მონაცემების გადამტანების სია\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" ფუნქციების [მხოლოდ agg/normal/procedure/trigger/window] სია\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [შაბლონი] ტექსტის ძებნის კონფიგურაციების სია\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [შაბლონი] ტექსტის ძებნის ლექსიკონების სია\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [PATTERN] ტექსტის ძებნის დამმუშავებლების სია\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [შაბლონი] ტექსტის ძებნის შაბლონების სია\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [შაბლონი] როლების სია\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [შაბლონი] ინდექსების სია\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] დიდი ობიექტების სია. იგივე, რაც \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [შაბლონი] პროცედურული ენების სია\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [შაბლონი] მატერიალიზებული ხედების სია\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [შაბლონი] სქემების სია\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" ოპერატორების სია\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [შაბლონი] კოლაციების სია\n" + +#: help.c:279 +msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr " \\dp [შაბლონი] ცხრილის, ხედის და მიმდევრობის წვდომის უფლებების სია\n" + +#: help.c:280 +msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n" +msgstr " \\dP[itn+] [შაბლონი] [მხოლოდ ინდექსი/ცხრილი] დაყოფილი ურთიერთობების სია [n=ჩადგმული]\n" + +#: help.c:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr " \\drds [ROLEPTRN [DBPTRN]] თითოეული ბაზის როლის პარამეტრების სია\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [შაბლონი] რეპლიკაციის გამოცემების სია\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [შაბლონი] რეპლიკაციის გამოწერების სია\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [შაბლონი] მიმდევრობების სია\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [შაბლონი] ცხრილების სია\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [შაბლონი] მონაცემის ტიპების სია\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [შაბლონი] როლების სია\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [შაბლონი] ხედების სია\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [შაბლონი] გაფართოებების სია\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [შაბლონი] გაფართოებული სტატისტიკის სია\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [შაბლონი] მოვლენის ტრიგერების სია\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [შაბლონი] მონაცემთა ბაზების სია\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNCNAME ფუნქციის აღწერის ჩვენება\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] ხედისსახელი ხედის აღწერის ჩვენება\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [შაბლონი] იგივე, რაც \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "დიდი ობიექტები\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export LOBOID FILE დიდი ობიექტის ფაილში ჩაწერა\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import ფაილი [კომენტარი]\n" +" დიდი ობიექტის ფაილიდან წაკითხვა\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] დიდი ობიექტების სია\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID დიდი ობიექტის წაშლა\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "ფორმატირება\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a სწორებულ და გაუსწორებელ რეჟიმებს შორის გადართვა\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C [სტრიქონი] ცხრილის სათაურის დაყენება. ან წაშლა, თუ მითითებული არაა\n" + +#: help.c:309 +msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgstr " \\f [სტრიქონი] მოთხოვნის შედეგის დაულაგებელი გამოტანის ველების გამყოფის დაყენება ან ჩვენება\n" + +#: help.c:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H HTML გამოტანის რეჟიმის გადართვა (მიმდინარე %s)\n" + +#: help.c:312 +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:319 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] მხოლოდ მწკრივების ჩვენება(ამჟამად %s)\n" + +#: help.c:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [STRING] HTML-ის
ჭდის ატრიბუტების დაყენება. ან გასუფთავება, თუ მითითებული არაფერია\n" + +#: help.c:322 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr " \\x [on|off|auto] გაფართოებული გამოტანის გადართვა (ამჟამად %s)\n" + +#: help.c:323 +msgid "auto" +msgstr "ავტომატური" + +#: help.c:326 +msgid "Connection\n" +msgstr "შეერთება\n" + +#: help.c:328 +#, c-format +msgid "" +" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" +" connect to new database (currently \"%s\")\n" +msgstr "" +" \\c[onnect] {[ბაზისსახელი|- მომხმარებელი|- ჰოსტი|- პორტ|-] | conninfo}\n" +" ახალ ბაზასთან მიერთება (მიმდინარე \"%s\")\n" + +#: help.c:332 +msgid "" +" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" +" connect to new database (currently no connection)\n" +msgstr "" +" \\c[onnect] {[ბაზისსახელი|- მომხმარებელი|- ჰოსტი|- პორტ|-] | conninfo}\n" +" ახალ ბაზასთან მიერთება (მიმდინარე შეერთება არ არსებობს)\n" + +#: help.c:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo მიმდინარე შეერთების შესახებ ინფორმაციის გამოტანა\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [კოდირება] კლიენტის კოდირების ჩვენება ან დაყენება\n" + +#: help.c:336 +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [მომხმარებელი] მომხმარებლის პაროლის უსაფრთხოდ შეცვლა\n" + +#: help.c:339 +msgid "Operating System\n" +msgstr "ოპერაციული სისტემა\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [საქ] მიმდინარე საქაღალდის შეცვლა\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVVAR გარემოს ცვლადის გამოთხოვა\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv სახელი [მნიშვნელობა] გარემოს ცვლადის დაყენება ან მოხსნა\n" + +#: help.c:343 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] ბრძანებების ტაიმერის გადართვა (ამჟამად %s)\n" + +#: help.c:345 +msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" +msgstr " \\! [ბრძანება] გარსის ბრძანების შესრულება ან ინტერაქტიური გარსის გაშვება\n" + +#: help.c:348 +msgid "Variables\n" +msgstr "ცვლადები\n" + +#: help.c:349 +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [ტექსტი] სახელი მომხმარებლისთვის შიდა ცვლადის დაყენების შეთავაზება\n" + +#: help.c:350 +msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" +msgstr " \\set [სახელი [მნიშვნელობა]] დააყენებს შიდა ცვლადს, ან, თუ პარამეტრები მითითებული არაა, მათ სიას გამოიტანს\n" + +#: help.c:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset სახელი შიდა ცვლადის მოხსნა (წაშლა)\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"განსაკუთრებულად მოსაპყრობი ცვლადების სია\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "psql-ის ცვლადები:\n" + +#: help.c:394 +msgid "" +" psql --set=NAME=VALUE\n" +" or \\set NAME VALUE inside psql\n" +"\n" +msgstr "" +" psql --set=სახელი=მნიშვნელობა\n" +" ან \\set სახელი მნიშვნელობა psql-ის შიგნით\n" +"\n" + +#: help.c:396 +msgid "" +" AUTOCOMMIT\n" +" if set, successful SQL commands are automatically committed\n" +msgstr "" +" AUTOCOMMIT\n" +" iთუ დაყენებულია, წარმატებული SQL ბრძანებები ავტომატურად იქნება გადაცემული\n" + +#: help.c:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" ბაზის სახელი, რომელთანაც ამჟამად მიერთებული ბრძანდებით\n" + +#: help.c:403 +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:406 +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" +" თუ მნიშვნელობაა 'noexe', შიდა ბრძანებები ნაჩვენები იქნება, მაგრამ შესრულებული არა\n" + +#: help.c:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" მიმდინარე კლიენტის სიმბოლოების კოდირება\n" + +#: help.c:411 +msgid "" +" ERROR\n" +" true if last query failed, else false\n" +msgstr "" +" ERROR\n" +" 1, თუ ბოლო მოთხოვნა ავარიული იყო. არადა 0\n" + +#: help.c:413 +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:415 +msgid "" +" HIDE_TABLEAM\n" +" if set, table access methods are not displayed\n" +msgstr "" +" HIDE_TABLEAM\n" +" თუ დაყენებულა, ცხრილის წვდომის მეთოდები ნაჩვენები არ იქნება\n" + +#: help.c:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" თუ ჩართულია, შეკუმშვის მეთოდები ნაჩვენები არ იქნება\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" ბრძანებების ისტორიის კონროლი[ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr "" +" HISTFILE\n" +" ბრძანებების ისტორიის შესანახი ფაილის სახელი\n" + +#: help.c:423 +msgid "" +" HISTSIZE\n" +" maximum number of commands to store in the command history\n" +msgstr "" +" HISTSIZE\n" +" ისტორიაში შენახული ბრძანებების მაქსიმალური რაოდენობა\n" + +#: help.c:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" ამჟამად მიერთებული მონაცემთა ბაზის სერვერის ჰოსტი\n" + +#: help.c:427 +msgid "" +" IGNOREEOF\n" +" number of EOFs needed to terminate an interactive session\n" +msgstr "" +" IGNOREEOF\n" +" ინტერაქტიური სესიის დასამთავრებლად საჭირო EOF-ების რაოდენობა\n" + +#: help.c:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" უკანასკნელად შეცვლილი OID-ის მნიშვნელობა\n" + +#: help.c:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" ბრძანებების პაკეტის შესრულების შეწყვეტა პირველივე შეცდომის შემდეგ\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" პორტი\n" +" სერვერის პორტი მიმდინარე შეერთებისთვის\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" psql-ის ბრძანების სტრიქონის აღწერა\n" + +#: help.c:442 +msgid "" +" PROMPT2\n" +" specifies the prompt used when a statement continues from a previous line\n" +msgstr "" +" PROMPT2\n" +" ბრძანების სტრიქონის მითითება, როცა ბრძანება წინა ხაზიდან გრძელდება\n" + +#: help.c:444 +msgid "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" + +#: help.c:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" ჩუმი ოპერაციები(იგივე, რაც პარამეტრი -q)\n" + +#: help.c:448 +msgid "" +" ROW_COUNT\n" +" number of rows returned or affected by last query, or 0\n" +msgstr "" +" ROW_COUNT\n" +" ბოლო მოთხოვნის მიერ დაბრუნებული ან შეცვლილი მწკრივები. ან 0\n" + +#: help.c:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" მხოლოდ ბოლოს მაგიერ კომბინირებული მოთხოვნის ყველა შედეგის ჩვენება (\\;)\n" + +#: help.c:455 +msgid "" +" SHOW_CONTEXT\n" +" controls display of message context fields [never, errors, always]\n" +msgstr "" +" SHOW_CONTEXT\n" +" შეტყობინების კონტექსტის ველების ჩვენების კონტროლი[never, errors, always]\n" + +#: help.c:457 +msgid "" +" SINGLELINE\n" +" if set, end of line terminates SQL commands (same as -S option)\n" +msgstr "" +" SINGLELINE\n" +" iთუ დაყენებულია, ხაზის დაბოლოება SQL-ის ბრძანებასაც დაასრულებს (იგივე, რაც -S პარამეტრი)\n" + +#: help.c:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" ერთნაბიჯიანი რეჟიმი. (იგივე, რაც -s პარამეტრი)\n" + +#: help.c:461 +msgid "" +" SQLSTATE\n" +" SQLSTATE of last query, or \"00000\" if no error\n" +msgstr "" +" SQLSTATE\n" +" უკანასკნელი მოთხოვნის SQLSTATE. \"00000\", თუ შეცდომა არ მომხდარა\n" + +#: help.c:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" ბაზასთან მიერთებული მომხმარებლის სახელი\n" + +#: help.c:465 +msgid "" +" VERBOSITY\n" +" controls verbosity of error reports [default, verbose, terse, sqlstate]\n" +msgstr "" +" VERBOSITY\n" +" შეცდომის ანგარშების დეტალურობის კონტროლი [default, verbose, terse, sqlstate]\n" + +#: help.c:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"ჩვენების პარამეტრები:\n" + +#: help.c:474 +msgid "" +" psql --pset=NAME[=VALUE]\n" +" or \\pset NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" psql --pset=სახ[=მნიშვნ]\n" +" ან \\pset სახ [მიშნვნ] psql-ში\n" +"\n" + +#: help.c:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" საზღვრის სტილი (რიცხვი)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" სამიზნის სიგანე გადატანილი ფორმატისთვის\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (or x)\n" +" გაფართოებული გამოტანა [on, off, auto]\n" + +#: help.c:482 +#, c-format +msgid "" +" fieldsep\n" +" field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep\n" +" ველების გამყოფი დაულაგების გამოტანისათვის (ნაგულისხმები \"%s\")\n" + +#: help.c:485 +msgid "" +" fieldsep_zero\n" +" set field separator for unaligned output to a zero byte\n" +msgstr "" +" fieldsep_zero\n" +" დაულაგებელი გამოტანის ველების გამყოფის ნულოვან ბაიტზე დაყენება\n" + +#: help.c:487 +msgid "" +" footer\n" +" enable or disable display of the table footer [on, off]\n" +msgstr "" +" footer\n" +" ცხრილის მინაწერების ჩვენების ჩაართ/გამორთ[on, off]\n" + +#: help.c:489 +msgid "" +" format\n" +" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr "" +" format\n" +" გამოტანის ფორმატის დაყენება [unaligned, aligned, wrapped, html, asciidoc, ...]\n" + +#: help.c:491 +msgid "" +" linestyle\n" +" set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr "" +" linestyle\n" +" საზღვრის ხაზის ხატვის სტილი [ascii, old-ascii, unicode]\n" + +#: help.c:493 +msgid "" +" null\n" +" set the string to be printed in place of a null value\n" +msgstr "" +" null\n" +" ნულოვანი ბაიტის მიერ ნაჩვენები სიმბოლო\n" + +#: help.c:495 +msgid "" +" numericlocale\n" +" enable display of a locale-specific character to separate groups of digits\n" +msgstr "" +" numericlocale\n" +" ციფრის ჯგუფების გასაყოფად ენის სპეციფიკური სიმბოლოს გამოყენება\n" + +#: help.c:497 +msgid "" +" pager\n" +" control when an external pager is used [yes, no, always]\n" +msgstr "" +" pager\n" +" გვერდების გარე გადამრთველის გამოყენება[yes, no, always]\n" + +#: help.c:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" დაულაგებელი გამოტანის ჩანაწერების(ხაზების) გამყოფი\n" + +#: help.c:501 +msgid "" +" recordsep_zero\n" +" set record separator for unaligned output to a zero byte\n" +msgstr "" +" recordsep_zero\n" +" დაულაგებელი გამოტანის ველების გამყოფის ნულოვან ბაიტზე დაყენება\n" + +#: help.c:503 +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 ჭდის ატრიბუტებს ან სვეტების პოპორციულ სიგანეს\n" +" მარცხნივ სწორებული მონაცემების ტიპებისთვის latex-longtable ფორმატში\n" + +#: help.c:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" ცხრილის სათაურის დაყენება შემდგომ დაბეჭდილი ცხრილებისთვის\n" + +#: help.c:508 +msgid "" +" tuples_only\n" +" if set, only actual table data is shown\n" +msgstr "" +" tuples_only\n" +" თუ დაყენებულია, ნაჩვენები იქნება მხოლოდ მიმდინარე მონაცემები\n" + +#: help.c:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"გარემოს ცვლადები:\n" + +#: help.c:519 +msgid "" +" NAME=VALUE [NAME=VALUE] psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" სახელი=მნიშვნელობა [სახელი=მნიშვნელობა ] psql ...\n" +" ან \\setenv სახელი[მნიშვნელობა ] psql-ის სიგნით\n" +"\n" + +#: help.c:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" გადასატანი ფორმატის სვეტების რაოდენობა\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" იგივე, რაც შეერთების პარამეტრი აპლიკაციის_სახელი\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" იგივე, რაც შეერთების dbname პარამეტრი\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" იგივე, რაც ჰოსტი შეერთების პარამეტრებში\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" პაროლების ფაილის სახელი\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" შეერთების პაროლი (რეკომენდებული არაა)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" იგივე, რაც პორტი შეერთების პარამეტრებში\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" იგივე, რაც მომხმარებლის სახელი შეერთების პარამეტრებში\n" + +#: help.c:540 +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:542 +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:544 +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" ბრძანებების ისტორიის ფაილის ალტერნატიული მდებარეობა\n" + +#: help.c:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" გვერდების გადამრთველი გარე პროგრამის სახელი\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" \\watch-ისთვის გამოყენებული გვერდების გადამრთველი გარე პროგრამა\n" + +#: help.c:552 +msgid "" +" PSQLRC\n" +" alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC\n" +" მომხმარებლის .psqlrc ფაილის ალტერნატიული მდებარეობა\n" + +#: help.c:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" \\! ბრძანების მიერ გამოყენებული გარსი\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" დროებითი ფაილების საქაღალდე\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "ხელმისაწვდომი დახმარება:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "ისტორიის ფაილის (\"%s\") შენახვის შეცდომა: %m" + +#: input.c:535 +#, 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: ტრანზაქციის უცნობი სტატუსი" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: -დან გამოსვლა" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "%s-დან გასასვლელად გამოიყენეთ \"\\q\".\n" + +#: mainloop.c:214 +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" +"გამოტვირთული ბაზის აღსადგენად CLI-ის ბრძანება pg_restore გამოიყენეთ .\n" + +#: mainloop.c:295 +msgid "Use \\? for help or press control-C to clear the input buffer." +msgstr "დახმარებისთვის გამოიყენეთ \\? ან დააწექით Control-C-ს შეყვანის ბაფერის გასასუფთავებლად." + +#: mainloop.c:297 +msgid "Use \\? for help." +msgstr "დახმარებისთვის გამოიყენეთ \\?." + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "იყენებთ psql-ს, PostgreSQL-ის ბრძანების სტრიქონის ინტერფეისს." + +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "გასასვლელად გამოიყენეთ \\q." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "გასასვლელა გამოიყენეთ Control-D." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "გასასვლელა გამოიყენეთ Control-C." + +#: mainloop.c:459 mainloop.c:618 +#, c-format +msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "მოთხოვნა იგნორირებულია; მიმდინარე \\if ბლოკიდან გამოსასვლელად გამოიყენეთ \\endif ან Ctrl-C" + +#: mainloop.c:636 +#, c-format +msgid "reached EOF without finding closing \\endif(s)" +msgstr "მიღწეულია EOF დამხურავი \\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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "სახელი" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "აგრეგატის სახელმოწერა" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "ახალი_სახელი" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "ახალი_მფლობელი" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "ახალი_სქემა" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +msgid "where aggregate_signature is:" +msgstr "სადაც aggregate_signature არის:" + +#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "არგრეჟიმი" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "არგსახელი" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "არგტიპი" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "მორგება" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "სადაც option შეიძლება იყოს:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "შეერთ_ნებართვ" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "შეერთ_ლიმიტი" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "შაბლონია" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "ცხრილების_ახალი_სივრცე" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "კონფიგურაციის_პარამეტრი" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "მნიშვნელობა" + +#: sql_help.c:200 +msgid "target_role" +msgstr "სამიზნე_როლი" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "სქემის_სახელი" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "შეთავაზება_GRANT_ან_REVOKE" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "სადაც abbreviated_grant_or_revoke ერთ-ერთია სიიდან:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "როლის_სახელი" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "გამსახულება" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "დომენის_შეზღუდვა" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "შეზღუდვის_სახელი" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "ახალი_შეზღუდვის_სახელი" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "ახალი_მნიშვნელობა" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "წევრი_ობიექტი" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "სადაც member_object არის:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "ობიექტის_სახელი" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "აგრეგატის სახელი" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "წყაროს_ტიპი" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "სამიზნის_ტიპი" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "ფუნქციის_სახელი" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "ოპერატორის_სახელი" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "მარჯვენა ტიპი" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "სწორი_ტიპი" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "ინდექსის_მეთოდი" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "პროცედურის სახელი" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "ქვეპროგრამის სახელი" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "ტიპის სახელი" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "ენის_სახელი" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "და აგრეგატული_ხელმოწერა არის:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "დამმუშავებელი_ფუნქცია" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "შემმოწმებელი_ფუნქცია" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "ქმედება" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "სვეტის_სახელი" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "ახალი_სვეტის_სახელი" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "და როცა ქმედება არის ერთერთი სიიდან:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "მონაცემების_ტიპი" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "კოლაცია" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "სვეტის_შეზღუდვა" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "მთელი რიცხვი" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "ატრიბუტის პარამეტრი" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "ცხრილის_შეზღუდვები" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "ტრიგერის_სახელი" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "მშობელი_ცხრილი" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "გაფართოების სახელი" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "გაშვების_ფასი" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "მწკრივები_შედეგში" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "დამხმარე_ფუნქცია" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "როლის_შემოწმება" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "მომხმარებლის_სახელი" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "სადაც როლის_სპეციფიკაცია შეიძლება იყოს ერთ-ერთი სიიდან:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "ჯგუფის_სახელი" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "ცხრილების_სივრცის_სახელი" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "ინდექსის_სახელი" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "საცავის_პარამეტრი" + +#: sql_help.c:607 +msgid "column_number" +msgstr "სვეტის_ნომერი" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "დიდი_ობიექტის_oid" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "შეკუმშვის_მეთოდი" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "წვდომის_ახალი_მეთოდი" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "შეზღუდვის_პროცედურა" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "შეერთების_პროცედურა" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "სტრატეგიის_ნომერი" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "ოპ_ტიპი" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "დალაგების_ოჯახის_სახელი" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "დამხმარე_რიცხვი" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "არგუმენტის_ტიპი" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "ცხრილის_სახელი" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "გამოყენების_გამოხატულება" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "გამოსახულების_შემოწმება" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "გამოცემის_ობიექტი" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "გამოცემის_პარამეტრი" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "სადაც პუბლიკაციის_ობიექტი ერთერთია სიიდან:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "პაროლი" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "დროის შტამპი" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "ბაზის_სახელი" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "გაზრდა" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "მინ_მნიშვნელობა" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "მაქს_მნიშვნელობა" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "დაწყება" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "გადატვრთვა" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "კეში" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "ახალი_სამიზნე" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "შეერთ_ინფო" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "გამოცემის_სახელი" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "გამოცემის_მორგება" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "განახლების_პარამეტრები" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "გამოწერის_პარამეტრი" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "პარამეტრის_გამოტოვება" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "დანაყოფის_სახელი" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "დანაყოფის_საზღვრის_მითითება" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "მიმდევრობის_პარამეტრები" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "მიმდევრობის_პარამეტრი" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "ცხრილის_შეზღუდვა_ინდექსით" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "გადაწერის_წესის_სახელი" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "და დანაყოფის_საზღვარის_სპეციფიკაცია არის:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "დანაყოფის_საზღვრის_გამოსახულება" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "რიცხვითი_მუდმივა" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "და სვეტის_შეზღუდვა არის:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "ნაგულისხმები_გამოსახულება" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "გენერირებული_გამოსახულება" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "ინდექსის_პარამეტრები" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "მიბმების_ცხრილი" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "მიბმული_სვეტი" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "მიბმის_ქმედებები" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "და table_constraint არის:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "ელემენტის_ამოღება" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "ოპერატორი" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "პრედიკატი" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "და table_constraint_using_index არის:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "ინდექსის_პარამეტრები UNIQUE, PRIMARY KEY და EXCLUDE შეზღუდვებში:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "ელემენტის_ამოღება EXCLUDE შეზღუდვაში წარმოადგენს:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "ოპერატ_კლასი" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "მიბმის ქმედება FOREIGN KEY/REFERENCES შეზღუდვაში წარმოადგენს:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "ცხრილების_სივრცის_პარამეტრი" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "კოდის_ტიპი" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "ლექსიკონის_სახელი" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "ძველი_ლექსიკონი" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "ახალი_ლექსიკონი" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "ატრიბუტის_სახელი" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "ახალი_ატრიბუტის_სახელი" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "ათვლის_ახალი_მნიშვნელობა" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "მეზობლად_ათვლის_მნიშვნელობა" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "აღრიცხვის_არსებული_მნიშვნელობა" + +#: sql_help.c:1589 +msgid "property" +msgstr "თვისება" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "სერვერის_სახელი" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "ხედის_პარამეტრის_სახელი" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "ხედის_პარამეტრის_მნიშვნელობა" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "ცხრილი_და სვეტები" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "სადაც option შეიძლება იყოს ერთ-ერთი სიიდან:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "ლოგიკური" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "და table_and_columns არის:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "ტრანზაქციის_რეჟიმი" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "სადაც transaction_mode შეიძლება იყოს ერთ-ერთი სიიდან:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "არგიმენტი" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "ურთიერთობის_სახელი" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "დომენის_სახელი" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "წესის_სახელი" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "წესის_სახელი" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "სტრიქონი_მუდმივა" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "ტრანზაქციის_id" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "ფაილის სახელი" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "ბრძანება" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "მდგომარეობა" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "მოთხოვნა" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "ფორმატის_სახელი" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "გამყოფი_სიმბოლო" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "ნულოვანი_სტრიქონი" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "ციტატის_სიმბოლო" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "სპეციალური_სიმბოლო" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "კოდირების-სახელი" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "წვდომის_მეთოდის_ტიპი" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "არგ_მონაც_ტიპი" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "მდგომარეობის_ფუნქცია" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "მდგომარეობის_მონაცემების_ტიპი" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "მდგომარეობის_მონაცემების_ზომა" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "დასრულების ფუნქცია" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "კომბინ_ფუნქც" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "დესერიალიზაციის_ფუნქცია" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "დესერიალიზაციის_ფუნქც" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "საწყისი_მდგომარეობა" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "გადაადგ_მდგომ_ფუნქცია" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "გადაადგ_მინ_მნიშვნ_ფუნქცია" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "გადაადგ_მონაც_ტიპი" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "გადაადგ_მონაც_ზომ" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "გადადგ_დასრულ_ფუნქცია" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "გადაადგ­_დასაწყ_ფუნქცია" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "დალაგების_ოპერატორი" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "ან ძველი სინტაქსი" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "საბაზისო_ტიპი" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "ენა" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "მომწოდებელი" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "ვერსია" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "არსებული_კოლაცია" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "წყაროს_კოდირება" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "სამიზნე_კოდირება" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "შაბლონი" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "კოდირება" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "სტრატეგია" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "icu_ენა" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "ენის_მომწოდებელი" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "კოლაციის ვერსია" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "შეზღუდვა" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "სადაც constraint არის:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "მოვლენა" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "ფილტრის_ცვლადი" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "ფილტრის_მნიშვნელობა" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "სადაც column_constraint არის:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "დაბრუნების_ტიპი" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "სვეტის_ტიპი" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "აღწერა" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "ობიექტის_ფაილი" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "სიმბოლოს_მიბმა" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "sql_ის_სხეული" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "მეთოდი" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "ოპერატ_კლასის_პარამეტრი" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "გამოძახების_დამმუშავებელი" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "ჩადგმული_კოდის_დამმუშავებელი" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "მნიშვნფუნქცია" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "კომუტ_ოპერ" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "უარყ_ოპერატ" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "ოჯახის_სახელი" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "საცავის_ტიპი" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "სადაც event შეიძლება იყოს ერთ-ერთი:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "სქემის_ელემენტი" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "სერვერის_ტიპი" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "სერვერის_ვერსია" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "fdw_name" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "სტატისტიკის_სახელი" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "სტატისტიკის_ტიპი" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "გამოწერის_სახელი" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "წყაროს_ცხრილი" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "მსგავსების_პარამეტრი" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "და like_option არის:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "საქაღალდე" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "დამმუშავებლის_სახელი" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "წყაროს_კონფიგურაცია" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "გაშვების_ფუნქცია" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "კოდის_მიღების_ფუნქცია" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "დასრულების ფუნქცია" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "ლექს_ტიპების_ფუნქცია" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "headline_function" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "ინიციალიზაციის_ფუნქცია" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "ლექსით_გამოყოფის_ფუნქცია" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "sql_ფუნქციის_სახელიდან" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "ფუნქციის_სახელი_sql_ში" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "მიბმული_ცხრილის_სახელი" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "გარდამავალი_ურთიერთობის_სახელი" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "არგუმენტები" + +#: sql_help.c:3170 +msgid "label" +msgstr "ჭდე" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "ქვეტიპი" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "ქვეტიპის_ოპერატორის_კლასი" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "კანონიკური_ფუნქცია" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "ქვეტიპის_სხვაობის_ფუნქცია" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "მრავალდიაპაზონიანი_ტიპის_სახელი" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "შეყვანის_ფუნქცია" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "გამოტანის_ფუნქცია" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "მიღების_ფუნქცია" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "საწყისი_მნიშვნელობის_ფუნქცია" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "ტიპის_მოდიფიკატორის_შემყვანის_ფუნქცია" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "ტიპის_მოტიფიკატორის_გამოტანის_ფუნქცია" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "ფუნქციის_ანალიზი" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "ინდექსით_მიმართვის_ფუნქცია" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "შიდასიგრძე" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "სწორება" + +#: sql_help.c:3189 +msgid "storage" +msgstr "საცავი" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "მსგავსების_ტიპი" + +#: sql_help.c:3191 +msgid "category" +msgstr "კატეგორია" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "რჩეული" + +#: sql_help.c:3193 +msgid "default" +msgstr "ნაგულისხმები" + +#: sql_help.c:3194 +msgid "element" +msgstr "ელემენტი" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "გამყოფი" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "დალაგებადი" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "მოთხოვნით" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "მეტსახელი" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "ჩანაწერიდან" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "კურსორის_სახელი" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "გამოტანის_გამოსახულება" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "გამოტანს_სახელი" + +#: sql_help.c:3316 +msgid "code" +msgstr "კოდი" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "Პარამეტრი" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "ოპერატორი" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "მიმართულება" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "სადაც მიმართულება შეიძლება იყოს ერთ-ერთი:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "რაოდენობა" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "მიმდევრობის _სახელი" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "არგ_სახელი" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "არგ_ტიპი" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "დაშორებული_სქემა" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "ლოკალური_სქემა" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "კონფლიქტის_ობიექტი" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "ქმედება_კონფლიქტის_დროს" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "სადაც conflict_target შეიძლება იყოს სიიდან:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "ინდექსის_სვეტის_სახელი" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "გამოსახულების_ინდექსი" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "ინდექსის_პრედიკატი" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "და conflict_action შეიძლება იყოს სიიდან:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "ქვე-SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "არხი" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "ბლოკის_რეჟიმი" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "სადაც lockmode ერთერთია სიიდან:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "სამიზნე ცხრილის სახელი" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "სამიზნე_მეტსახელი" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "მონაცემების_წყარო" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "შეერთების პირობა" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "პირობა_როდის" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "სადაც data_source არის:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "წყაროს_ცხრილის_სახელი" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "წყაროს_მოთხოვნა" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "წყაროს_მეტსახელი" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "და when_clause არის:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "განახლების_შერწყმა" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "წაშლის_შერწყმა" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "ჩასმის_შერწყმა" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "და merge_insert არის:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "და merge_update არის:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "და merge_delete არის:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "შემცველობა" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "ძველი_როლი" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "ახალი_როლი" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "შენახვის_წერტილის_სახელი" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "დაჯგუფების_ელემენტი" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "ფანჯრის_სახელი" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "ფანჯრის_აღწერა" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "არჩევა" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "სადაც from_item შეიძლება იყოს სიიდან ერთი:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "სვეტის_მეტსახელი" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "სემპლინგის_მეთოდი" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "საწყისი მნიშვნელობა" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "მოთხოვნის_სახელით" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "სვეტის_აღწერა" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "შეერთების_ტიპი" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "სვეტების შეერთება" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "მეტსახელით_შეერთბა" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "და grouping_element შეძლება იყოს სიიდან ერთი:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "და with_query არის:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "მნიშვნელობები" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "ჩასმა" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "განახლება" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "წაშლა" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "ბოლო_ძებნის_სვეტის_სახელი" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "ციკლის_ნიშნიანი_სვეტის_სახელი" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "ციკლის ნიშნის მნიშვნელობა" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "ციკლის_ნაგულისხმები_ნიშანი" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "ციკლის_ბილიკის_სვეტის_სახელი" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "ახალი_ცხრილის" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "სწრაფი_ასლის_id" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "დალაგების_გამოსახულება" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "მიმდინარე ტრანზაქციის გაუქმება" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "აგრეგატული ფუნქციის აღწერის შექმნა" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "კოლაციის აღწერის შეცვლა" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "გადაყვანის აღწერის შეცვლა" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "მონაცემთა ბაზის შეცვლა" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "წვდომის ნაგულისხმები უფლებების აღწერა" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "დომენის აღწერის შეცვლა" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "დომენის აღწერის შეცვლა" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "გაფართოების აღწერის შეცვლა" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "გარე-მონაცემების გადამტანის აღწერის შეცვლა" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "გარე ცხრილის აღწერის შეცვლა" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "ფუნქციის აღწერის შეცვლა" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "როლის სახელის ან წევრობის შეცვლა" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "ინდექსის აღწერის შეცვლა" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "პროცედურული ენის აღწერის შეცვლა" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "დიდი ობიექტის აღწერის შეცვლა" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "მატერიალიზებული ხედის აღწერის შეცვლა" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "ოპერატორის აღწერის შეცვლა" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "ოპერატორის კლასის აღწერის შეცვლა" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "ოპერატორის ოჯახის აღწერის შეცვლა" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "მწკრივის-დონის-უსაფრთხოების წესების აღწერის შეცვლა" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "პროცედურის აღწერის შეცვლა" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "გამოცემის აღწერის შეცვლა" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "მონაცემთა ბაზის როლის შეცვლა" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "ქვეპროგრამის აღწერის შეცვლა" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "წესის აღწერის შეცვლა" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "სქემის აღწერის შეცვლა" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "მიმდევრობის გენერატორის აღწერის შეცვლა" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "გარე სერვერის აღწერის შეცვლა" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "სტატისტიკის გაფართოებული ობიექტის აღწერის შეცვლა" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "გამოწერის აღწერის შეცვლა" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "სერვერის კონფიგურაციის პარამეტრის შეცვლა" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "ცხრილის აღწერის შეცვლა" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "ცხრილების სივრცის აღწერის შეცვლა" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "ტექსტის ძებნის კონფიგურაციის აღწერის შეცვლა" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "ტექსტის ძებნის ლექსიკონის აღწერის შეცვლა" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "ტექსტის ძებნის დამმუშავებლის აღწერს შეცვლა" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "ტექსტის ძებნის შაბლონის აღწერის შეცვლა" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "ტრიგერის აღწერის შეცვლა" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "ტიპის აღწერის შეცვლა" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "მომხარებლის მიბმის აღწერის შეცვლა" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "ხედის აღწერის შეცვლა" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "მონაცემების სტატისტიკის მოგროვება" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "ტრანზაქციის ბლოკის დაწყება" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "პროცედურის ჩაწოდება" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "წინასწარ-ჩაწერად ჟურნალში საკონტროლო წერტილის დასმა" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "კურსორის დახურვა" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "ცხრილის გადაჯგუფება ინდექსის მიხედვით" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "ობიექტის კომენტარის აღწერა ან შეცვლა" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "მიმდინარე ტრანზაქციის გადაცემა" + +#: sql_help.c:5434 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "წინასწარ ორ ფაზაში გადასაცემად მომზადებული ტრანზაქციის გადაცემა" + +#: sql_help.c:5440 +msgid "copy data between a file and a table" +msgstr "მონაცემების კოპირება ფაილსა და ცხრილს შორის" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "წვდომის ახალი მეთოდის აღწერა" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "ახალი აგრეგატული ფუნქციის აღწერა" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "ახალი კასტის აღწერა" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "ახალი კოლაციის აღწერა" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "კოდირების ახალი გადაყვანის აღწერა" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "ახალი მონაცემთა ბაზის შექმნა" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "ახალი დომენის შექმნა" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "მოვლენის ახალი ტრიგერის აღწერა" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "გაფართოების დაყენება" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "გარე მონაცემების ახალი გადამტანის აღწერა" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "მონაცემების გარე ცხრილის აღწერა" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "ახალი ფუნქციის აღწერა" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "მონაცემთა ბაზის ახალი როლის აღწერა" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "ახალი ინდექსის აღწერა" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "ახალი პროცედურული ენის აღწერა" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "ახალი მატერიალიზებული ხედის აღწერა" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "ახალი ოპერატორის აღწერა" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "ოპერატორის ახალი კლასის აღწერა" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "ოპერატორის ახალი ოჯახის აღწერა" + +#: sql_help.c:5560 +msgid "define a new row-level security policy for a table" +msgstr "ცხრილისთვის ახალი მწკრივის-დონის-უსაფრთხოების წესის აღწერა" + +#: sql_help.c:5566 +msgid "define a new procedure" +msgstr "ახალი პროცედურის აღწერა" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "ახალი გამოცემის აღწერა" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "ახალი გადაწერის წესის აღწერა" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "ახალი სქემის აღწერა" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "მიმდევრობის ახალი გენერატორის აღწერა" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "ახალი გარე სერვერის აღწერა" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "გაფართოებული სტატისტიკის აღწერა" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "ახალი გამოწერის აღწერა" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "ახალი ცხრილის აღწერა" + +#: sql_help.c:5626 sql_help.c:6148 +msgid "define a new table from the results of a query" +msgstr "მოთხოვნის შედეგებიდან ახალი ცხრილის აღწერა" + +#: sql_help.c:5632 +msgid "define a new tablespace" +msgstr "ცხრილების ახალი სივრცის აღწერა" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "ტექსტის ძებნის ახალი კონფიგურაციის აღწერა" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "ტექსტის ძებნის ახალ ლექსიკონის აღწერა" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "ტექსტის ძებნის ახალი დამმუშავებლის აღწერა" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "ტექსტის ძებნის ახალი შაბლონის აღწერა" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "ახალი გარდაქმნის აღწერა" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "ახალი ტრიგერის აღწერა" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "მონაცემების ახალი ტიპის აღწერა" + +#: sql_help.c:5686 +msgid "define a new mapping of a user to a foreign server" +msgstr "მომხმარებლის გარე სერვერთან ახალი ბმის აღწერა" + +#: sql_help.c:5692 +msgid "define a new view" +msgstr "ახალი ხედის აღწერა" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "მომზადებული ოპერატორის გათავისუფლება" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "კურსორის აღწერა" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "ცხრილში მწკრივების წაშლა" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "სესიის მდგომარეობის მოშორება" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "კოდის ანონიმური ბლოკის შესრულება" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "წვდომის მეთოდის წაშლა" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "აგრეგატული ფუნქციის წაშლა" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "კასტის წაშლა" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "კოლაციის წაშლა" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "გადაყვანის წაშლა" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "მონაცემთა ბაზის წაშლა" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "დომენის წაშლა" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "მოვლენის ტრიგერის წაშლა" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "გაფართოების წაშლა" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "გარე-მონაცემების გადამტანის წაშლა" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "გარე ცხრილის წაშლა" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "ფუნქციის წაშლა" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "მონაცემთა ბაზის როლის წაშლა" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "ინდექსის წაშლა" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "პროცედურული ენის წაშლა" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "მატერიალიზებული ხედის წაშლა" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "ოპერატორის წაშლა" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "ოპერატორის კლასის წაშლა" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "ოპერატორის ოჯახის წაშლა" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "მონაცემთა ბაზის როლის მფლობელობაში მყოფი ბაზის ობიექტების წაშლა" + +#: sql_help.c:5848 +msgid "remove a row-level security policy from a table" +msgstr "ცხრილიდან მწკრივის-დონის უსაფრთხოების წესის წაშლა" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "პროცედურის წაშლა" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "გამოცემის წაშლა" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "წესრიგის წაშლა" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "გადაწერის წესის წაშლა" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "სქემის წაშლა" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "მიმდევრობის წაშლა" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "გარე სერვერის დესკრიპტორის წაშლა" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "გაფართოებული სტატისტიკის წაშლა" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "გამოწერის წაშლა" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "ცხრილის წაშლა" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "ცხრილების სივრცის წაშლა" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "ტექსტის ძებნის კონფიგურაციის წაშლა" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "ტექსტის ძებნის ლექსიკონის წაშლა" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "ტექსტის ძებნის დამმუშავებლის წაშლა" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "ტექსტის ძებნის შაბლონის წაშლა" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "გარდაქმნის წაშლა" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "ტრიგერის წაშლა" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "მონაცემების ტიპის წაშლა" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "მომხმარებლის გარე სერვერისთვის მიბმის წაშლა" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "ხედის წაშლა" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "მზა ოპერატორის შესრულება" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "ოპერატორის შესრულების გეგმის ჩვენება" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "კურსორის გამოყენებით მოთხოვნიდან მწკრივების მიღება" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "წვდომის უფლებების აღწერა" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "ცხრილის აღწერების უცხო სერვერიდან შემოტანა" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "ცხრილში ახალი მწკრივების შექმნა" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "შეტყობინების მოლოდინი" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "გაზიარებული ბიბლიოთეკის ფაილის ჩატვირთვა" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "ცხრილის დაბლოკვა" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "ცხრილის მწკრივების ჩასმა, განახლება ან წაშლა პირობის მიხედვით" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "კურსორის მოთავსება" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "შეტყობინების გენერაცია" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "ოპერატორის გასაშვებად მომზადება" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "ტრანზაქციის მომზადება ორ ფაზაში გადასაცემად" + +#: sql_help.c:6076 +msgid "change the ownership of database objects owned by a database role" +msgstr "ბაზის როლის მფლობელობაში მყოფი ბაზის ობიექტების მფლობელის შეცვლა" + +#: sql_help.c:6082 +msgid "replace the contents of a materialized view" +msgstr "მატერიალიზებული ხედის შემცველობის ჩანაცვლება" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "ინდექსების თავიდან აგება" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "ადრე აღწერილი შენახვის წერტილის განადგურება" + +#: sql_help.c:6100 +msgid "restore the value of a run-time parameter to the default value" +msgstr "გაშვების პარამეტრის მნიშვნელობის საწყის მნიშვნელობაზე აღდგენა" + +#: sql_help.c:6106 +msgid "remove access privileges" +msgstr "წვდომის უფლებების წაშლა" + +#: sql_help.c:6118 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "წინასწარ ორ ფაზაში გადასაცემად მომზადებული ტრანზაქციის გაუქმება" + +#: sql_help.c:6124 +msgid "roll back to a savepoint" +msgstr "შენახვის წერტილზე დაბრუნება" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "ახალი შესანახი წერტილის აღწერა მიმდინარე ტრანზაქციაში" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "ობიექტზე გადატარებული უსაფრთხოების ჭდის აღწერა ან შეცვლა" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "მწკრივის მიღება ცხრილიდან ან ხედიდან" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "გაშვების პარამეტრის შეცვლა" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "მიმდინარე ტრანზაქციის შეზღუდვის შემოწმების დროის დაყენება" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "მიმდინარე სესიის მიმდინარე მომხმარებლის იდენტიფიკატორის დაყენება" + +#: sql_help.c:6172 +msgid "set the session user identifier and the current user identifier of the current session" +msgstr "სესიის მომხმარებლის იდენტიფიკატორისა და მიმდინარე სესიის მიმდინარე მომხმარებლის იდენტიფიკატორის დაყენება" + +#: sql_help.c:6178 +msgid "set the characteristics of the current transaction" +msgstr "მიმდინარე ტრანზაქციის თვისებების დაყენება" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "გაშვების პარამეტრის მნიშვნელობის ჩვენება" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "ცხრილის ან ცხრილების სეტის დაცარიელება" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "გაფრთხილებების მოსმენის შეწყვეტა" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "ცხრილის მწკრივების განახლება" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "ნაგვის-მოგროვება და ბაზის არასავალდებულო ანალიზი" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "მწკრივების სეტის გამოთვლა" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 მხოლოდ არაინტერაქტიურ რეჟიმში შეიძლება იყოს გამოყენებული" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "ჟურნალის ფაილის გახსნის შეცდომა \"%s\": %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"დახმარებისთვის აკრიფეთ \"help\".\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "გამოტანის პარამეტრის დაყენების შეცდომა: \"%s\"" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "მეტი ინფორმაციისთვის სცადეთ '%s --help'." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "ბრძანების სტრიქონის დამატებითი არგუმენტი \"%s\" იგნორირებულია" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "საკუთარი პროგრამის გამშვები ფაილის პოვნა შეუძლებელია" + +#: tab-complete.c:5955 +#, 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:419 +#, c-format +msgid "" +"unrecognized value \"%s\" for \"%s\"\n" +"Available values are: %s." +msgstr "" +"\"%s\" არასწორი მნიშვნელობაა \"%s\"-სთვის\n" +"შესაძლო მნიშვნელობებია: %s." + +#, c-format +#~ msgid "\\watch cannot be used with COPY" +#~ msgstr "\\watch -ს COPY-სთან ერთად ვერ გამოყენებთ" + +#~ msgid "text" +#~ msgstr "ტექსტი" + +#~ msgid "timezone" +#~ msgstr "დროის_სარტყელი" + +#~ msgid "where direction can be empty or one of:" +#~ msgstr "სადაც direction შეიძლება იყოს ცარიელი, ან ერთ-ერთი სიიდან::" diff --git a/src/bin/psql/po/ko.po b/src/bin/psql/po/ko.po new file mode 100644 index 0000000..3521ba6 --- /dev/null +++ b/src/bin/psql/po/ko.po @@ -0,0 +1,6597 @@ +# Korean message translation file for psql +# Ioseph Kim. , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL) 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-04-12 00:46+0000\n" +"PO-Revision-Date: 2023-04-08 00:31+0900\n" +"Last-Translator: Ioseph Kim \n" +"Language-Team: Korean \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:276 +#, c-format +msgid "error: " +msgstr "오류: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "경고: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "상세정보: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "힌트: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "현재 디렉터리가 무엇인지 모르겠음: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "잘못된 바이너리 파일: \"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "\"%s\" 바이너리 파일을 읽을 수 없음" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "실행할 \"%s\" 파일 찾을 수 없음" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "\"%s\" 이름의 디렉터리로 이동할 수 없습니다: %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "\"%s\" 심볼릭 링크 파일을 읽을 수 없음: %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() 실패: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "취소 요청 보냄\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "취소 요청 보내기 실패: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu개 행)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "인트럽트발생\n" + +#: ../../fe_utils/print.c:3173 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "테이블 내용에 헤더를 추가할 수 없음: 열 수가 %d개를 초과했습니다.\n" + +#: ../../fe_utils/print.c:3213 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "테이블 내용에 셀을 추가할 수 없음: 총 셀 수가 %d개를 초과했습니다.\n" + +#: ../../fe_utils/print.c:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "잘못된 출력 형식 (내부 오류): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "\"%s\" 변수의 재귀적 확장을 건너뛰는 중" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "UID %d 해당하는 로컬 사용자를 찾을 수 없음: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "ID %d 로컬 사용자 없음" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "잘못된 명령: \\%s" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "도움말을 보려면 \\?를 입력하십시오." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: \"%s\" 추가 인자가 무시되었음" + +#: command.c:304 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "" +"\\%s 명령은 무시함; 현재 \\if 블록을 중지하려면, \\endif 명령이나 Ctrl-C 키" +"를 사용하세요." + +#: command.c:573 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "UID %ld 사용자의 홈 디렉터리를 찾을 수 없음: %s" + +#: command.c:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: \"%s\" 디렉터리로 이동할 수 없음: %m" + +#: command.c:617 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "현재 데이터베이스에 연결되어있지 않습니다.\n" + +#: command.c:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "쿼리 버퍼가 없음" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "잘못된 줄 번호: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "변경 내용 없음" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: 잘못된 인코딩 이름 또는 문자셋 변환 프로시저 없음" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "이전 오류가 없습니다." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: 오른쪽 괄호 빠졌음" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: 필요한 인자가 빠졌음" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: \\else 구문 뒤에 올 수 없음" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: \\if 명령과 짝이 안맞음" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: \\else 명령 뒤에 올 수 없음" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: \\if 명령과 짝이 안맞음" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: \\if 명령과 짝이 안맞음" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "쿼리 버퍼가 비었음." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "\"%s\" 사용자의 새 암호: " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "다시 입력해 주세요:" + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "암호가 서로 틀립니다." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: 변수 값을 읽을 수 없음" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "쿼리 버퍼 초기화 (비웠음)." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "명령내역(history)을 \"%s\" 파일에 기록했습니다.\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: OS 환경 변수 이름에는 \"=\" 문자가 없어야 함" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "함수 이름이 필요함" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "뷰 이름이 필요함" + +#: command.c:2593 +msgid "Timing is on." +msgstr "작업수행시간 보임" + +#: command.c:2595 +msgid "Timing is off." +msgstr "작업수행시간 숨김" + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "암호: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "%s 사용자의 암호: " + +#: command.c:3168 +#, c-format +msgid "" +"Do not give user, host, or port separately when using a connection string" +msgstr "" +"연결 문자열을 사용할 때는 user, host, port 를 따로 따로 지정하지 마세요." + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "재접속할 데이터베이스 연결 정보가 없음" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "이전 연결이 유지되었음" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\연결: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "접속정보: 데이터베이스=\"%s\", 사용자=\"%s\".\n" + +#: command.c:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s(%s, %s 서버)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "SSL 연결정보 (프로토콜: %s, 암호화기법: %s, 압축: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "알수없음" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "off" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "on" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "암호화된 GSSAPI 연결\n" + +#: command.c:3717 +#, 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:3822 +#, 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:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "\"%s\" 문서 편집기를 실행시킬 수 없음" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "/bin/sh 명령을 실행할 수 없음" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "임시 디렉터리 경로를 알 수 없음: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "\"%s\" 임시 파일을 열 수 없음: %m" + +#: command.c:4266 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "\\pset: \"%s\" 생략형이 \"%s\" 또는 \"%s\" 값 모두 선택가능해서 모호함" + +#: command.c:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: 사용할 수 있는 선 모양은 ascii, old-ascii, unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: 사용할 수 있는 유니코드 테두리 모양은 single, double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: 사용할 수 있는 유니코드 칼럼 선 모양은 single, double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: 사용할 수 있는 유니코드 헤더 선 모양은 single, double" + +#: command.c:4393 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: csv_fieldsep 문자는 1바이트의 단일 문자여야 함" + +#: command.c:4398 +#, 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:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: 알 수 없는 옵션: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "html 테이블의 테두리를 %d로 지정했습니다.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "대상 너비 미지정.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "대상 너비는 %d입니다.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "칼럼 단위 보기 기능 켬.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "칼럼 단위 보기 기능을 자동으로 지정 함.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "칼럼 단위 보기 기능 끔.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "CSV용 필드 구분자: \"%s\".\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "필드 구분자가 0 바이트입니다.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "필드 구분자 \"%s\".\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "기본 꼬릿말 보기 기능 켬.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "기본 꼬릿말 보기 기능 끔.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "현재 출력 형식: %s.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "선 모양: %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null 값은 \"%s\" 문자로 보여짐.\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "로케일 맞춤 숫자 표기 기능 켬.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "로케일 맞춤 숫자 표기 기능 끔.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "긴 출력을 위해 페이저가 사용됨.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "항상 페이저가 사용됨.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "화면단위 보기 기능 끔(전체 자료 모두 보여줌).\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "레코드 구분자가 0 바이트임.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "레코드 구분자는 줄바꿈 문자입니다.\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "레코드 구분자 \"%s\".\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "테이블 속성: \"%s\".\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "테이블 속성 모두 지움.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "출력 테이블의 제목: \"%s\"\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "출력 테이블의 제목을 지정하지 않았습니다.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "자료만 보기 기능 켬.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "자료만 보기 기능 끔.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "유니코드 테두리 선문자: \"%s\".\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "유니코드 칼럼 선문자: \"%s\".\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "유니코드 헤더 선문자: \"%s\".\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: 실패" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch 명령으로 수행할 쿼리가 없습니다." + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "타이머 설정 실패: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (%g초 간격)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (%g초 간격)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "신호를 기다릴 수 없었음: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********** 쿼리 **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\" 뷰(view)가 아님" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "reloptions 배열을 분석할 수 없음" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "현재 접속한 연결 없이는 특수문자처리를 할 수 없음" + +#: common.c:207 +#, c-format +msgid "shell command argument contains a newline or carriage return: \"%s\"" +msgstr "쉘 명령의 인자에 줄바꿈 문자가 있음: \"%s\"" + +#: common.c:311 +#, c-format +msgid "connection to server was lost" +msgstr "서버 접속 끊김" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "서버로부터 연결이 끊어졌습니다. 다시 연결을 시도합니다: " + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "실패.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "성공.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "PQresultStatus 반환값이 잘못됨: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "작업시간: %.3f ms\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "작업시간: %.3f ms (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "작업시간: %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, 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:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "현재 데이터베이스에 연결되어있지 않습니다." + +#: common.c:654 +#, c-format +msgid "" +"Asynchronous notification \"%s\" with payload \"%s\" received from server " +"process with PID %d.\n" +msgstr "\"%s\" 비동기 통지를 받음, 부가정보: \"%s\", 보낸 프로세스: %d.\n" + +#: common.c:657 +#, c-format +msgid "" +"Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "동기화 신호 \"%s\" 받음, 해당 서버 프로세스 PID %d.\n" + +#: common.c:688 +#, c-format +msgid "could not print result table: %m" +msgstr "결과 테이블을 출력할 수 없음: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "\\gset 해당 자료 없음" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "\\gset 실행 결과가 단일 자료가 아님" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "" +"\\gset 작업으로 특수하게 처리되는 변수인 \"%s\" 변수값을 바꿀 수 있어 무시함" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "명령구문: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "알 수 없는 트랜잭션 상태 (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "필드명" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "형태" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "읽기 실패로 중지됨" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "스키마" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "이름" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "반환 자료형" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "인자 자료형" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "설명" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "통계 함수 목록" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "서버(%s 버전)에서 접근 방법을 지원하지 않습니다." + +#: describe.c:168 +msgid "Index" +msgstr "인덱스" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "테이블" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "핸들러" + +#: describe.c:201 +msgid "List of access methods" +msgstr "접근 방법 목록" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "소유주" + +#: describe.c:231 +msgid "Location" +msgstr "위치" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "옵션" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "크기" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "테이블스페이스 목록" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df 명령은 [anptwS+]만 추가로 사용함" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "집계" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "창" + +#: describe.c:356 +msgid "proc" +msgstr "proc" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "함수" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "트리거" + +#: describe.c:386 +msgid "immutable" +msgstr "immutable" + +#: describe.c:387 +msgid "stable" +msgstr "stable" + +#: describe.c:388 +msgid "volatile" +msgstr "volatile" + +#: describe.c:389 +msgid "Volatility" +msgstr "휘발성" + +#: describe.c:397 +msgid "restricted" +msgstr "엄격함" + +#: describe.c:398 +msgid "safe" +msgstr "safe" + +#: describe.c:399 +msgid "unsafe" +msgstr "unsafe" + +#: describe.c:400 +msgid "Parallel" +msgstr "병렬처리" + +#: describe.c:405 +msgid "definer" +msgstr "definer" + +#: describe.c:406 +msgid "invoker" +msgstr "invoker" + +#: describe.c:407 +msgid "Security" +msgstr "보안" + +#: describe.c:412 +msgid "Language" +msgstr "언어" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "소스 코드" + +#: describe.c:594 +msgid "List of functions" +msgstr "함수 목록" + +#: describe.c:657 +msgid "Internal name" +msgstr "내부 이름" + +#: describe.c:659 +msgid "Elements" +msgstr "요소" + +#: describe.c:711 +msgid "List of data types" +msgstr "자료형 목록" + +#: describe.c:814 +msgid "Left arg type" +msgstr "왼쪽 인수 자료형" + +#: describe.c:815 +msgid "Right arg type" +msgstr "오른쪽 인수 자료형" + +#: describe.c:816 +msgid "Result type" +msgstr "반환 자료형" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "함수" + +#: describe.c:902 +msgid "List of operators" +msgstr "연산자 목록" + +#: describe.c:938 +msgid "Encoding" +msgstr "인코딩" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Collate" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "ICU 로케일" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "로케일 제공자" + +#: describe.c:964 +msgid "Tablespace" +msgstr "테이블스페이스" + +#: describe.c:990 +msgid "List of databases" +msgstr "데이터베이스 목록" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "테이블" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "뷰(view)" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "구체화된 뷰" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "시퀀스" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "외부 테이블" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "파티션 테이블" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "칼럼 접근권한" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "정책" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "액세스 권한" + +#: describe.c:1188 +msgid "function" +msgstr "함수" + +#: describe.c:1190 +msgid "type" +msgstr "type" + +#: describe.c:1192 +msgid "schema" +msgstr "스키마" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "기본 접근권한" + +#: describe.c:1259 +msgid "Object" +msgstr "개체" + +#: describe.c:1273 +msgid "table constraint" +msgstr "테이블 제약 조건" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "도메인 제약조건" + +#: describe.c:1321 +msgid "operator class" +msgstr "연산자 클래스" + +#: describe.c:1345 +msgid "operator family" +msgstr "연산자 부류" + +#: describe.c:1368 +msgid "rule" +msgstr "룰(rule)" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "개체 설명" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "\"%s\" 이름을 릴레이션(relation) 없음." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "관련 릴레이션 찾을 수 없음." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "%s oid의 어떤 릴레이션(relation)도 찾을 수 없음." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "시작" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "최소값" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "최대값" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "증가값" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "예" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "아니오" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "순환?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "캐쉬" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "소유주: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "식별 칼럼용 시퀀스: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "\"%s.%s\" 로그 미사용 시퀀스" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "\"%s.%s\" 시퀀스" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "로그 미사용 테이블 \"%s.%s\"" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "\"%s.%s\" 테이블" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "\"%s.%s\" 뷰(view)" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "트랜잭션 로그를 남기지 않은 구체화된 뷰 \"%s.%s\"" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Materialized 뷰 \"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "\"%s.%s\" 로그 미사용 인덱스" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "\"%s.%s\" 인덱스" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "\"%s.%s\" 로그 미사용 파티션 인덱스" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "\"%s.%s\" 파티션 인덱스" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "\"%s.%s\" TOAST 테이블" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "\"%s.%s\" 복합자료형" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "\"%s.%s\" 외부 테이블" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "로그 미사용 파티션 테이블 \"%s.%s\"" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "\"%s.%s\" 파티션 테이블" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "정렬규칙" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "NULL허용" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "초기값" + +#: describe.c:2029 +msgid "Key?" +msgstr "Key?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "정의" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "FDW 옵션" + +#: describe.c:2035 +msgid "Storage" +msgstr "스토리지" + +#: describe.c:2037 +msgid "Compression" +msgstr "압축" + +#: describe.c:2039 +msgid "Stats target" +msgstr "통계수집량" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "소속 파티션: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "파티션 제약 조건 없음" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "파티션 제약조건: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "파티션 키: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "소속 테이블: \"%s.%s\"" + +#: describe.c:2309 +msgid "primary key, " +msgstr "기본키, " + +#: describe.c:2312 +msgid "unique" +msgstr "고유" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls not distinct" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "적용테이블: \"%s.%s\"" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", predicate (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", 클러스됨" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", 잘못됨" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", 지연가능" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", 트랜잭션단위지연" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", 복제 식별자" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "인덱스들:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "체크 제약 조건:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "참조키 제약 조건:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "다음에서 참조됨:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "정책:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "정책 (로우단위 보안정책 강제 활성화):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "정책 (로우단위 보안정책 활성화): (없음)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "정책 (로우단위 보안정책 강제 활성화): (없음)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "정책 (로우단위 보안정책 비활성화):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "통계정보 객체:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "룰(rule)들:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "사용중지된 규칙:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "항상 발생하는 규칙:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "복제본에서만 발생하는 규칙:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "발행자:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "뷰 정의:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "트리거들:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "사용중지된 사용자 트리거:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "사용중지된 내부 트리거:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "항상 발생하는 트리거:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "복제본에서만 발생하는 트리거:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "서버: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "FDW 옵션들: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "상속" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "파티션 테이블 수: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "파티션 테이블 수: %d (\\d+ 명령으로 볼 수 있음)" + +#: describe.c:3424 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "하위 테이블 수: %d (\\d+ 명령으로 볼 수 있음)" + +#: describe.c:3431 +msgid "Child tables" +msgstr "하위 테이블" + +#: describe.c:3431 +msgid "Partitions" +msgstr "파티션들" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "자료형의 typed 테이블: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "복제 식별자" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "OID 사용: yes" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "접근 방법: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", \"%s\" 테이블스페이스" + +#: describe.c:3668 +msgid "List of roles" +msgstr "롤 목록" + +#: describe.c:3670 +msgid "Role name" +msgstr "롤 이름" + +#: describe.c:3671 +msgid "Attributes" +msgstr "속성" + +#: describe.c:3673 +msgid "Member of" +msgstr "소속 그룹:" + +#: describe.c:3684 +msgid "Superuser" +msgstr "슈퍼유저" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "상속 없음" + +#: describe.c:3690 +msgid "Create role" +msgstr "롤 만들기" + +#: describe.c:3693 +msgid "Create DB" +msgstr "DB 만들기" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "로그인할 수 없음" + +#: describe.c:3699 +msgid "Replication" +msgstr "복제" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "RLS 통과" + +#: describe.c:3712 +msgid "No connections" +msgstr "연결 없음" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d개 연결" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "비밀번호 만료기한: " + +#: describe.c:3777 +msgid "Role" +msgstr "롤" + +#: describe.c:3778 +msgid "Database" +msgstr "데이터베이스" + +#: describe.c:3779 +msgid "Settings" +msgstr "설정" + +#: describe.c:3803 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "\"%s\" 롤과 \"%s\" 데이터베이스에 대한 특정 설정이 없습니다." + +#: describe.c:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "\"%s\" 롤용 특정 설정이 없음." + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "추가 설정 없음." + +#: describe.c:3814 +msgid "List of settings" +msgstr "설정 목록" + +#: describe.c:3885 +msgid "index" +msgstr "인덱스" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "TOAST 테이블" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "파티션_인덱스" + +#: describe.c:3910 +msgid "permanent" +msgstr "영구" + +#: describe.c:3911 +msgid "temporary" +msgstr "임시" + +#: describe.c:3912 +msgid "unlogged" +msgstr "로깅안함" + +#: describe.c:3913 +msgid "Persistence" +msgstr "지속성" + +#: describe.c:3929 +msgid "Access method" +msgstr "접근 방법" + +#: describe.c:4015 +msgid "List of relations" +msgstr "릴레이션 목록" + +#: describe.c:4063 +#, c-format +msgid "" +"The server (version %s) does not support declarative table partitioning." +msgstr "이 서버(%s 버전)는 파티션 테이블 기능을 지원하지 않습니다." + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "파티션 인덱스 목록" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "파티션 테이블 목록" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "파티션 릴레이션(relation) 목록" + +#: describe.c:4111 +msgid "Parent name" +msgstr "상위 이름" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "하위 파티션 크기" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "전체 크기" + +#: describe.c:4258 +msgid "Trusted" +msgstr "신뢰됨" + +#: describe.c:4267 +msgid "Internal language" +msgstr "내부 언어" + +#: describe.c:4268 +msgid "Call handler" +msgstr "호출 핸들러" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "유효성 검사기" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "인라인 핸들러" + +#: describe.c:4305 +msgid "List of languages" +msgstr "언어 목록" + +#: describe.c:4346 +msgid "Check" +msgstr "체크" + +#: describe.c:4390 +msgid "List of domains" +msgstr "도메인(domain) 목록" + +#: describe.c:4424 +msgid "Source" +msgstr "소스" + +#: describe.c:4425 +msgid "Destination" +msgstr "설명" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "초기값?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "문자코드변환규칙(conversion) 목록" + +#: describe.c:4497 +msgid "Parameter" +msgstr "매개변수" + +#: describe.c:4498 +msgid "Value" +msgstr "값" + +#: describe.c:4505 +msgid "Context" +msgstr "컨텍스트" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "환경설정 매개변수 목록" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "기본값이 아닌 값으로 지정된 환경설정 매개변수 목록" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "이 서버(%s 버전)는 이벤트 트리거를 지원하지 않습니다." + +#: describe.c:4587 +msgid "Event" +msgstr "이벤트" + +#: describe.c:4589 +msgid "enabled" +msgstr "활성화" + +#: describe.c:4590 +msgid "replica" +msgstr "replica" + +#: describe.c:4591 +msgid "always" +msgstr "항상" + +#: describe.c:4592 +msgid "disabled" +msgstr "비활성화" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "활성화" + +#: describe.c:4595 +msgid "Tags" +msgstr "태그" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "이벤트 트리거 목록" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "이 서버(%s 버전)에서 확장 통계정보를 지원하지 않습니다." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Dependencies" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "확장 통계정보 목록" + +#: describe.c:4745 +msgid "Source type" +msgstr "Source 자료형" + +#: describe.c:4746 +msgid "Target type" +msgstr "Target 자료형" + +#: describe.c:4770 +msgid "in assignment" +msgstr "in assignment" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Implicit?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "형변환자 목록" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "제공자" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Deterministic?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "문자 정렬 목록" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "스키마 목록" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "텍스트 검색 파서 목록" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "\"%s\"(이)라는 전문 검색 분석기를 찾지 못했습니다." + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "특정 전문 검색 분석기를 찾지 못했습니다." + +#: describe.c:5245 +msgid "Start parse" +msgstr "구문 분석 시작" + +#: describe.c:5246 +msgid "Method" +msgstr "방법" + +#: describe.c:5250 +msgid "Get next token" +msgstr "다음 토큰 가져오기" + +#: describe.c:5252 +msgid "End parse" +msgstr "구문 분석 종료" + +#: describe.c:5254 +msgid "Get headline" +msgstr "헤드라인 가져오기" + +#: describe.c:5256 +msgid "Get token types" +msgstr "토큰 형식 가져오기" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "\"%s.%s\" 텍스트 검색 파서" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "\"%s\" 텍스트 검색 파서" + +#: describe.c:5289 +msgid "Token name" +msgstr "토큰 이름" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "\"%s.%s\" 파서의 토큰 형식" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "\"%s\" 파서의 토큰 형식" + +#: describe.c:5350 +msgid "Template" +msgstr "템플릿" + +#: describe.c:5351 +msgid "Init options" +msgstr "초기화 옵션" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "텍스트 검색 사전 목록" + +#: describe.c:5411 +msgid "Init" +msgstr "초기화" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "텍스트 검색 템플릿 목록" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "텍스트 검색 구성 목록" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "\"%s\"(이)라는 텍스트 검색 구성을 찾지 못했습니다." + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "특정 텍스트 검색 구성을 찾지 못했습니다." + +#: describe.c:5619 +msgid "Token" +msgstr "토큰" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "사전" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "텍스트 검색 구성 \"%s.%s\"" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "텍스트 검색 구성 \"%s\"" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"파서: \"%s.%s\"" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"파서: \"%s\"" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "외부 데이터 래퍼 목록" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "외부 데이터 래퍼" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "버전" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "외부 서버 목록" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "서버" + +#: describe.c:5825 +msgid "User name" +msgstr "사용자 이름" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "사용자 매핑 목록" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "외부 테이블 목록" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "설치된 확장기능 목록" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "\"%s\" 이름의 확장 기능 모듈을 찾을 수 없습니다." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "추가할 확장 기능 모듈이 없음." + +#: describe.c:6075 +msgid "Object description" +msgstr "개체 설명" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "\"%s\" 확장 기능 안에 포함된 객체들" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "적당하지 않은 qualified 이름 입니다 (너무 많은 점이 있네요): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "서로 다른 데이터베이스간의 참조는 구현되어있지 않습니다: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "이 서버(%s 버전)는 논리 복제 발행 기능을 지원하지 않습니다." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "모든 테이블" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Inserts" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Updates" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Deletes" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Truncates" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Via root" + +#: describe.c:6221 +msgid "List of publications" +msgstr "발행 목록" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "\"%s\" 이름의 발행 없음." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "발행 없음." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "%s 발행" + +#: describe.c:6425 +msgid "Tables:" +msgstr "테이블들:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "다음 스키마의 모든 테이블:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "이 서버(%s 버전)는 구독 기능을 지원하지 않습니다." + +#: describe.c:6497 +msgid "Publication" +msgstr "발행" + +#: describe.c:6506 +msgid "Binary" +msgstr "바이너리" + +#: describe.c:6507 +msgid "Streaming" +msgstr "스트리밍" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "2단계 커밋" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "오류가 생기면 비활성" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "동기식 커밋" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "연결정보" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "LSN 건너뜀" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "구독 목록" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "입력 자료형" + +#: describe.c:6618 +msgid "Storage type" +msgstr "스토리지 유형" + +#: describe.c:6619 +msgid "Operator class" +msgstr "연산자 클래스" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "연산자 부류" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "연산자 클래스 목록" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Applicable types" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "연산자 부류 목록" + +#: describe.c:6807 +msgid "Operator" +msgstr "연산자" + +#: describe.c:6808 +msgid "Strategy" +msgstr "전략번호" + +#: describe.c:6809 +msgid "ordering" +msgstr "ordering" + +#: describe.c:6810 +msgid "search" +msgstr "search" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Purpose" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "정렬 연산자 부류" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "연산자 부류 소속 연산자 목록" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "등록된 왼쪽 자료형" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "등록된 오른쪽 자료형" + +#: describe.c:6904 +msgid "Number" +msgstr "번호" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "연산자 부류 소속 지원 함수 목록" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "대형 객체들" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql은 PostgreSQL 대화식 터미널입니다.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "사용법:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "일반 옵션:\n" + +#: help.c:84 +msgid "" +" -c, --command=COMMAND run only single command (SQL or internal) and " +"exit\n" +msgstr "" +" -c, --command=COMMAND 하나의 명령(SQL 또는 내부 명령)만 실행하고 끝냄\n" + +#: help.c:85 +#, c-format +msgid "" +" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr " -d, --dbname=DBNAME 연결할 데이터베이스 이름(기본 값: \"%s\")\n" + +#: help.c:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=FILENAME 파일 안에 지정한 명령을 실행하고 끝냄\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr "" +" -l, --list 사용 가능한 데이터베이스 목록을 표시하고 끝냄\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version 버전 정보를 보여주고 마침\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc 시작 파일(~/.psqlrc)을 읽지 않음\n" + +#: help.c:94 +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-" +"interactive)\n" +msgstr "" +" -1 (\"one\"), --single-transaction\n" +" 명령 파일을 하나의 트랜잭션으로 실행\n" + +#: help.c:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] 이 도움말을 표시하고 종료\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr "" +" --help=commands psql 내장명령어(\\문자로 시작하는)를 표시하고 종" +"료\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables 특별 변수들 보여주고, 종료\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"입출력 옵션:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all 스크립트의 모든 입력 표시\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors 실패한 명령들 출력\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries 서버로 보낸 명령 표시\n" + +#: help.c:104 +msgid "" +" -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden 내부 명령이 생성하는 쿼리 표시\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME 세션 로그를 파일로 보냄\n" + +#: help.c:106 +msgid "" +" -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline 확장된 명령행 편집 기능을 사용중지함(readline)\n" + +#: help.c:107 +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr " -o, --output=FILENAME 쿼리 결과를 파일(또는 |파이프)로 보냄\n" + +#: help.c:108 +msgid "" +" -q, --quiet run quietly (no messages, only query output)\n" +msgstr " -q, --quiet 자동 실행(메시지 없이 쿼리 결과만 표시)\n" + +#: help.c:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step 단독 순차 모드(각 쿼리 확인)\n" + +#: help.c:110 +msgid "" +" -S, --single-line single-line mode (end of line terminates SQL " +"command)\n" +msgstr " -S, --single-line 한 줄 모드(줄 끝에서 SQL 명령이 종료됨)\n" + +#: help.c:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"출력 형식 옵션:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align 정렬되지 않은 표 형태의 출력 모드\n" + +#: help.c:114 +msgid "" +" --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv CSV (쉼표-분리 자료) 테이블 출력 모드\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html HTML 표 형태 출력 모드\n" + +#: help.c:119 +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:120 +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:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only 행만 인쇄\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded 확장된 표 형태로 출력\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"연결 옵션들:\n" + +#: help.c:133 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory " +"(default: \"%s\")\n" +msgstr "" +" -h, --host=HOSTNAME 데이터베이스 서버 호스트 또는 소켓 디렉터리\n" +" (기본값: \"%s\")\n" + +#: help.c:134 +msgid "local socket" +msgstr "로컬 소켓" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password 암호 프롬프트 표시 안 함\n" + +#: help.c:143 +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr " -W, --password 암호 입력 프롬프트 보임(자동으로 처리함)\n" + +#: help.c:145 +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:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "문제점 보고 주소: <%s>\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s 홈페이지: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "일반\n" + +#: help.c:192 +msgid "" +" \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright PostgreSQL 사용법 및 저작권 정보 표시\n" + +#: help.c:193 +msgid "" +" \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr "" +" \\crosstabview [칼럼들] 쿼리를 실행하고, 피봇 테이블 형태로 자료를 보여줌\n" + +#: help.c:194 +msgid "" +" \\errverbose show most recent error message at maximum " +"verbosity\n" +msgstr "" +" \\errverbose 최대 자세히 보기 상태에서 최근 오류를 다 보여줌\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(OPTIONS)] [FILE] 쿼리 실행 (결과는 지정한 파일로, 또는 |파이프로);\n" +" \\g 명령에서 인자가 없으면 세미콜론과 같음\n" + +#: help.c:197 +msgid "" +" \\gdesc describe result of query, without executing it\n" +msgstr "" +" \\gdesc 쿼리를 실행하지 않고 그 결과 칼럼과 자료형을 출력\n" + +#: help.c:198 +msgid "" +" \\gexec execute query, then execute each value in its " +"result\n" +msgstr " \\gexec 쿼리를 실행하고, 그 결과를 각각 실행 함\n" + +#: help.c:199 +msgid "" +" \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [PREFIX] 쿼리 실행 뒤 그 결과를 psql 변수로 저장\n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr "" +" \\gx [(OPTIONS)] [FILE] \\g 명령과 같으나, 출력을 확장 모드로 강제함\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q psql 종료\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] 매 초마다 쿼리 실행\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "도움말\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] psql 역슬래시 명령어 설명\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options psql 명령행 옵션 도움말 보기\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables psql 환경 설정 변수들에 설명 보기\n" + +#: help.c:210 +msgid "" +" \\h [NAME] help on syntax of SQL commands, * for all " +"commands\n" +msgstr "" +" \\h [NAME] SQL 명령 구문 도움말, 모든 명령을 표시하려면 * 입" +"력\n" + +#: help.c:213 +msgid "Query Buffer\n" +msgstr "쿼리 버퍼\n" + +#: help.c:214 +msgid "" +" \\e [FILE] [LINE] edit the query buffer (or file) with external " +"editor\n" +msgstr " \\e [FILE] [LINE] 외부 편집기로 쿼리 버퍼(또는 파일) 편집\n" + +#: help.c:215 +msgid "" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNCNAME [LINE]] 외부 편집기로 해당 함수 내용 편집\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [VIEWNAME [LINE]] 외부 편집기로 해당 뷰 정의 편집\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p 쿼리 버퍼의 내용 표시\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r 쿼리 버퍼 초기화(모두 지움)\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [FILE] 기록 표시 또는 파일에 저장\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILE 쿼리 버퍼를 파일에 기록\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "입력/출력\n" + +#: help.c:226 +msgid "" +" \\copy ... perform SQL COPY with data stream to the client " +"host\n" +msgstr "" +" \\copy ... 클라이언트 호스트에 있는 자료를 SQL COPY 명령 실" +"행\n" + +#: help.c:227 +msgid "" +" \\echo [-n] [STRING] write string to standard output (-n for no " +"newline)\n" +msgstr " \\echo [-n] [STRING] 문자열을 표준 출력에 기록 (-n 줄바꿈 없음)\n" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILE 파일에서 명령 실행\n" + +#: help.c:229 +msgid "" +" \\ir FILE as \\i, but relative to location of current " +"script\n" +msgstr "" +" \\ir FILE \\i 명령과 같으나, 경로가 현재 위치 기준 상대적\n" + +#: help.c:230 +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [FILE] 모든 쿼리 결과를 파일 또는 |파이프로 보냄\n" + +#: help.c:231 +msgid "" +" \\qecho [-n] [STRING] write string to \\o output stream (-n for no " +"newline)\n" +msgstr "" +" \\qecho [-n] [STRING] 문자열을 \\o 출력 스트림에 기록 (-n 줄바꿈 없음)\n" + +#: help.c:232 +msgid "" +" \\warn [-n] [STRING] write string to standard error (-n for no " +"newline)\n" +msgstr " \\warn [-n] [STRING] 문자열을 stderr에 기록 (-n 줄바꿈 없음)\n" + +#: help.c:235 +msgid "Conditional\n" +msgstr "조건문\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR 조건문 시작\n" + +#: help.c:237 +msgid "" +" \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR else if 구문 시작\n" + +#: help.c:238 +msgid "" +" \\else final alternative within current conditional " +"block\n" +msgstr " \\else 조건문의 그 외 조건\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif 조건문 끝\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "정보보기\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (옵션: S = 시스템 개체 표시, + = 추가 상세 정보)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] 테이블, 뷰 및 시퀀스 목록\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAME 테이블, 뷰, 시퀀스 또는 인덱스 설명\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [PATTERN] 집계 함수 목록\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [PATTERN] 접근 방법 목록\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] 연산자 클래스 목록\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] 연산자 부류 목록\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] 연산자 부류 소속 연산자 목록\n" + +#: help.c:251 +msgid "" +" \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] 연산자 가족에 포함된 지원 함수 목록\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [PATTERN] 테이블스페이스 목록\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [PATTERN] 문자셋 변환자 목록\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [PATTERN] 환경설정 매개변수 목록\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [PATTERN] 자료형 변환자 목록\n" + +#: help.c:256 +msgid "" +" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr "" +" \\dd[S] [PATTERN] 다른 곳에서는 볼 수 없는 객체 설명을 보여줌\n" + +#: help.c:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [PATTERN] 도메인 목록\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [PATTERN] 기본 접근권한 목록\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATTERN] 외부 테이블 목록\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [PATTERN] 외부 서버 목록\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [PATTERN] 외부 테이블 목록\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [PATTERN] 사용자 매핑 목록\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [PATTERN] 외부 데이터 래퍼 목록\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] " +"functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" [agg/normal/procedure/trigger/window 단일] 함수 목" +"록\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [PATTERN] 텍스트 검색 구성 목록\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [PATTERN] 텍스트 검색 사전 목록\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [PATTERN] 텍스트 검색 파서 목록\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [PATTERN] 텍스트 검색 템플릿 목록\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [PATTERN] 롤 목록\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [PATTERN] 인덱스 목록\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] 큰 개체 목록, \\lo_list 명령과 같음\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATTERN] 프로시져 언어 목록\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [PATTERN] materialized 뷰 목록\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATTERN] 스키마 목록\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" 연산자 목록\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [PATTERN] collation 목록\n" + +#: help.c:279 +msgid "" +" \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr " \\dp [PATTERN] 테이블, 뷰 및 시퀀스 액세스 권한 목록\n" + +#: help.c:280 +msgid "" +" \\dP[itn+] [PATTERN] list [only index/table] partitioned relations " +"[n=nested]\n" +msgstr "" +" \\dP[itn+] [PATTERN] 파티션 릴레이션 목록 [인덱스/테이블만] [n=nested]\n" + +#: help.c:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr " \\drds [ROLEPTRN [DBPTRN]] per-database 롤 설정 목록\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [PATTERN] 복제 발행 목록\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [PATTERN] 복제 구독 목록\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [PATTERN] 시퀀스 목록\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [PATTERN] 테이블 목록\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [PATTERN] 데이터 형식 목록\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [PATTERN] 롤 목록\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [PATTERN] 뷰 목록\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATTERN] 확장 모듈 목록\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [PATTERN] 확장 통계 정보 목록\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [PATTERN] 이벤트 트리거 목록\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [PATTERN] 데이터베이스 목록\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] 함수이름 함수 정의 보기\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] 뷰이름 뷰 정의 보기\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [PATTERN] \\dp와 같음\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "큰 개체\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export LOBOID FILE 큰 개체를 파일로 저장\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import FILE [COMMENT]\n" +" 파일에서 큰 개체 가져오기\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] 큰 개체 목록\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID 큰 개체 삭제\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "출력 형식\n" + +#: help.c:307 +msgid "" +" \\a toggle between unaligned and aligned output mode\n" +msgstr "" +" \\a 정렬되지 않은 출력 모드와 정렬된 출력 모드 전환\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr "" +" \\C [STRING] 테이블 제목 설정 또는 값이 없는 경우 설정 안 함\n" + +#: help.c:309 +msgid "" +" \\f [STRING] show or set field separator for unaligned query " +"output\n" +msgstr "" +" \\f [STRING] unaligned 출력에 대해 필드 구분자 표시 또는 설정\n" + +#: help.c:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H HTML 출력 모드 전환(현재 %s)\n" + +#: help.c:312 +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:319 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] 행만 표시(현재 %s)\n" + +#: help.c:321 +msgid "" +" \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [STRING] HTML
태그 속성 설정 또는 비었는 경우 설정 " +"안 함\n" + +#: help.c:322 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr " \\x [on|off|auto] 확장된 출력 전환 (현재 %s)\n" + +#: help.c:323 +msgid "auto" +msgstr "자동" + +#: help.c:326 +msgid "Connection\n" +msgstr "연결\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo 현재 데이터베이스 접속 정보 보기\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [ENCODING] 클라이언트 인코딩 표시 또는 설정\n" + +#: help.c:336 +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [USERNAME] 사용자 암호를 안전하게 변경\n" + +#: help.c:339 +msgid "Operating System\n" +msgstr "운영 체제\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIR] 현재 작업 디렉터리 변경\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVVAR 환경 변수값을 psql 변수값으로\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAME [VALUE] 환경 변수 지정 및 해제\n" + +#: help.c:343 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] 명령 실행 시간 전환(현재 %s)\n" + +#: help.c:345 +msgid "" +" \\! [COMMAND] execute command in shell or start interactive " +"shell\n" +msgstr " \\! [COMMAND] 셸 명령 실행 또는 대화식 셸 시작\n" + +#: help.c:348 +msgid "Variables\n" +msgstr "변수\n" + +#: help.c:349 +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr "" +" \\prompt [TEXT] NAME 사용자에게 내부 변수를 설정하라는 메시지 표시\n" + +#: help.c:350 +msgid "" +" \\set [NAME [VALUE]] set internal variable, or list all if no " +"parameters\n" +msgstr "" +" \\set [NAME [VALUE]] 내부 변수 설정 또는 미지정 경우 모든 변수 목록 표" +"시\n" + +#: help.c:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NAME 내부 변수 설정 해제(삭제)\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "특별한 기능 설정 변수 목록\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "psql 변수들:\n" + +#: help.c:394 +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:396 +msgid "" +" AUTOCOMMIT\n" +" if set, successful SQL commands are automatically committed\n" +msgstr "" +" AUTOCOMMIT\n" +" 설정 되면, SQL 명령이 정상 실행 되면 자동 커밋 함\n" + +#: help.c:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" 현재 접속한 데이터베이스 이름\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" 현재 클라이언트 인코딩 지정\n" + +#: help.c:411 +msgid "" +" ERROR\n" +" true if last query failed, else false\n" +msgstr "" +" ERROR\n" +" 마지막 쿼리가 실패했으면 true, 아니면 false\n" + +#: help.c:413 +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:415 +msgid "" +" HIDE_TABLEAM\n" +" if set, table access methods are not displayed\n" +msgstr "" +" HIDE_TABLEAM\n" +" 지정하면 테이블 접근 방법을 보여주지 않음\n" + +#: help.c:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" 지정하면 TOAST 압축 종류 보여주지 않음\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" 명령 내역 처리 방법 [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr "" +" HISTFILE\n" +" 명령 내역을 저장할 파일 이름\n" + +#: help.c:423 +msgid "" +" HISTSIZE\n" +" maximum number of commands to store in the command history\n" +msgstr "" +" HISTSIZE\n" +" 명령 내역 최대 보관 개수\n" + +#: help.c:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" 현재 접속한 데이터베이스 서버 호스트\n" + +#: help.c:427 +msgid "" +" IGNOREEOF\n" +" number of EOFs needed to terminate an interactive session\n" +msgstr "" +" IGNOREEOF\n" +" 대화형 세션 종료를 위한 EOF 개수\n" + +#: help.c:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" 마지막 영향 받은 OID 값\n" + +#: help.c:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" 배치 작업 시 오류가 발생하면 중지함\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" 현재 접속한 서버 포트\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" 기본 psql 프롬프트 정의\n" + +#: help.c:442 +msgid "" +" PROMPT2\n" +" specifies the prompt used when a statement continues from a previous " +"line\n" +msgstr "" +" PROMPT2\n" +" 아직 구문이 덜 끝난 명령행의 프롬프트\n" + +#: help.c:444 +msgid "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3\n" +" COPY ... FROM STDIN 작업시 보일 프롬프트\n" + +#: help.c:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" 조용히 실행 (-q 옵션과 같음)\n" + +#: help.c:448 +msgid "" +" ROW_COUNT\n" +" number of rows returned or affected by last query, or 0\n" +msgstr "" +" ROW_COUNT\n" +" 마지막 쿼리 작업 대상 로우 수, 또는 0\n" + +#: help.c:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" 여러 쿼리가 연속하는 경우(\\;) 모든 쿼리 결과를 출력, off면 마지막 결과" +"만\n" + +#: help.c:455 +msgid "" +" SHOW_CONTEXT\n" +" controls display of message context fields [never, errors, always]\n" +msgstr "" +" SHOW_CONTEXT\n" +" 상황별 자세한 메시지 내용 출력 제어 [never, errors, always]\n" + +#: help.c:457 +msgid "" +" SINGLELINE\n" +" if set, end of line terminates SQL commands (same as -S option)\n" +msgstr "" +" SINGLELINE\n" +" 한 줄에 하나의 SQL 명령 실행 (-S 옵션과 같음)\n" + +#: help.c:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" 각 명령을 확인하며 실행 (-s 옵션과 같음)\n" + +#: help.c:461 +msgid "" +" SQLSTATE\n" +" SQLSTATE of last query, or \"00000\" if no error\n" +msgstr "" +" SQLSTATE\n" +" 마지막 쿼리의 SQLSTATE 값, 오류가 없으면 \"00000\"\n" + +#: help.c:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" 현재 접속한 데이터베이스 사용자\n" + +#: help.c:465 +msgid "" +" VERBOSITY\n" +" controls verbosity of error reports [default, verbose, terse, sqlstate]\n" +msgstr "" +" VERBOSITY\n" +" 오류 출력시 자세히 볼 내용 범위 [default, verbose, terse, sqlstate]\n" + +#: help.c:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"출력 설정들:\n" + +#: help.c:474 +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:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" 테두리 모양 (숫자)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" 줄바꿈을 위한 너비 지정\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (또는 x)\n" +" 확장된 출력 전환 [on, off, auto]\n" + +#: help.c:482 +#, c-format +msgid "" +" fieldsep\n" +" field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep\n" +" unaligned 출력용 필드 구분자 (초기값 \"%s\"')\n" + +#: help.c:485 +msgid "" +" fieldsep_zero\n" +" set field separator for unaligned output to a zero byte\n" +msgstr "" +" fieldsep_zero\n" +" unaligned 출력용 필드 구분자를 0 바이트로 지정\n" + +#: help.c:487 +msgid "" +" footer\n" +" enable or disable display of the table footer [on, off]\n" +msgstr "" +" footer\n" +" 테이블 꼬리말 보이기 전환 [on, off]\n" + +#: help.c:489 +msgid "" +" format\n" +" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr "" +" format\n" +" 출력 양식 지정 [unaligned, aligned, wrapped, html, asciidoc, ...]\n" + +#: help.c:491 +msgid "" +" linestyle\n" +" set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr "" +" linestyle\n" +" 테두리 선 모양 지정 [ascii, old-ascii, unicode]\n" + +#: help.c:493 +msgid "" +" null\n" +" set the string to be printed in place of a null value\n" +msgstr "" +" null\n" +" null 값 출력 방법\n" + +#: help.c:495 +msgid "" +" numericlocale\n" +" enable display of a locale-specific character to separate groups of " +"digits\n" +msgstr "" +" numericlocale\n" +" 숫자 출력에서 로케일 기반 천자리 분리 문자 활성화 [on, off]\n" + +#: help.c:497 +msgid "" +" pager\n" +" control when an external pager is used [yes, no, always]\n" +msgstr "" +" pager\n" +" 외부 페이지 단위 보기 도구 사용 여부 [yes, no, always]\n" + +#: help.c:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" unaligned 출력용 레코드(줄) 구분자\n" + +#: help.c:501 +msgid "" +" recordsep_zero\n" +" set record separator for unaligned output to a zero byte\n" +msgstr "" +" recordsep_zero\n" +" unaligned 출력용 레코드 구분자를 0 바이트로 지정\n" + +#: help.c:503 +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:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" 테이블 제목 지정\n" + +#: help.c:508 +msgid "" +" tuples_only\n" +" if set, only actual table data is shown\n" +msgstr "" +" tuples_only\n" +" 지정되면, 자료만 보임\n" + +#: help.c:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"OS 환경 변수들:\n" + +#: help.c:519 +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:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" 다음 줄로 넘어갈 칼럼 수\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" application_name 변수값으로 사용됨\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" 접속할 데이터베이스 이름\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" 서버 접속용 호스트 이름\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" 서버 접속용 비밀번호가 저장된 파일 이름\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" 서버 접속 비밀번호 (보안에 취약함)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" 서버 접속용 포트\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" 서버 접속용 데이터베이스 사용자 이름\n" + +#: help.c:540 +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:542 +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:544 +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" 사용자 .psql_history 파일 임의 지정\n" + +#: help.c:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PAGER\n" +" 페이지 단위 보기에서 사용할 프로그램\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" \\watch 명령에서 사용할 외장 페이저 프로그램 이름\n" + +#: help.c:552 +msgid "" +" PSQLRC\n" +" alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC\n" +" 사용자 .psqlrc 파일의 임의 지정\n" + +#: help.c:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" \\! 명령에서 사용할 쉘\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" 임시 파일을 사용할 디렉터리\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "사용 가능한 도움말:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "history를 \"%s\" 파일로 저장할 수 없음: %m" + +#: input.c:535 +#, 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: 알 수 없는 트랜잭션 상태" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: escaped" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "마치려면 \"\\q\"를 입력하세요: %s\n" + +#: mainloop.c:214 +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:295 +msgid "Use \\? for help or press control-C to clear the input buffer." +msgstr "\\? 도움말, Ctrl-C 입력 버퍼 비우기" + +#: mainloop.c:297 +msgid "Use \\? for help." +msgstr "도움말을 보려면 \\?를 입력하십시오." + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "PostgreSQL에 대한 명령행 인터페이스인 psql을 사용하고 있습니다." + +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "\\q 마침" + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "마침은 Ctrl-D" + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "마침은 Ctrl-C" + +#: mainloop.c:459 mainloop.c:618 +#, c-format +msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "" +"쿼리 무시됨; 현재 \\if 블록을 끝내려면 \\endif 또는 Ctrl-C 키를 사용하세요." + +#: mainloop.c:636 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "이름" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "집계함수_식별구문" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "새이름" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "새사용자" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "새스키마" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +msgid "where aggregate_signature is:" +msgstr "집계함수_식별구문 사용법:" + +#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "인자모드" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "인자이름" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "인자자료형" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "옵션" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "옵션 사용법:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "접속허용" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "접속제한" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "템플릿?" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "새테이블스페이스" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "환경설정_매개변수" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "값" + +#: sql_help.c:200 +msgid "target_role" +msgstr "대상롤" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "스키마이름" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "grant_또는_revoke_내용" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "grant_또는_revoke_내용에 사용되는 구문:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "롤이름" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "표현식" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "도메인_제약조건" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "제약조건_이름" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "새제약조건_이름" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "새버전" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "맴버_객체" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "맴버_객체 사용법:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "객체이름" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "집계함수이름" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "기존자료형" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "대상자료형" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "함수이름" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "연산자이름" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "왼쪽인자_자료형" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "오른쪽인자_자료형" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "색인방법" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "프로시져_이름" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "루틴_이름" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "자료형이름" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "언어_이름" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "집계함수_식별구문 사용법:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "핸들러_함수" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "유효성검사_함수" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "동작" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "칼럼이름" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "새칼럼이름" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "동작 사용법:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "자료형" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "collation" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "칼럼_제약조건" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "정수" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "속성_옵션" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "테이블_제약조건" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "트리거이름" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "상위_테이블" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "확장모듈이름" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "실행비용" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "반환자료수" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "지원_함수" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "롤_명세" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "사용자이름" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "롤_명세 사용법:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "그룹이름" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "테이블스페이스이름" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "인덱스이름" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "스토리지_매개변수" + +#: sql_help.c:607 +msgid "column_number" +msgstr "칼럼번호" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "대형_객체_oid" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "압축_방법" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "새_접근_방법" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "join_proc" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "전략_번호" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "연산자자료형" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "정렬_가족_이름" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "지원_번호" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "인자자료형" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "테이블_이름" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "using_expression" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "체크_표현식" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "발행_객체" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "발행_매개변수" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "발행_객체 사용법:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "암호" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "타임스탬프" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "데이터베이스_이름" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "증가값" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "최소값" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "최대값" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "시작" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "재시작" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "캐쉬" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "새대상" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "접속정보" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "발행_이름" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "발행_옵션" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "새로고침_옵션" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "구독_매개변수" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "skip_option" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "파티션_이름" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "파티션_범위_정의" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "시퀀스_옵션" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "시퀀스_옵션" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "색인을_사용하는_테이블_제약조건" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "rewrite_룰_이름" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "파티션_범위_정의 사용법:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "파티션_범위_표현식" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "숫자" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "칼럼_제약조건 사용법:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "초기값_표현식" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "생성_표현식" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "색인_매개변수" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "참조테이블" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "참조칼럼" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "참조_방식" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "테이블_제약조건 사용법:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "exclude_요소" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "연산자" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "범위한정구문" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "색인을_사용하는_테이블_제약조건 사용법:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "UNIQUE, PRIMARY KEY, EXCLUDE 제약조건에서 쓰는 색인_매개변수 사용법:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "EXCLUDE 제약조건에서 쓰는 exclude_요소 사용법:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "연산자클래스" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "FOREIGN KEY/REFERENCES 제약조건에서 쓰는 참조_방식 사용법:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "테이블스페이스_옵션" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "토큰_종류" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "사전이름" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "옛사전" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "새사전" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "속성이름" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "새속성이름" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "새_enum_값" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "옆_enum_값" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "기존_enum_값" + +#: sql_help.c:1589 +msgid "property" +msgstr "속성" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "서버이름" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "뷰_옵션이름" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "뷰_옵션_값" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "테이블과_칼럼" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "옵션 사용법:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "불린" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "테이블과_칼럼 사용법:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "트랜잭션모드" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "트랜잭션모드 사용법:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "인자" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "릴레이션이름" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "도메인이름" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "정책이름" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "룰이름" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "문자열_리터럴" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "트랜잭션_id" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "파일이름" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "명령어" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "조건" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "쿼리문" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "입출력양식이름" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "구분문자" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "널문자열" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "인용부호" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "이스케이프 문자" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "인코딩이름" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "접근_방법_종류" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "인자자료형" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "sfunc" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "state_data_type" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "state_data_size" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "ffunc" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "combinefunc" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "serialfunc" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "deserialfunc" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "initial_condition" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "msfunc" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "minvfunc" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "mstate_data_type" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "mstate_data_size" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "mffunc" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "minitial_condition" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "정렬연산자" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "또는 옛날 구문" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "기본자료형" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "로케일" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "제공자" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "버전" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "기존_collation" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "원래인코딩" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "대상인코딩" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "템플릿" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "인코딩" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "전략번호" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "icu_로케일" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "로케일_제공자" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "collation_version" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "제약조건" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "제약조건 사용법:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "이벤트" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "필터_변수" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "필터_값" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "칼럼_제약조건 사용법:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "rettype" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "칼럼_자료형" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "함수정의" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "오브젝트파일" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "연결할_함수명" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "sql_본문" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "색인방법" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "opclass_매개변수" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "호출_핸들러" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "인라인_핸들러" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "구문검사함수" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "family_name" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "스토리지_유형" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "이벤트 사용법:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "스키마_요소" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "서버_종류" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "서버_버전" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "fdw_이름" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "통계정보_이름" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "통계정보_종류" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "구독_이름" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "원본테이블" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "LIKE구문옵션" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "LIKE구문옵션 사용법:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "디렉터리" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "구문분석기_이름" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "원본_설정" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "시작_함수" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "gettoken함수" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "종료_함수" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "lextypes함수" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "headline함수" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "init함수" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "lexize함수" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "sql에서_언어로_바꿀때쓸_함수이름" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "언어에서_sql로_바꿀때쓸_함수이름" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "참조된_테이블_이름" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "전달_릴레이션_이름" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "인자들" + +#: sql_help.c:3170 +msgid "label" +msgstr "enum요소" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "subtype" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "subtype_operator_class" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "canonical_function" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "subtype_diff_function" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "다중범위_자료형_이름" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "입력함수" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "출력함수" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "받는함수" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "주는함수" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "type_modifier_input_function" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "type_modifier_output_function" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "분석함수" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "구독_함수" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "내부길이" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "정렬" + +#: sql_help.c:3189 +msgid "storage" +msgstr "스토리지" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "like_type" + +#: sql_help.c:3191 +msgid "category" +msgstr "category" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "preferred" + +#: sql_help.c:3193 +msgid "default" +msgstr "기본값" + +#: sql_help.c:3194 +msgid "element" +msgstr "요소" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "구분자" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "collatable" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "with절_쿼리" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "별칭" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "from절_항목" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "커서이름" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "출력표현식" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "출력_이름" + +#: sql_help.c:3316 +msgid "code" +msgstr "코드" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "매개변수" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "명령구문" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "방향" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "방향 사용법:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "출력개수" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "시퀀스이름" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "인자이름" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "인자자료형" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "큰개체_oid" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "원격_스키마" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "로컬_스키마" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "충돌_대상" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "충돌_작업" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "충돌_대상 사용법:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "인덱스칼럼이름" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "인덱스표현식" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "부분인덱스식" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "충돌_작업 사용법:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "서브셀렉트" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "채널" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "잠금모드" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "잠금모드 사용법:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "대상_테이블_이름" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "대상_별칭" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "데이터_소스" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "조인_조건" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "when절" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "데이터_소스 사용법:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "원본_테이블_이름" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "소스_쿼리" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "소스_별칭" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "when절 사용법:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "merge_update" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "merge_delete" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "merge_insert" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "merge_insert 사용법:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "merge_update 사용법:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "merge_delete 사용법:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "payload" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "기존롤" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "새롤" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "savepoint_name" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "grouping_element" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "윈도우이름" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "원도우정의" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "select" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "from절_항목 사용법:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "칼럼별칭" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "표본추출방법" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "seed" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "with절_쿼리_이름" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "칼럼정의" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "조인_종류" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "조인_칼럼" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "조인_별칭" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "grouping_element 사용법:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "with절_쿼리 사용법:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "값" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "update" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "search_seq_col_name" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "cycle_mark_col_name" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "cycle_mark_value" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "cycle_mark_default" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "cycle_path_col_name" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "새테이블" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "스냅샷_id" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "정렬_표현식" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "현재 트랜잭션 중지함" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "집계함수 정보 바꾸기" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "collation 정의 바꾸기" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "문자코드 변환규칙(conversion) 정보 바꾸기" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "데이터베이스 변경" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "기본 접근 권한 정의" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "도메인 정보 바꾸기" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "트리거 정보 바꾸기" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "확장모듈 정의 바꾸기" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "외부 데이터 래퍼 정의 바꾸기" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "외부 테이블 정의 바꾸기" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "함수 정보 바꾸기" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "롤 이름이나 맴버쉽 바꾸기" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "인덱스 정의 바꾸기" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "procedural language 정보 바꾸기" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "대형 객체 정의 바꾸기" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "materialized 뷰 정의 바꾸기" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "연산자 정의 바꾸기" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "연산자 클래스 정보 바꾸기" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "연산자 부류의 정의 바꾸기" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "로우 단위 보안 정책의 정의 바꾸기" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "프로시져 정의 바꾸기" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "발행 정보 바꾸기" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "데이터베이스 롤 변경" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "루틴 정의 바꾸기" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "룰 정의 바꾸기" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "스키마 이름 바꾸기" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "시퀀스 정보 바꾸기" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "외부 서버 정의 바꾸기" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "확장 통계정보 객체 정의 바꾸기" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "구독 정보 바꾸기" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "서버 환경 설정 매개 변수 바꾸기" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "테이블 정보 바꾸기" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "테이블스페이스 정의 바꾸기" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "텍스트 검색 구성 정의 바꾸기" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "텍스트 검색 사전 정의 바꾸기" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "텍스트 검색 파서 정의 바꾸기" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "텍스트 검색 템플릿 정의 바꾸기" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "트리거 정보 바꾸기" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "자료형 정의 바꾸기" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "사용자 매핑 정의 바꾸기" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "뷰 정의 바꾸기" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "데이터베이스 사용 통계 정보를 갱신함" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "트랜잭션 블럭을 시작함" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "프로시져 호출" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "트랜잭션 로그를 강제로 체크포인트 함" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "커서 닫기" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "지정한 인덱스 기준으로 테이블 자료를 다시 저장함" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "해당 개체의 코멘트를 지정하거나 수정함" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "현재 트랜잭션 commit" + +#: sql_help.c:5434 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "two-phase 커밋을 위해 먼저 준비된 트랜잭션을 커밋하세요." + +#: sql_help.c:5440 +msgid "copy data between a file and a table" +msgstr "테이블과 파일 사이 자료를 복사함" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "새 접속 방법 정의" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "새 집계합수 만들기" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "새 형변환자 만들기" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "새 collation 만들기" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "새 문자코드변환규칙(conversion) 만들기" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "데이터베이스 생성" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "새 도메인 만들기" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "새 이벤트 트리거 만들기" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "확장 모듈 설치" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "새 외부 데이터 래퍼 정의" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "새 외부 테이블 정의" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "새 함수 만들기" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "새 데이터베이스 롤 만들기" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "새 인덱스 만들기" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "새 프로시주얼 언어 만들기" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "새 materialized 뷰 만들기" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "새 연산자 만들기" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "새 연잔자 클래스 만들기" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "새 연산자 부류 만들기" + +#: sql_help.c:5560 +msgid "define a new row-level security policy for a table" +msgstr "특정 테이블에 로우 단위 보안 정책 정의" + +#: sql_help.c:5566 +msgid "define a new procedure" +msgstr "새 프로시져 만들기" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "새 발행 만들기" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "새 룰(rule) 만들기" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "새 스키마(schema) 만들기" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "새 시퀀스 만들기" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "새 외부 서버 정의" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "새 확장 통계정보 만들기" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "새 구독 만들기" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "새 테이블 만들기" + +#: sql_help.c:5626 sql_help.c:6148 +msgid "define a new table from the results of a query" +msgstr "쿼리 결과를 새 테이블로 만들기" + +#: sql_help.c:5632 +msgid "define a new tablespace" +msgstr "새 테이블스페이스 만들기" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "새 텍스트 검색 구성 정의" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "새 텍스트 검색 사전 정의" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "새 텍스트 검색 파서 정의" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "새 텍스트 검색 템플릿 정의" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "새 transform 만들기" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "새 트리거 만들기" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "새 자료형 만들기" + +#: sql_help.c:5686 +msgid "define a new mapping of a user to a foreign server" +msgstr "사용자와 외부 서버 간의 새 매핑 정의" + +#: sql_help.c:5692 +msgid "define a new view" +msgstr "새 view 만들기" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "준비된 구문(prepared statement) 지우기" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "커서 지정" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "테이블의 자료 삭제" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "세션 상태 삭제" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "임의 코드 블록 실행" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "접근 방법 삭제" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "집계 함수 삭제" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "형변환자 삭제" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "collation 삭제" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "문자코드 변환규칙(conversion) 삭제" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "데이터베이스 삭제" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "도메인 삭제" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "이벤트 트리거 삭제" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "확장 모듈 삭제" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "외부 데이터 래퍼 제거" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "외부 테이블 삭제" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "함수 삭제" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "데이터베이스 롤 삭제" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "인덱스 삭제" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "프로시주얼 언어 삭제" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "materialized 뷰 삭제" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "연산자 삭제" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "연산자 클래스 삭제" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "연산자 부류 삭제" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "데이터베이스 롤로 권한이 부여된 데이터베이스 개체들을 삭제하세요" + +#: sql_help.c:5848 +msgid "remove a row-level security policy from a table" +msgstr "해당 테이블에 정의된 로우 단위 보안 정책 삭제" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "프로시져 삭제" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "발행 삭제" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "루틴 삭제" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "룰(rule) 삭제" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "스키마(schema) 삭제" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "시퀀스 삭제" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "외부 서버 설명자 제거" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "확장 통계정보 삭제" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "구독 삭제" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "테이블 삭제" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "테이블스페이스 삭제" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "텍스트 검색 구성 제거" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "텍스트 검색 사전 제거" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "텍스트 검색 파서 제거" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "텍스트 검색 템플릿 제거" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "transform 삭제" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "트리거 삭제" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "자료형 삭제" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "외부 서버에 대한 사용자 매핑 제거" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "뷰(view) 삭제" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "준비된 구문(prepared statement) 실행" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "쿼리 실행계획 보기" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "해당 커서에서 자료 뽑기" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "액세스 권한 지정하기" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "외부 서버로부터 테이블 정의 가져오기" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "테이블 자료 삽입" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "특정 서버 메시지 수신함" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "공유 라이브러리 파일 로드" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "테이블 잠금" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "조건부 테이블 insert, update, delete" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "커서 위치 옮기기" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "특정 서버 메시지 발생" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "준비된 구문(prepared statement) 만들기" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "two-phase 커밋을 위해 현재 트랜잭션을 준비함" + +#: sql_help.c:6076 +msgid "change the ownership of database objects owned by a database role" +msgstr "데이터베이스 롤로 권한이 부여된 데이터베이스 개체들의 소유주 바꾸기" + +#: sql_help.c:6082 +msgid "replace the contents of a materialized view" +msgstr "구체화된 뷰의 내용 수정" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "인덱스 다시 만들기" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "이전 정의된 savepoint를 파기함" + +#: sql_help.c:6100 +msgid "restore the value of a run-time parameter to the default value" +msgstr "실시간 환경 변수값을 초기값으로 다시 지정" + +#: sql_help.c:6106 +msgid "remove access privileges" +msgstr "액세스 권한 해제하기" + +#: sql_help.c:6118 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "two-phase 커밋을 위해 먼저 준비되었던 트랜잭션 실행취소하기" + +#: sql_help.c:6124 +msgid "roll back to a savepoint" +msgstr "savepoint 파기하기" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "현재 트랜잭션에서 새로운 savepoint 만들기" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "해당 개체에 보안 라벨을 정의하거나 변경" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "테이블이나 뷰의 자료를 출력" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "실시간 환경 변수값 바꾸기" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "현재 트랜잭션에서 제약조건 설정" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "현재 세션의 현재 사용자 식별자를 지정" + +#: sql_help.c:6172 +msgid "" +"set the session user identifier and the current user identifier of the " +"current session" +msgstr "현재 세션의 사용자 인증을 지정함 - 사용자 지정" + +#: sql_help.c:6178 +msgid "set the characteristics of the current transaction" +msgstr "현재 트랜잭션의 성질을 지정함" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "실시간 환경 변수값들을 보여줌" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "하나 또는 지정한 여러개의 테이블에서 모든 자료 지움" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "특정 서버 메시지 수신 기능 끔" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "테이블 자료 갱신" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "물리적인 자료 정리 작업 - 쓰레기값 청소" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "compute a set of rows" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 옵션은 비대화형 모드에서만 사용할 수 있음" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "\"%s\" 잠금파일을 열 수 없음: %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"도움말을 보려면 \"help\"를 입력하십시오.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "출력 매개 변수 \"%s\" 지정할 수 없음" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "자세한 사항은 \"%s --help\" 명령으로 살펴보세요." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "추가 명령행 인자 \"%s\" 무시됨" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "실행 가능한 프로그램을 찾을 수 없음" + +#: tab-complete.c:5955 +#, 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:419 +#, 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..c2ab43f --- /dev/null +++ b/src/bin/psql/po/ru.po @@ -0,0 +1,7067 @@ +# 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 , 2001-2005. +# Oleg Bartunov , 2004-2005. +# Sergey Burladyan , 2012. +# Alexander Lakhin , 2012-2017, 2018, 2019, 2020, 2021, 2022, 2023. +# Maxim Yablokov , 2021. +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL current)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-02-03 15:08+0300\n" +"PO-Revision-Date: 2023-02-03 15:12+0300\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \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:276 +#, c-format +msgid "error: " +msgstr "ошибка: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "предупреждение: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "подробности: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "подсказка: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "не удалось определить текущий каталог: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "неверный исполняемый файл \"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "не удалось прочитать исполняемый файл \"%s\"" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "не удалось найти запускаемый файл \"%s\"" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "не удалось перейти в каталог \"%s\": %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "не удалось прочитать символическую ссылку \"%s\": %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "ошибка в %s(): %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Сигнал отмены отправлен\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "Отправить сигнал отмены не удалось: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu строка)" +msgstr[1] "(%lu строки)" +msgstr[2] "(%lu строк)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Прервано\n" + +#: ../../fe_utils/print.c:3173 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "" +"Ошибка добавления заголовка таблицы: превышен предел числа столбцов (%d).\n" + +#: ../../fe_utils/print.c:3213 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "" +"Ошибка добавления ячейки в таблицу: превышен предел числа ячеек (%d).\n" + +#: ../../fe_utils/print.c:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "неверный формат вывода (внутренняя ошибка): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "рекурсивное расширение переменной \"%s\" пропускается" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "найти локального пользователя по идентификатору (%d) не удалось: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "локальный пользователь с ID %d не существует" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "неверная команда \\%s" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "Введите \\? для получения справки." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: лишний аргумент \"%s\" пропущен" + +#: command.c:304 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "" +"команда \\%s игнорируется; добавьте \\endif или нажмите Ctrl-C для " +"завершения текущего блока \\if" + +#: command.c:573 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "не удалось получить домашний каталог пользователя c ид. %ld: %s" + +#: command.c:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: не удалось перейти в каталог \"%s\": %m" + +#: command.c:617 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "В данный момент вы не подключены к базе данных.\n" + +#: command.c:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "нет буфера запросов" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "неверный номер строки: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "Изменений нет" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "" +"%s: неверное название кодировки символов или не найдена процедура " +"перекодировки" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "Ошибки не было." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: отсутствует правая скобка" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "отсутствует необходимый аргумент \\%s" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif не может находиться после \\else" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif без соответствующего \\if" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else не может находиться после \\else" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else без соответствующего \\if" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif без соответствующего \\if" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "Буфер запроса пуст." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Введите новый пароль для пользователя \"%s\": " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "Повторите его: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "Пароли не совпадают." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: не удалось прочитать значение переменной" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "Буфер запроса сброшен (очищен)." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "История записана в файл \"%s\".\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: имя переменной окружения не может содержать знак \"=\"" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "требуется имя функции" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "требуется имя представления" + +#: command.c:2593 +msgid "Timing is on." +msgstr "Секундомер включён." + +#: command.c:2595 +msgid "Timing is off." +msgstr "Секундомер выключен." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Пароль: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Пароль пользователя %s: " + +#: command.c:3168 +#, c-format +msgid "" +"Do not give user, host, or port separately when using a connection string" +msgstr "" +"Не указывайте пользователя, сервер или порт отдельно, когда используете " +"строку подключения" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "" +"Нет подключения к базе, из которого можно было бы использовать параметры" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "Сохранено предыдущее подключение" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Вы подключены к базе данных \"%s\" как пользователь \"%s\".\n" + +#: command.c:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, сервер %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "SSL-соединение (протокол: %s, шифр: %s, сжатие: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "неизвестно" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "выкл." + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "вкл." + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "Соединение зашифровано GSSAPI\n" + +#: command.c:3717 +#, 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:3822 +#, c-format +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number" +msgstr "" +"в переменной окружения PSQL_EDITOR_LINENUMBER_ARG должен быть указан номер " +"строки" + +#: command.c:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "не удалось запустить редактор \"%s\"" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "не удалось запустить /bin/sh" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "не удалось найти временный каталог: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "не удалось открыть временный файл \"%s\": %m" + +#: command.c:4266 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "" +"\\pset: неоднозначному сокращению \"%s\" соответствует и \"%s\", и \"%s\"" + +#: command.c:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: допустимые стили линий: ascii, old-ascii, unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: допустимые стили Unicode-линий границ: single, double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: допустимые стили Unicode-линий столбцов: single, double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: допустимые стили Unicode-линий заголовков: single, double" + +#: command.c:4393 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: символ csv_fieldsep должен быть однобайтовым" + +#: command.c:4398 +#, c-format +msgid "" +"\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage " +"return" +msgstr "" +"\\pset: в качестве csv_fieldsep нельзя выбрать символ кавычек, новой строки " +"или возврата каретки" + +#: command.c:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "неизвестный параметр \\pset: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "Стиль границ: %d.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "Ширина вывода сброшена.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "Ширина вывода: %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Расширенный вывод включён.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "Расширенный вывод применяется автоматически.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Расширенный вывод выключен.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "Разделитель полей для CSV: \"%s\".\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Разделитель полей - нулевой байт.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Разделитель полей: \"%s\".\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "Строка итогов включена.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "Строка итогов выключена.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "Формат вывода: %s.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "Установлен стиль линий: %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null выводится как: \"%s\".\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "Локализованный вывод чисел включён.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "Локализованный вывод чисел выключен.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Постраничник используется для вывода длинного текста.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "Постраничник используется всегда.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "Постраничник выключен.\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Разделитель записей - нулевой байт.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "Разделитель записей: <новая строка>.\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Разделитель записей: \"%s\".\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Атрибуты HTML-таблицы: \"%s\".\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Атрибуты HTML-таблицы не заданы.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Заголовок: \"%s\".\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "Заголовок не задан.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "Режим вывода только кортежей включён.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "Режим вывода только кортежей выключен.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Стиль Unicode-линий границ: \"%s\".\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Стиль Unicode-линий столбцов: \"%s\".\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Стиль Unicode-линий границ: \"%s\".\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: ошибка" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch нельзя использовать с пустым запросом" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "не удалось установить таймер: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (обновление: %g с)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (обновление: %g с)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "сбой при ожидании сигналов: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* ЗАПРОС *********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\" — не представление" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "не удалось разобрать массив reloptions" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "экранирование строк не работает без подключения к БД" + +#: common.c:207 +#, c-format +msgid "shell command argument contains a newline or carriage return: \"%s\"" +msgstr "" +"аргумент команды оболочки содержит символ новой строки или перевода каретки: " +"\"%s\"" + +#: common.c:311 +#, c-format +msgid "connection to server was lost" +msgstr "подключение к серверу было потеряно" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Подключение к серверу потеряно. Попытка восстановления " + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "неудачна.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "удачна.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "неожиданное значение PQresultStatus: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Время: %.3f мс\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Время: %.3f мс (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Время: %.3f мс (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, c-format +msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" +msgstr "Время: %.3f мс (%.0f д. %02d:%02d:%06.3f)\n" + +#: common.c:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "В данный момент вы не подключены к базе данных." + +#: common.c:654 +#, 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:657 +#, c-format +msgid "" +"Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "" +"Получено асинхронное уведомление \"%s\" от серверного процесса с PID %d.\n" + +#: common.c:688 +#, c-format +msgid "could not print result table: %m" +msgstr "не удалось вывести таблицу результатов: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "сервер не возвратил строк для \\gset" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "сервер возвратил больше одной строки для \\gset" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "попытка выполнить \\gset со специальной переменной \"%s\" игнорируется" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "ОПЕРАТОР: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "неожиданное состояние транзакции (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "Столбец" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Тип" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "прерывание из-за ошибки чтения" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Схема" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Имя" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Тип данных результата" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Типы данных аргументов" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Описание" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Список агрегатных функций" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "Сервер (версия %s) не поддерживает методы доступа." + +#: describe.c:168 +msgid "Index" +msgstr "Индекс" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Таблица" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Обработчик" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Список методов доступа" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Владелец" + +#: describe.c:231 +msgid "Location" +msgstr "Расположение" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Параметры" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Размер" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Список табличных пространств" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df принимает в качестве параметров только [anptwS+]" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "агр." + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "оконная" + +#: describe.c:356 +msgid "proc" +msgstr "проц." + +# well-spelled: функ +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "функ." + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "триггерная" + +#: describe.c:386 +msgid "immutable" +msgstr "постоянная" + +#: describe.c:387 +msgid "stable" +msgstr "стабильная" + +#: describe.c:388 +msgid "volatile" +msgstr "изменчивая" + +#: describe.c:389 +msgid "Volatility" +msgstr "Изменчивость" + +#: describe.c:397 +msgid "restricted" +msgstr "ограниченная" + +#: describe.c:398 +msgid "safe" +msgstr "безопасная" + +#: describe.c:399 +msgid "unsafe" +msgstr "небезопасная" + +#: describe.c:400 +msgid "Parallel" +msgstr "Параллельность" + +#: describe.c:405 +msgid "definer" +msgstr "определившего" + +#: describe.c:406 +msgid "invoker" +msgstr "вызывающего" + +#: describe.c:407 +msgid "Security" +msgstr "Безопасность" + +#: describe.c:412 +msgid "Language" +msgstr "Язык" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Исходный код" + +#: describe.c:594 +msgid "List of functions" +msgstr "Список функций" + +#: describe.c:657 +msgid "Internal name" +msgstr "Внутреннее имя" + +#: describe.c:659 +msgid "Elements" +msgstr "Элементы" + +#: describe.c:711 +msgid "List of data types" +msgstr "Список типов данных" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Тип левого аргумента" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Тип правого аргумента" + +#: describe.c:816 +msgid "Result type" +msgstr "Результирующий тип" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Функция" + +#: describe.c:902 +msgid "List of operators" +msgstr "Список операторов" + +#: describe.c:938 +msgid "Encoding" +msgstr "Кодировка" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "LC_COLLATE" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "LC_CTYPE" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "локаль ICU" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Провайдер локали" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Табл. пространство" + +#: describe.c:990 +msgid "List of databases" +msgstr "Список баз данных" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "таблица" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "представление" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "материализованное представление" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "последовательность" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "сторонняя таблица" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "секционированная таблица" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Права для столбцов" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Политики" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Права доступа" + +#: describe.c:1188 +msgid "function" +msgstr "функция" + +#: describe.c:1190 +msgid "type" +msgstr "тип" + +#: describe.c:1192 +msgid "schema" +msgstr "схема" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Права доступа по умолчанию" + +#: describe.c:1259 +msgid "Object" +msgstr "Объект" + +#: describe.c:1273 +msgid "table constraint" +msgstr "ограничение таблицы" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "ограничение домена" + +#: describe.c:1321 +msgid "operator class" +msgstr "класс операторов" + +#: describe.c:1345 +msgid "operator family" +msgstr "семейство операторов" + +#: describe.c:1368 +msgid "rule" +msgstr "правило" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Описание объекта" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "Отношение \"%s\" не найдено." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "Отношения не найдены." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "Отношение с OID %s не найдено." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "Начальное_значение" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Минимум" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Максимум" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Шаг" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "да" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "нет" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "Зацикливается?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Кешируется" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Владелец: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Последовательность для столбца идентификации: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Нежурналируемая последовательность \"%s.%s\"" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Последовательность \"%s.%s\"" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Нежурналируемая таблица \"%s.%s\"" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Таблица \"%s.%s\"" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Представление \"%s.%s\"" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Нежурналируемое материализованное представление \"%s.%s\"" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Материализованное представление \"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Нежурналируемый индекс \"%s.%s\"" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Индекс \"%s.%s\"" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Нежурналируемый секционированный индекс \"%s.%s\"" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Секционированный индекс \"%s.%s\"" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST-таблица \"%s.%s\"" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Составной тип \"%s.%s\"" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Сторонняя таблица \"%s.%s\"" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Нежурналируемая секционированная таблица \"%s.%s\"" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Секционированная таблица \"%s.%s\"" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Правило сортировки" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "Допустимость NULL" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "По умолчанию" + +#: describe.c:2029 +msgid "Key?" +msgstr "Ключевой?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Определение" + +# well-spelled: ОСД +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "Параметры ОСД" + +#: describe.c:2035 +msgid "Storage" +msgstr "Хранилище" + +#: describe.c:2037 +msgid "Compression" +msgstr "Сжатие" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Цель для статистики" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Секция: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Нет ограничения секции" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Ограничение секции: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Ключ разбиения: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Принадлежит таблице: \"%s.%s\"" + +#: describe.c:2309 +msgid "primary key, " +msgstr "первичный ключ, " + +#: describe.c:2312 +msgid "unique" +msgstr "уникальный" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " null не различаются" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "для таблицы \"%s.%s\"" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", предикат (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", кластеризованный" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", нерабочий" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", откладываемый" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", изначально отложенный" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", репликационный" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Индексы:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Ограничения-проверки:" + +# TO REWVIEW +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Ограничения внешнего ключа:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Ссылки извне:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Политики:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Политики (усиленная защита строк включена):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Политики (защита строк включена): (Нет)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Политики (усиленная защита строк включена): (Нет)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Политики (защита строк выключена):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Объекты статистики:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Правила:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Отключённые правила:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Правила, срабатывающие всегда:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Правила, срабатывающие только в реплике:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Публикации:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Определение представления:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Триггеры:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Отключённые пользовательские триггеры:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Отключённые внутренние триггеры:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Триггеры, срабатывающие всегда:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Триггеры, срабатывающие только в реплике:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Сервер: %s" + +# well-spelled: ОСД +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "Параметр ОСД: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Наследует" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Число секций: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "Число секций: %d (чтобы просмотреть их, введите \\d+)" + +#: describe.c:3424 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Дочерних таблиц: %d (чтобы просмотреть и их, воспользуйтесь \\d+)" + +#: describe.c:3431 +msgid "Child tables" +msgstr "Дочерние таблицы" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Секции" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Типизированная таблица типа: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Идентификация реплики" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Содержит OID: да" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Метод доступа: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", табл. пространство \"%s\"" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Список ролей" + +#: describe.c:3670 +msgid "Role name" +msgstr "Имя роли" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Атрибуты" + +#: describe.c:3673 +msgid "Member of" +msgstr "Член ролей" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Суперпользователь" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "Не наследуется" + +#: describe.c:3690 +msgid "Create role" +msgstr "Создаёт роли" + +#: describe.c:3693 +msgid "Create DB" +msgstr "Создаёт БД" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "Вход запрещён" + +#: describe.c:3699 +msgid "Replication" +msgstr "Репликация" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Пропускать RLS" + +#: describe.c:3712 +msgid "No connections" +msgstr "Нет подключений" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d подключение" +msgstr[1] "%d подключения" +msgstr[2] "%d подключений" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Пароль действует до " + +#: describe.c:3777 +msgid "Role" +msgstr "Роль" + +#: describe.c:3778 +msgid "Database" +msgstr "БД" + +#: describe.c:3779 +msgid "Settings" +msgstr "Параметры" + +#: describe.c:3803 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "Параметры для роли \"%s\" и базы данных \"%s\" не найдены." + +#: describe.c:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "Параметры для роли \"%s\" не найдены." + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "Никакие параметры не найдены." + +#: describe.c:3814 +msgid "List of settings" +msgstr "Список параметров" + +#: describe.c:3885 +msgid "index" +msgstr "индекс" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "TOAST-таблица" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "секционированный индекс" + +#: describe.c:3910 +msgid "permanent" +msgstr "постоянное" + +#: describe.c:3911 +msgid "temporary" +msgstr "временное" + +#: describe.c:3912 +msgid "unlogged" +msgstr "нежурналируемое" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Хранение" + +#: describe.c:3929 +msgid "Access method" +msgstr "Метод доступа" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Список отношений" + +#: describe.c:4063 +#, c-format +msgid "" +"The server (version %s) does not support declarative table partitioning." +msgstr "" +"Сервер (версия %s) не поддерживает декларативное секционирование таблиц." + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "Список секционированных индексов" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Список секционированных таблиц" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Список секционированных отношений" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Имя родителя" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Размер конечной секции" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Общий размер" + +#: describe.c:4258 +msgid "Trusted" +msgstr "Доверенный" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Внутренний язык" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Обработчик вызова" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Функция проверки" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Обработчик внедрённого кода" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Список языков" + +#: describe.c:4346 +msgid "Check" +msgstr "Проверка" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Список доменов" + +#: describe.c:4424 +msgid "Source" +msgstr "Источник" + +#: describe.c:4425 +msgid "Destination" +msgstr "Назначение" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "По умолчанию?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Список преобразований" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Параметр" + +#: describe.c:4498 +msgid "Value" +msgstr "Значение" + +#: describe.c:4505 +msgid "Context" +msgstr "Контекст" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Список параметров конфигурации" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Список изменённых параметров конфигурации" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "Сервер (версия %s) не поддерживает событийные триггеры." + +#: describe.c:4587 +msgid "Event" +msgstr "Событие" + +#: describe.c:4589 +msgid "enabled" +msgstr "включён" + +#: describe.c:4590 +msgid "replica" +msgstr "реплика" + +#: describe.c:4591 +msgid "always" +msgstr "всегда" + +#: describe.c:4592 +msgid "disabled" +msgstr "отключён" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Включён" + +#: describe.c:4595 +msgid "Tags" +msgstr "Теги" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Список событийных триггеров" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "Сервер (версия %s) не поддерживает расширенные статистики." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Зависимости" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Список расширенных статистик" + +#: describe.c:4745 +msgid "Source type" +msgstr "Исходный тип" + +#: describe.c:4746 +msgid "Target type" +msgstr "Целевой тип" + +#: describe.c:4770 +msgid "in assignment" +msgstr "в присваивании" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Неявное?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Список приведений типов" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Провайдер" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Детерминированное?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Список правил сортировки" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Список схем" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Список анализаторов текстового поиска" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "Анализатор текстового поиска \"%s\" не найден." + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "Никакие анализаторы текстового поиска не найдены." + +#: describe.c:5245 +msgid "Start parse" +msgstr "Начало разбора" + +#: describe.c:5246 +msgid "Method" +msgstr "Метод" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Получение следующего фрагмента" + +#: describe.c:5252 +msgid "End parse" +msgstr "Окончание разбора" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Получение выдержки" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Получение типов фрагментов" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Анализатор текстового поиска \"%s.%s\"" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Анализатор текстового поиска \"%s\"" + +#: describe.c:5289 +msgid "Token name" +msgstr "Имя фрагмента" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Типы фрагментов для анализатора \"%s.%s\"" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Типы фрагментов для анализатора \"%s\"" + +#: describe.c:5350 +msgid "Template" +msgstr "Шаблон" + +#: describe.c:5351 +msgid "Init options" +msgstr "Параметры инициализации" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Список словарей текстового поиска" + +#: describe.c:5411 +msgid "Init" +msgstr "Инициализация" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Выделение лексем" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Список шаблонов текстового поиска" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Список конфигураций текстового поиска" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "Конфигурация текстового поиска \"%s\" не найдена." + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "Никакие конфигурации текстового поиска не найдены." + +#: describe.c:5619 +msgid "Token" +msgstr "Фрагмент" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Словари" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Конфигурация текстового поиска \"%s.%s\"" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Конфигурация текстового поиска \"%s\"" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Анализатор: \"%s.%s\"" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Анализатор: \"%s\"" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Список обёрток сторонних данных" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Обёртка сторонних данных" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Версия" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Список сторонних серверов" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Сервер" + +#: describe.c:5825 +msgid "User name" +msgstr "Имя пользователя" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Список сопоставлений пользователей" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Список сторонних таблиц" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Список установленных расширений" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "Расширение \"%s\" не найдено." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "Никакие расширения не найдены." + +#: describe.c:6075 +msgid "Object description" +msgstr "Описание объекта" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Объекты в расширении \"%s\"" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "неверное полное имя (слишком много компонентов): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "ссылки между базами не реализованы: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "Сервер (версия %s) не поддерживает публикации." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Все таблицы" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Добавления" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Изменения" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Удаления" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Опустошения" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Через корень" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Список публикаций" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "Публикация \"%s\" не найдена." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "Никакие публикации не найдены." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Публикация %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Таблицы:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Таблицы из схем:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "Сервер (версия %s) не поддерживает подписки." + +#: describe.c:6497 +msgid "Publication" +msgstr "Публикация" + +#: describe.c:6506 +msgid "Binary" +msgstr "Бинарная" + +#: describe.c:6507 +msgid "Streaming" +msgstr "Потоковая" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Двухфазная фиксация" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Отключается при ошибке" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Синхронная фиксация" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Строка подключения" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Пропустить LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Список подписок" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "МД" + +#: describe.c:6617 +msgid "Input type" +msgstr "Входной тип" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Тип хранения" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Класс операторов" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Семейство операторов" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Список классов операторов" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Применимые типы" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Список семейств операторов" + +#: describe.c:6807 +msgid "Operator" +msgstr "Оператор" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Стратегия" + +#: describe.c:6809 +msgid "ordering" +msgstr "сортировка" + +#: describe.c:6810 +msgid "search" +msgstr "поиск" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Назначение" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "Семейство для сортировки" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Список операторов из семейств операторов" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Зарегистрированный левый тип" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Зарегистрированный правый тип" + +#: describe.c:6904 +msgid "Number" +msgstr "Номер" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Список опорных функций из семейств операторов" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "Большие объекты" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql - это интерактивный терминал PostgreSQL.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Использование:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [ПАРАМЕТР]... [БД [ПОЛЬЗОВАТЕЛЬ]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Общие параметры:\n" + +#: help.c:84 +msgid "" +" -c, --command=COMMAND run only single command (SQL or internal) and " +"exit\n" +msgstr "" +" -c, --command=КОМАНДА выполнить одну команду (SQL или внутреннюю) и " +"выйти\n" + +#: help.c:85 +#, c-format +msgid "" +" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr "" +" -d, --dbname=БД имя подключаемой базы данных (по умолчанию " +"\"%s\")\n" + +#: help.c:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=ИМЯ_ФАЙЛА выполнить команды из файла и выйти\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list вывести список баз данных и выйти\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version показать версию и выйти\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr "" +" -X, --no-psqlrc игнорировать файл параметров запуска (~/.psqlrc)\n" + +#: help.c:94 +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-" +"interactive)\n" +msgstr "" +" -1 (\"один\"), --single-transaction\n" +" выполнить как одну транзакцию\n" +" (в неинтерактивном режиме)\n" + +#: help.c:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] показать эту справку и выйти\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands перечислить команды с \\ и выйти\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr "" +" --help=variables перечислить специальные переменные и выйти\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Параметры ввода/вывода:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all отображать все команды из скрипта\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors отображать команды с ошибками\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries отображать команды, отправляемые серверу\n" + +#: help.c:104 +msgid "" +" -E, --echo-hidden display queries that internal commands generate\n" +msgstr "" +" -E, --echo-hidden выводить запросы, порождённые внутренними " +"командами\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=ИМЯ_ФАЙЛА сохранять протокол работы в файл\n" + +#: help.c:106 +msgid "" +" -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline отключить редактор командной строки readline\n" + +#: help.c:107 +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr "" +" -o, --output=ИМЯ_ФАЙЛА направить результаты запроса в файл (или канал " +"|)\n" + +#: help.c:108 +msgid "" +" -q, --quiet run quietly (no messages, only query output)\n" +msgstr "" +" -q, --quiet показывать только результаты запросов, без " +"сообщений\n" + +#: help.c:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr "" +" -s, --single-step пошаговый режим (подтверждение каждого запроса)\n" + +#: help.c:110 +msgid "" +" -S, --single-line single-line mode (end of line terminates SQL " +"command)\n" +msgstr "" +" -S, --single-line однострочный режим (конец строки завершает " +"команду)\n" + +#: help.c:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Параметры вывода:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align режим вывода невыровненной таблицы\n" + +#: help.c:114 +msgid "" +" --csv CSV (Comma-Separated Values) table output mode\n" +msgstr "" +" --csv режим вывода в формате CSV (значения, " +"разделённые\n" +" запятыми)\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html вывод таблицы в формате HTML\n" + +#: help.c:119 +msgid "" +" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " +"command)\n" +msgstr "" +" -P, --pset=ПАР[=ЗНАЧ] определить параметр печати ПАР (с заданным " +"ЗНАЧЕНИЕМ)\n" +" (см. описание \\pset)\n" + +#: help.c:120 +msgid "" +" -R, --record-separator=STRING\n" +" record separator for unaligned output (default: " +"newline)\n" +msgstr "" +" -R, --record-separator=СТРОКА\n" +" разделитель записей при невыровненном выводе\n" +" (по умолчанию: новая строка)\n" + +#: help.c:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only выводить только кортежи\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded включить развёрнутый вывод таблицы\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Параметры подключения:\n" + +#: help.c:133 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory " +"(default: \"%s\")\n" +msgstr "" +" -h, --host=ИМЯ имя сервера баз данных или каталог сокетов\n" +" (по умолчанию: \"%s\")\n" + +#: help.c:134 +msgid "local socket" +msgstr "локальный сокет" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password не запрашивать пароль\n" + +#: help.c:143 +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password запрашивать пароль всегда (обычно не требуется)\n" + +#: help.c:145 +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:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Об ошибках сообщайте по адресу <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Домашняя страница %s: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "Общие\n" + +# skip-rule: copyright +#: help.c:192 +msgid "" +" \\copyright show PostgreSQL usage and distribution terms\n" +msgstr "" +" \\copyright условия использования и распространения " +"PostgreSQL\n" + +#: help.c:193 +msgid "" +" \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr "" +" \\crosstabview [СТОЛБЦЫ] выполнить запрос и вывести результат в " +"перекрёстном виде\n" + +#: help.c:194 +msgid "" +" \\errverbose show most recent error message at maximum " +"verbosity\n" +msgstr "" +" \\errverbose вывести максимально подробное сообщение о " +"последней ошибке\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(ПАРАМЕТРЫ)] [ФАЙЛ] выполнить запрос (и направить результат в файл\n" +" или канал |); \\g без аргументов равнозначно \";" +"\"\n" + +#: help.c:197 +msgid "" +" \\gdesc describe result of query, without executing it\n" +msgstr "" +" \\gdesc описать результат запроса, но не выполнять его\n" + +#: help.c:198 +msgid "" +" \\gexec execute query, then execute each value in its " +"result\n" +msgstr "" +" \\gexec выполнить запрос, а затем выполнить каждую строку " +"в результате\n" + +#: help.c:199 +msgid "" +" \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr "" +" \\gset [ПРЕФИКС] выполнить запрос и сохранить результат в " +"переменных\n" +" psql\n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr "" +" \\gx [(ПАРАМЕТРЫ)] [ФАЙЛ] то же, что \\g, но в режиме развёрнутого вывода\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q выйти из psql\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr "" +" \\watch [СЕК] повторять запрос в цикле через заданное число " +"секунд\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Справка\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] справка по командам psql c \\\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr "" +" \\? options справка по параметрам командной строки psql\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables справка по специальным переменным\n" + +#: help.c:210 +msgid "" +" \\h [NAME] help on syntax of SQL commands, * for all " +"commands\n" +msgstr "" +" \\h [ИМЯ] справка по заданному SQL-оператору; * - по всем\n" + +#: help.c:213 +msgid "Query Buffer\n" +msgstr "Буфер запроса\n" + +#: help.c:214 +msgid "" +" \\e [FILE] [LINE] edit the query buffer (or file) with external " +"editor\n" +msgstr "" +" \\e [ФАЙЛ] [СТРОКА] править буфер запроса (или файл) во внешнем " +"редакторе\n" + +#: help.c:215 +msgid "" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr "" +" \\ef [ФУНКЦИЯ [СТРОКА]] править определение функции во внешнем редакторе\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr "" +" \\ev [VIEWNAME [LINE]] править определение представления во внешнем " +"редакторе\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p вывести содержимое буфера запросов\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r очистить буфер запроса\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [ФАЙЛ] вывести историю или сохранить её в файл\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w ФАЙЛ записать буфер запроса в файл\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "Ввод/Вывод\n" + +#: help.c:226 +msgid "" +" \\copy ... perform SQL COPY with data stream to the client " +"host\n" +msgstr " \\copy ... выполнить SQL COPY на стороне клиента\n" + +#: help.c:227 +msgid "" +" \\echo [-n] [STRING] write string to standard output (-n for no " +"newline)\n" +msgstr "" +" \\echo [-n] [СТРОКА] записать строку в поток стандартного вывода\n" +" (-n отключает перевод строки)\n" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i ФАЙЛ выполнить команды из файла\n" + +#: help.c:229 +msgid "" +" \\ir FILE as \\i, but relative to location of current " +"script\n" +msgstr "" +" \\ir ФАЙЛ подобно \\i, но путь задаётся относительно\n" +" текущего скрипта\n" + +#: help.c:230 +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr "" +" \\o [ФАЙЛ] выводить все результаты запросов в файл или канал " +"|\n" + +#: help.c:231 +msgid "" +" \\qecho [-n] [STRING] write string to \\o output stream (-n for no " +"newline)\n" +msgstr "" +" \\qecho [-n] [СТРОКА] записать строку в выходной поток \\o\n" +" (-n отключает перевод строки)\n" + +#: help.c:232 +msgid "" +" \\warn [-n] [STRING] write string to standard error (-n for no " +"newline)\n" +msgstr "" +" \\warn [-n] [СТРОКА] записать строку в поток вывода ошибок\n" +" (-n отключает перевод строки)\n" + +#: help.c:235 +msgid "Conditional\n" +msgstr "Условия\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if ВЫРАЖЕНИЕ начало блока условия\n" + +#: help.c:237 +msgid "" +" \\elif EXPR alternative within current conditional block\n" +msgstr "" +" \\elif ВЫРАЖЕНИЕ альтернативная ветвь в текущем блоке условия\n" + +#: help.c:238 +msgid "" +" \\else final alternative within current conditional " +"block\n" +msgstr "" +" \\else окончательная ветвь в текущем блоке условия\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif конец блока условия\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Информационные\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr "" +" (дополнения: S = показывать системные объекты, + = дополнительные " +"подробности)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr "" +" \\d[S+] список таблиц, представлений и " +"последовательностей\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr "" +" \\d[S+] ИМЯ описание таблицы, представления, " +"последовательности\n" +" или индекса\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [МАСКА] список агрегатных функций\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [МАСКА] список методов доступа\n" + +# well-spelled: МСК +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [МСК_МД [МСК_ТИПА]] список классов операторов\n" + +# well-spelled: МСК +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [МСК_МД [МСК_ТИПА]] список семейств операторов\n" + +# well-spelled: МСК +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr "" +" \\dAo[+] [МСК_МД [МСК_СОП]] список операторов из семейств операторов\n" + +# well-spelled: МСК +#: help.c:251 +msgid "" +" \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [МСК_МД [МСК_СОП]] список опорных функций из семейств\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [МАСКА] список табличных пространств\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [МАСКА] список преобразований\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [МАСКА] список параметров конфигурации\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [МАСКА] список приведений типов\n" + +#: help.c:256 +msgid "" +" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr "" +" \\dd[S] [МАСКА] описания объектов, не выводимые в других режимах\n" + +#: help.c:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [МАСКА] список доменов\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [МАСКА] список прав по умолчанию\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [МАСКА] список сторонних таблиц\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [МАСКА] список сторонних серверов\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [МАСКА] список сторонних таблиц\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [МАСКА] список сопоставлений пользователей\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [МАСКА] список обёрток сторонних данных\n" + +# well-spelled: МСК, ФУНК +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] " +"functions\n" +msgstr "" +" \\df[anptw][S+] [МСК_ФУНК [МСК_ТИПА ...]]\n" +" список функций [только агрегатных/обычных/процедур/" +"триггеров/оконных]\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [МАСКА] список конфигураций текстового поиска\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [МАСКА] список словарей текстового поиска\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [МАСКА] список анализаторов текстового поиска\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [МАСКА] список шаблонов текстового поиска\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [МАСКА] список ролей\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [МАСКА] список индексов\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr "" +" \\dl[+] список больших объектов (то же, что и \\lo_list)\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [МАСКА] список языков процедур\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [МАСКА] список материализованных представлений\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [МАСКА] список схем\n" + +# well-spelled: МСК +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [МСК_ОП [МСК_ТИПА [МСК_ТИПА]]]\n" +" список операторов\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [МАСКА] список правил сортировки\n" + +#: help.c:279 +msgid "" +" \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr "" +" \\dp [МАСКА] список прав доступа к таблицам, представлениям и\n" +" последовательностям\n" + +#: help.c:280 +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:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr " \\drds [МСК_РОЛИ [МСК_БД]] список параметров роли на уровне БД\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [МАСКА] список публикаций для репликации\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [МАСКА] список подписок на репликацию\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [МАСКА] список последовательностей\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [МАСКА] список таблиц\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [МАСКА] список типов данных\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [МАСКА] список ролей\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [МАСКА] список представлений\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [МАСКА] список расширений\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [МАСКА] список расширенных статистик\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [МАСКА] список событийных триггеров\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [МАСКА] список баз данных\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] ИМЯ_ФУНКЦИИ показать определение функции\n" + +# well-spelled: ПРЕДСТ +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] ИМЯ_ПРЕДСТ показать определение представления\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [МАСКА] то же, что и \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "Большие объекты\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export OID_БО ФАЙЛ записать большой объект в файл\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import ФАЙЛ [КОММЕНТАРИЙ]\n" +" прочитать большой объект из файла\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] список больших объектов\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink OID_БО удалить большой объект\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Форматирование\n" + +#: help.c:307 +msgid "" +" \\a toggle between unaligned and aligned output mode\n" +msgstr "" +" \\a переключение режимов вывода:\n" +" неформатированный/выровненный\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr "" +" \\C [СТРОКА] задать заголовок таблицы или убрать, если не " +"задан\n" + +#: help.c:309 +msgid "" +" \\f [STRING] show or set field separator for unaligned query " +"output\n" +msgstr "" +" \\f [СТРОКА] показать или установить разделитель полей для\n" +" неформатированного вывода\n" + +#: help.c:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr "" +" \\H переключить режим вывода в HTML (текущий: %s)\n" + +#: help.c:312 +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:319 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] режим вывода только строк (сейчас: %s)\n" + +#: help.c:321 +msgid "" +" \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [СТРОКА] задать атрибуты для
или убрать, если не " +"заданы\n" + +#: help.c:322 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr "" +" \\x [on|off|auto] переключить режим расширенного вывода (сейчас: " +"%s)\n" + +#: help.c:323 +msgid "auto" +msgstr "auto" + +#: help.c:326 +msgid "Connection\n" +msgstr "Соединение\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo информация о текущем соединении\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [КОДИРОВКА] показать/установить клиентскую кодировку\n" + +#: help.c:336 +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [ИМЯ] безопасно сменить пароль пользователя\n" + +#: help.c:339 +msgid "Operating System\n" +msgstr "Операционная система\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [ПУТЬ] сменить текущий каталог\n" + +# well-spelled: ОКР +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv ПЕР_PSQL ПЕР_ОКР прочитать переменную окружения\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr "" +" \\setenv ИМЯ [ЗНАЧЕНИЕ] установить или сбросить переменную окружения\n" + +#: help.c:343 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] включить/выключить секундомер (сейчас: %s)\n" + +#: help.c:345 +msgid "" +" \\! [COMMAND] execute command in shell or start interactive " +"shell\n" +msgstr "" +" \\! [КОМАНДА] выполнить команду в командной оболочке\n" +" или запустить интерактивную оболочку\n" + +#: help.c:348 +msgid "Variables\n" +msgstr "Переменные\n" + +#: help.c:349 +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr "" +" \\prompt [ТЕКСТ] ИМЯ предложить пользователю задать внутреннюю " +"переменную\n" + +#: help.c:350 +msgid "" +" \\set [NAME [VALUE]] set internal variable, or list all if no " +"parameters\n" +msgstr "" +" \\set [ИМЯ [ЗНАЧЕНИЕ]] установить внутреннюю переменную или вывести все,\n" +" если имя не задано\n" + +#: help.c:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset ИМЯ сбросить (удалить) внутреннюю переменную\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"Список специальных переменных\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "Переменные psql:\n" + +#: help.c:394 +msgid "" +" psql --set=NAME=VALUE\n" +" or \\set NAME VALUE inside psql\n" +"\n" +msgstr "" +" psql --set=ИМЯ=ЗНАЧЕНИЕ\n" +" или \\set ИМЯ ЗНАЧЕНИЕ в приглашении psql\n" +"\n" + +#: help.c:396 +msgid "" +" AUTOCOMMIT\n" +" if set, successful SQL commands are automatically committed\n" +msgstr "" +" AUTOCOMMIT\n" +" если установлен, успешные SQL-команды фиксируются автоматически\n" + +#: help.c:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" имя текущей подключённой базы данных\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" текущая кодировка клиентского набора символов\n" + +#: help.c:411 +msgid "" +" ERROR\n" +" true if last query failed, else false\n" +msgstr "" +" ERROR\n" +" true в случае ошибки в последнем запросе, иначе — false\n" + +#: help.c:413 +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:415 +msgid "" +" HIDE_TABLEAM\n" +" if set, table access methods are not displayed\n" +msgstr "" +" HIDE_TABLEAM\n" +" если установлено, табличные методы доступа не выводятся\n" + +#: help.c:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" если установлено, методы сжатия не выводятся\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" управляет историей команд [ignorespace (игнорировать пробелы),\n" +" ignoredups (игнорировать дубли), ignoreboth (и то, и другое)]\n" + +#: help.c:421 +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr "" +" HISTFILE\n" +" имя файла, в котором будет сохраняться история команд\n" + +#: help.c:423 +msgid "" +" HISTSIZE\n" +" maximum number of commands to store in the command history\n" +msgstr "" +" HISTSIZE\n" +" максимальное число команд, сохраняемых в истории\n" + +#: help.c:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" сервер баз данных, к которому установлено подключение\n" + +#: help.c:427 +msgid "" +" IGNOREEOF\n" +" number of EOFs needed to terminate an interactive session\n" +msgstr "" +" IGNOREEOF\n" +" количество EOF для завершения интерактивного сеанса\n" + +#: help.c:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" значение последнего задействованного OID\n" + +#: help.c:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" останавливать выполнение пакета команд после ошибки\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" порт сервера для текущего соединения\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" устанавливает стандартное приглашение psql\n" + +#: help.c:442 +msgid "" +" PROMPT2\n" +" specifies the prompt used when a statement continues from a previous " +"line\n" +msgstr "" +" PROMPT2\n" +" устанавливает приглашение, которое выводится при переносе оператора\n" +" на новую строку\n" + +#: help.c:444 +msgid "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3\n" +" устанавливает приглашение для выполнения COPY ... FROM STDIN\n" + +#: help.c:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" выводить минимум сообщений (как и с параметром -q)\n" + +#: help.c:448 +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:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" выводить все результаты объединённых запросов (\\;), а не только " +"последнего\n" + +#: help.c:455 +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:457 +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:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" пошаговый режим (как и с параметром -s)\n" + +#: help.c:461 +msgid "" +" SQLSTATE\n" +" SQLSTATE of last query, or \"00000\" if no error\n" +msgstr "" +" SQLSTATE\n" +" SQLSTATE последнего запроса или \"00000\", если он выполнился без " +"ошибок\n" + +#: help.c:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" текущий пользователь, подключённый к БД\n" + +#: help.c:465 +msgid "" +" VERBOSITY\n" +" controls verbosity of error reports [default, verbose, terse, sqlstate]\n" +msgstr "" +" VERBOSITY\n" +" управляет детализацией отчётов об ошибках [default (по умолчанию),\n" +" verbose (подробно), terse (кратко), sqlstate (код состояния)]\n" + +#: help.c:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Параметры отображения:\n" + +#: help.c:474 +msgid "" +" psql --pset=NAME[=VALUE]\n" +" or \\pset NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" psql --pset=ИМЯ[=ЗНАЧЕНИЕ]\n" +" или \\pset ИМЯ [ЗНАЧЕНИЕ] в приглашении psql\n" +"\n" + +#: help.c:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" стиль границы (число)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" целевая ширина для формата с переносом\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (или x)\n" +" расширенный вывод [on (вкл.), off (выкл.), auto (авто)]\n" + +#: help.c:482 +#, c-format +msgid "" +" fieldsep\n" +" field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep\n" +" разделитель полей для неформатированного вывода (по умолчанию \"%s\")\n" + +#: help.c:485 +msgid "" +" fieldsep_zero\n" +" set field separator for unaligned output to a zero byte\n" +msgstr "" +" fieldsep_zero\n" +" устанавливает ноль разделителем полей при неформатированном выводе\n" + +#: help.c:487 +msgid "" +" footer\n" +" enable or disable display of the table footer [on, off]\n" +msgstr "" +" footer\n" +" включает или выключает вывод подписей таблицы [on (вкл.), off (выкл.)]\n" + +#: help.c:489 +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:491 +msgid "" +" linestyle\n" +" set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr "" +" linestyle\n" +" задаёт стиль рисования линий границы [ascii, old-ascii, unicode]\n" + +#: help.c:493 +msgid "" +" null\n" +" set the string to be printed in place of a null value\n" +msgstr "" +" null\n" +" устанавливает строку, выводимую вместо значения NULL\n" + +#: help.c:495 +msgid "" +" numericlocale\n" +" enable display of a locale-specific character to separate groups of " +"digits\n" +msgstr "" +" numericlocale\n" +" отключает вывод заданного локалью разделителя группы цифр\n" + +#: help.c:497 +msgid "" +" pager\n" +" control when an external pager is used [yes, no, always]\n" +msgstr "" +" pager\n" +" определяет, используется ли внешний постраничник\n" +" [yes (да), no (нет), always (всегда)]\n" + +#: help.c:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" разделитель записей (строк) при неформатированном выводе\n" + +#: help.c:501 +msgid "" +" recordsep_zero\n" +" set record separator for unaligned output to a zero byte\n" +msgstr "" +" recordsep_zero\n" +" устанавливает ноль разделителем записей при неформатированном выводе\n" + +#: help.c:503 +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:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" задаёт заголовок таблицы для последовательно печатаемых таблиц\n" + +#: help.c:508 +msgid "" +" tuples_only\n" +" if set, only actual table data is shown\n" +msgstr "" +" tuples_only\n" +" если установлено, выводятся только непосредственно табличные данные\n" + +#: help.c:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Переменные окружения:\n" + +#: help.c:519 +msgid "" +" NAME=VALUE [NAME=VALUE] psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" ИМЯ=ЗНАЧЕНИЕ [ИМЯ=ЗНАЧЕНИЕ] psql ...\n" +" или \\setenv ИМЯ [ЗНАЧЕНИЕ] в приглашении psql\n" +"\n" + +#: help.c:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" число столбцов для форматирования с переносом\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" синоним параметра подключения application_name\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" синоним параметра подключения dbname\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" синоним параметра подключения host\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" имя файла с паролем\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" пароль для подключения (использовать не рекомендуется)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" синоним параметра подключения port\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" синоним параметра подключения user\n" + +#: help.c:540 +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:542 +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:544 +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" альтернативное размещение файла с историей команд\n" + +#: help.c:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" имя программы внешнего постраничника\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" имя программы внешнего постраничника для \\watch\n" + +#: help.c:552 +msgid "" +" PSQLRC\n" +" alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC\n" +" альтернативное размещение пользовательского файла .psqlrc\n" + +#: help.c:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" оболочка, вызываемая командой \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" каталог для временных файлов\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Имеющаяся справка:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "не удалось сохранить историю в файле \"%s\": %m" + +#: input.c:535 +#, 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: неизвестное состояние транзакции" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "выход из блока \\if" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Чтобы выйти из %s, введите \"\\q\".\n" + +#: mainloop.c:214 +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:295 +msgid "Use \\? for help or press control-C to clear the input buffer." +msgstr "" +"Введите \\? для получения справки или нажмите Control-C для очистки буфера " +"ввода." + +#: mainloop.c:297 +msgid "Use \\? for help." +msgstr "Введите \\? для получения справки." + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Вы используете psql - интерфейс командной строки к PostgreSQL." + +# skip-rule: copyright +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Введите \\q для выхода." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Нажмите Control-D для выхода." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Нажмите Control-C для выхода." + +#: mainloop.c:459 mainloop.c:618 +#, c-format +msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "" +"запрос игнорируется; добавьте \\endif или нажмите Ctrl-C для завершения " +"текущего блока \\if" + +#: mainloop.c:636 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "имя" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "сигнатура_агр_функции" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "новое_имя" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "новый_владелец" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "новая_схема" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +msgid "where aggregate_signature is:" +msgstr "где сигнатура_агр_функции:" + +#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "режим_аргумента" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "имя_аргумента" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "тип_аргумента" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "параметр" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "где допустимые параметры:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "разр_подключения" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "предел_подключений" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "это_шаблон" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "новое_табл_пространство" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "параметр_конфигурации" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "значение" + +#: sql_help.c:200 +msgid "target_role" +msgstr "целевая_роль" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "имя_схемы" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "предложение_GRANT_или_REVOKE" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "где допустимое предложение_GRANT_или_REVOKE:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "имя_роли" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "выражение" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "ограничение_домена" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "имя_ограничения" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "имя_нового_ограничения" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "новая_версия" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "элемент_объект" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "где элемент_объект:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "имя_объекта" + +# well-spelled: агр +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "имя_агр_функции" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "исходный_тип" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "целевой_тип" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "имя_функции" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "имя_оператора" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "тип_слева" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "тип_справа" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "метод_индекса" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "имя_процедуры" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "имя_подпрограммы" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "имя_типа" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "имя_языка" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "и сигнатура_агр_функции:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "функция_обработчик" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "функция_проверки" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "действие" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "имя_столбца" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "новое_имя_столбца" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "где допустимое действие:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "тип_данных" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "правило_сортировки" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "ограничение_столбца" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "целое" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "атрибут" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "ограничение_таблицы" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "имя_триггера" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "таблица_родитель" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "имя_расширения" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "стоимость_выполнения" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "строк_в_результате" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "вспомогательная_функция" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "указание_роли" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "имя_пользователя" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "где допустимое указание_роли:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "имя_группы" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "табл_пространство" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "имя_индекса" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "параметр_хранения" + +#: sql_help.c:607 +msgid "column_number" +msgstr "номер_столбца" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "oid_большого_объекта" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "метод_сжатия" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "новый_метод_доступа" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "процедура_ограничения" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "процедура_соединения" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "номер_стратегии" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "тип_операции" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "семейство_сортировки" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "номер_опорной_процедуры" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "тип_аргумента" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "имя_таблицы" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "выражение_использования" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "выражение_проверки" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "объект_публикации" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "параметр_публикации" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "где объект_публикации:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "пароль" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "timestamp" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "имя_БД" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "шаг" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "мин_значение" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "макс_значение" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "начальное_значение" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "значение_перезапуска" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "кеш" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "новое_имя" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "строка_подключения" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "имя_публикации" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "параметр_публикации" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "параметр_обновления" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "параметр_подписки" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "параметр_пропуска" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "имя_секции" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "указание_границ_секции" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "параметры_последовательности" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "параметр_последовательности" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "ограничение_таблицы_с_индексом" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "имя_правила_перезаписи" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "и указание_границ_секции:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "выражение_границ_секции" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "числовая_константа" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "и ограничение_столбца:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "выражение_по_умолчанию" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "генерирующее_выражение" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "параметры_индекса" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "целевая_таблица" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "целевой_столбец" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "ссылочное_действие" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "и ограничение_таблицы:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "объект_исключения" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "оператор" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "предикат" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "и ограничение_таблицы_с_индексом:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "параметры_индекса в ограничениях UNIQUE, PRIMARY KEY и EXCLUDE:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "объект_исключения в ограничении EXCLUDE:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "класс_оператора" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "ссылочное действие в ограничении FOREIGN KEY/REFERENCES:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "параметр_табл_пространства" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "тип_фрагмента" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "имя_словаря" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "старый_словарь" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "новый_словарь" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "имя_атрибута" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "новое_имя_атрибута" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "новое_значение_перечисления" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "соседнее_значение_перечисления" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "существующее_значение_перечисления" + +#: sql_help.c:1589 +msgid "property" +msgstr "свойство" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "имя_сервера" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "имя_параметра_представления" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "значение_параметра_представления" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "таблица_и_столбцы" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "где допустимый параметр:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "логическое_значение" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "и таблица_и_столбцы:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "режим_транзакции" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "где допустимый режим_транзакции:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "аргумент" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "имя_отношения" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "имя_домена" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "имя_политики" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "имя_правила" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "строковая_константа" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "код_транзакции" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "имя_файла" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "команда" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "условие" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "запрос" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "имя_формата" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "символ_разделитель" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "представление_NULL" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "символ_кавычек" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "спецсимвол" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "имя_кодировки" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "тип_метода_доступа" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "тип_данных_аргумента" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "функция_состояния" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "тип_данных_состояния" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "размер_данных_состояния" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "функция_завершения" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "комбинирующая_функция" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "функция_сериализации" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "функция_десериализации" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "начальное_условие" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "функция_состояния_движ" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "обратная_функция_движ" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "тип_данных_состояния_движ" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "размер_данных_состояния_движ" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "функция_завершения_движ" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "начальное_условие_движ" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "оператор_сортировки" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "или старый синтаксис" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "базовый_тип" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "код_локали" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "код_правила_сортировки" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "код_классификации_символов" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "провайдер" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "версия" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "существующее_правило_сортировки" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "исходная_кодировка" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "целевая_кодировка" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "шаблон" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "кодировка" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "стратегия" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "локаль_icu" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "провайдер_локали" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "версия_правила_сортировки" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "ограничение" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "где ограничение:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "событие" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "переменная_фильтра" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "значение_фильтра" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "где ограничение_столбца:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "тип_возврата" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "тип_столбца" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "определение" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "объектный_файл" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "символ_в_экспорте" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "тело_sql" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "метод" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "параметр_класса_оп" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "обработчик_вызова" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "обработчик_внедрённого_кода" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "функция_проверки" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "коммут_оператор" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "обратный_оператор" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "имя_семейства" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "тип_хранения" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "где допустимое событие:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "элемент_схемы" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "тип_сервера" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "версия_сервера" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "имя_обёртки_сторонних_данных" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "имя_статистики" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "вид_статистики" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "имя_подписки" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "исходная_таблица" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "параметр_порождения" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "и параметр_порождения:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "каталог" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "имя_анализатора" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "исходная_конфигурация" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "функция_начала" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "функция_выдачи_фрагмента" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "функция_окончания" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "функция_лекс_типов" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "функция_создания_выдержек" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "функция_инициализации" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "функция_выделения_лексем" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "имя_функции_из_sql" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "имя_функции_в_sql" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "ссылающаяся_таблица" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "имя_переходного_отношения" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "аргументы" + +#: sql_help.c:3170 +msgid "label" +msgstr "метка" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "подтип" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "класс_оператора_подтипа" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "каноническая_функция" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "функция_различий_подтипа" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "имя_мультидиапазонного_типа" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "функция_ввода" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "функция_вывода" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "функция_получения" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "функция_отправки" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "функция_ввода_модификатора_типа" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "функция_вывода_модификатора_типа" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "функция_анализа" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "функция_обращения_по_индексу" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "внутр_длина" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "выравнивание" + +#: sql_help.c:3189 +msgid "storage" +msgstr "хранение" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "тип_образец" + +#: sql_help.c:3191 +msgid "category" +msgstr "категория" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "предпочитаемый" + +#: sql_help.c:3193 +msgid "default" +msgstr "по_умолчанию" + +#: sql_help.c:3194 +msgid "element" +msgstr "элемент" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "разделитель" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "сортируемый" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "запрос_WITH" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "псевдоним" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "источник_данных" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "имя_курсора" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "выражение_результата" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "имя_результата" + +#: sql_help.c:3316 +msgid "code" +msgstr "внедрённый_код" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "параметр" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "оператор" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "направление" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "где допустимое направление:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "число" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "имя_последовательности" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "имя_аргумента" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "тип_аргумента" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "код_БО" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "удалённая_схема" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "локальная_схема" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "объект_конфликта" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "действие_при_конфликте" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "где допустимый объект_конфликта:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "имя_столбца_индекса" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "выражение_индекса" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "предикат_индекса" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "а допустимое действие_при_конфликте:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "вложенный_SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "канал" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "режим_блокировки" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "где допустимый режим_блокировки:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "имя_целевой_таблицы" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "псевдоним_назначения" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "источник_данных" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "условие_соединения" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "предложение_when" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "где источник_данных:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "имя_исходной_таблицы" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "исходный_запрос" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "псевдоним_источника" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "и предложение_when:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "merge_update" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "merge_delete" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "merge_insert" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "и merge_insert:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "и merge_update:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "и merge_delete:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "сообщение_нагрузка" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "старая_роль" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "новая_роль" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "имя_точки_сохранения" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "элемент_группирования" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "имя_окна" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "определение_окна" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "select" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "где допустимый источник_данных:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "псевдоним_столбца" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "метод_выборки" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "начальное_число" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "имя_запроса_WITH" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "определение_столбца" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "тип_соединения" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "столбец_соединения" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "псевдоним_использования_соединения" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "где допустимый элемент_группирования:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "и запрос_WITH:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "значения" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "update" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "имя_столбца_послед_поиска" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "имя_столбца_пометки_цикла" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "значение_пометки_цикла" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "пометка_цикла_по_умолчанию" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "имя_столбца_пути_цикла" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "новая_таблица" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "код_снимка" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "выражение_сортировки" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "прервать текущую транзакцию" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "изменить определение агрегатной функции" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "изменить определение правила сортировки" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "изменить определение преобразования" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "изменить атрибуты базы данных" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "определить права доступа по умолчанию" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "изменить определение домена" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "изменить определение событийного триггера" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "изменить определение расширения" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "изменить определение обёртки сторонних данных" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "изменить определение сторонней таблицы" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "изменить определение функции" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "изменить имя роли или членство" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "изменить определение индекса" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "изменить определение процедурного языка" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "изменить определение большого объекта" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "изменить определение материализованного представления" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "изменить определение оператора" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "изменить определение класса операторов" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "изменить определение семейства операторов" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "изменить определение политики защиты на уровне строк" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "изменить определение процедуры" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "изменить определение публикации" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "изменить роль пользователя БД" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "изменить определение подпрограммы" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "изменить определение правила" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "изменить определение схемы" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "изменить определение генератора последовательности" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "изменить определение стороннего сервера" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "изменить определение объекта расширенной статистики" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "изменить определение подписки" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "изменить параметр конфигурации сервера" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "изменить определение таблицы" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "изменить определение табличного пространства" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "изменить определение конфигурации текстового поиска" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "изменить определение словаря текстового поиска" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "изменить определение анализатора текстового поиска" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "изменить определение шаблона текстового поиска" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "изменить определение триггера" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "изменить определение типа" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "изменить сопоставление пользователей" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "изменить определение представления" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "собрать статистику о базе данных" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "начать транзакцию" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "вызвать процедуру" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "произвести контрольную точку в журнале предзаписи" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "закрыть курсор" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "перегруппировать таблицу по индексу" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "задать или изменить комментарий объекта" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "зафиксировать текущую транзакцию" + +#: sql_help.c:5434 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "зафиксировать транзакцию, ранее подготовленную для двухфазной фиксации" + +#: sql_help.c:5440 +msgid "copy data between a file and a table" +msgstr "импорт/экспорт данных в файл" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "создать новый метод доступа" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "создать агрегатную функцию" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "создать приведение типов" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "создать правило сортировки" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "создать преобразование кодировки" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "создать базу данных" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "создать домен" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "создать событийный триггер" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "установить расширение" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "создать обёртку сторонних данных" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "создать стороннюю таблицу" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "создать функцию" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "создать роль пользователя БД" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "создать индекс" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "создать процедурный язык" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "создать материализованное представление" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "создать оператор" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "создать класс операторов" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "создать семейство операторов" + +#: sql_help.c:5560 +msgid "define a new row-level security policy for a table" +msgstr "создать новую политику защиты на уровне строк для таблицы" + +#: sql_help.c:5566 +msgid "define a new procedure" +msgstr "создать процедуру" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "создать публикацию" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "создать правило перезаписи" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "создать схему" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "создать генератор последовательностей" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "создать сторонний сервер" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "создать расширенную статистику" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "создать подписку" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "создать таблицу" + +#: sql_help.c:5626 sql_help.c:6148 +msgid "define a new table from the results of a query" +msgstr "создать таблицу из результатов запроса" + +#: sql_help.c:5632 +msgid "define a new tablespace" +msgstr "создать табличное пространство" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "создать конфигурацию текстового поиска" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "создать словарь текстового поиска" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "создать анализатор текстового поиска" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "создать шаблон текстового поиска" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "создать преобразование" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "создать триггер" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "создать тип данных" + +#: sql_help.c:5686 +msgid "define a new mapping of a user to a foreign server" +msgstr "создать сопоставление пользователя для стороннего сервера" + +#: sql_help.c:5692 +msgid "define a new view" +msgstr "создать представление" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "освободить подготовленный оператор" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "создать курсор" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "удалить записи таблицы" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "очистить состояние сеанса" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "выполнить анонимный блок кода" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "удалить метод доступа" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "удалить агрегатную функцию" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "удалить приведение типа" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "удалить правило сортировки" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "удалить преобразование" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "удалить базу данных" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "удалить домен" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "удалить событийный триггер" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "удалить расширение" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "удалить обёртку сторонних данных" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "удалить стороннюю таблицу" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "удалить функцию" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "удалить роль пользователя БД" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "удалить индекс" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "удалить процедурный язык" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "удалить материализованное представление" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "удалить оператор" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "удалить класс операторов" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "удалить семейство операторов" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "удалить объекты базы данных, принадлежащие роли" + +#: sql_help.c:5848 +msgid "remove a row-level security policy from a table" +msgstr "удалить из таблицы политику защиты на уровне строк" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "удалить процедуру" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "удалить публикацию" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "удалить подпрограмму" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "удалить правило перезаписи" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "удалить схему" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "удалить последовательность" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "удалить описание стороннего сервера" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "удалить расширенную статистику" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "удалить подписку" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "удалить таблицу" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "удалить табличное пространство" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "удалить конфигурацию текстового поиска" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "удалить словарь текстового поиска" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "удалить анализатор текстового поиска" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "удалить шаблон текстового поиска" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "удалить преобразование" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "удалить триггер" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "удалить тип данных" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "удалить сопоставление пользователя для стороннего сервера" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "удалить представление" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "выполнить подготовленный оператор" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "показать план выполнения оператора" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "получить результат запроса через курсор" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "определить права доступа" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "импортировать определения таблиц со стороннего сервера" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "добавить строки в таблицу" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "ожидать уведомления" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "загрузить файл разделяемой библиотеки" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "заблокировать таблицу" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "добавление, изменение или удаление строк таблицы по условию" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "установить курсор" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "сгенерировать уведомление" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "подготовить оператор для выполнения" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "подготовить текущую транзакцию для двухфазной фиксации" + +#: sql_help.c:6076 +msgid "change the ownership of database objects owned by a database role" +msgstr "изменить владельца объектов БД, принадлежащих заданной роли" + +#: sql_help.c:6082 +msgid "replace the contents of a materialized view" +msgstr "заменить содержимое материализованного представления" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "перестроить индексы" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "удалить ранее определённую точку сохранения" + +#: sql_help.c:6100 +msgid "restore the value of a run-time parameter to the default value" +msgstr "восстановить исходное значение параметра выполнения" + +#: sql_help.c:6106 +msgid "remove access privileges" +msgstr "удалить права доступа" + +#: sql_help.c:6118 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "отменить транзакцию, подготовленную ранее для двухфазной фиксации" + +#: sql_help.c:6124 +msgid "roll back to a savepoint" +msgstr "откатиться к точке сохранения" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "определить новую точку сохранения в текущей транзакции" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "задать или изменить метку безопасности, применённую к объекту" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "выбрать строки из таблицы или представления" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "изменить параметр выполнения" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "установить время проверки ограничений для текущей транзакции" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "задать идентификатор текущего пользователя в текущем сеансе" + +#: sql_help.c:6172 +msgid "" +"set the session user identifier and the current user identifier of the " +"current session" +msgstr "" +"задать идентификатор пользователя сеанса и идентификатор текущего " +"пользователя в текущем сеансе" + +#: sql_help.c:6178 +msgid "set the characteristics of the current transaction" +msgstr "задать свойства текущей транзакции" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "показать значение параметра выполнения" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "опустошить таблицу или набор таблиц" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "прекратить ожидание уведомлений" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "изменить строки таблицы" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "произвести сборку мусора и проанализировать базу данных" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "получить набор строк" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 можно использовать только в неинтерактивном режиме" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "не удалось открыть файл протокола \"%s\": %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Введите \"help\", чтобы получить справку.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "не удалось установить параметр печати \"%s\"" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Для дополнительной информации попробуйте \"%s --help\"." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "лишний аргумент \"%s\" проигнорирован" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "не удалось найти свой исполняемый файл" + +#: tab-complete.c:5955 +#, 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 "text" +#~ msgstr "текст" + +#~ msgid "\\watch cannot be used with COPY" +#~ msgstr "\\watch нельзя использовать с COPY" + +#~ msgid "where direction can be empty or one of:" +#~ msgstr "где допустимое направление пустое или:" + +#~ msgid "timezone" +#~ msgstr "часовой_пояс" + +#~ msgid "fatal: " +#~ msgstr "важно: " + +#~ msgid "The server (version %s) does not support editing function source." +#~ msgstr "" +#~ "Сервер (версия %s) не поддерживает редактирование исходного кода функции." + +#~ msgid "The server (version %s) does not support editing view definitions." +#~ msgstr "" +#~ "Сервер (версия %s) не поддерживает редактирование определения " +#~ "представления." + +#~ msgid "The server (version %s) does not support showing function source." +#~ msgstr "Сервер (версия %s) не поддерживает вывод исходного кода функции." + +#~ msgid "The server (version %s) does not support showing view definitions." +#~ msgstr "Сервер (версия %s) не поддерживает вывод определения представлений." + +#~ msgid "unexpected result status for \\watch" +#~ msgstr "неожиданное состояние результата для \\watch" + +#~ msgid "" +#~ "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK." +#~ msgstr "" +#~ "Сервер (версия %s) не поддерживает точки сохранения для ON_ERROR_ROLLBACK." + +#~ msgid "The server (version %s) does not support tablespaces." +#~ msgstr "Сервер (версия %s) не поддерживает табличные пространства." + +#~ msgid "" +#~ "The server (version %s) does not support altering default privileges." +#~ msgstr "Сервер (версия %s) не поддерживает изменение прав по умолчанию." + +#~ msgid "Special relation \"%s.%s\"" +#~ msgstr "Специальное отношение \"%s.%s\"" + +#~ msgid "Disabled triggers:" +#~ msgstr "Отключённые триггеры:" + +#~ msgid "The server (version %s) does not support per-database role settings." +#~ msgstr "" +#~ "Сервер (версия %s) не поддерживает назначение параметров ролей для баз " +#~ "данных." + +# skip-rule: capital-letter-first +#~ msgid "special" +#~ msgstr "спец. отношение" + +#~ msgid "The server (version %s) does not support collations." +#~ msgstr "Сервер (версия %s) не поддерживает правила сравнения." + +#~ msgid "The server (version %s) does not support full text search." +#~ msgstr "Сервер (версия %s) не поддерживает полнотекстовый поиск." + +#~ msgid "The server (version %s) does not support foreign-data wrappers." +#~ msgstr "Сервер (версия %s) не поддерживает обёртки сторонних данных." + +#~ msgid "The server (version %s) does not support foreign servers." +#~ msgstr "Сервер (версия %s) не поддерживает сторонние серверы." + +#~ msgid "The server (version %s) does not support user mappings." +#~ msgstr "Сервер (версия %s) не поддерживает сопоставления пользователей." + +#~ msgid "The server (version %s) does not support foreign tables." +#~ msgstr "Сервер (версия %s) не поддерживает сторонние таблицы." + +#~ 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" + +#~ msgid "Enter new password: " +#~ msgstr "Введите новый пароль: " + +#~ msgid "" +#~ "All connection parameters must be supplied because no database connection " +#~ "exists" +#~ msgstr "" +#~ "Без подключения к базе данных необходимо указывать все параметры " +#~ "подключения" + +#~ msgid "Could not send cancel request: %s" +#~ msgstr "Отправить сигнал отмены не удалось: %s" + +#~ msgid "could not connect to server: %s" +#~ msgstr "не удалось подключиться к серверу: %s" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Об ошибках сообщайте по адресу .\n" + +#~ msgid "" +#~ " \\g [FILE] or ; execute query (and send results to file or |" +#~ "pipe)\n" +#~ msgstr "" +#~ " \\g [ФАЙЛ] или ; выполнить запрос\n" +#~ " (и направить результаты в файл или канал |)\n" + +#~ 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 "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 "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 "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..c7e135e --- /dev/null +++ b/src/bin/psql/po/sv.po @@ -0,0 +1,6479 @@ +# Swedish message translation file for psql +# Peter Eisentraut , 2001, 2009, 2010. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017, 2018, 2019, 2020, 2021, 2022, 2023. +# +# Use these quotes: "%s" +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 15\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-02-03 19:46+0000\n" +"PO-Revision-Date: 2023-03-09 22:34+0100\n" +"Last-Translator: Dennis Björklund \n" +"Language-Team: Swedish \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:276 +#, c-format +msgid "error: " +msgstr "fel: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "varning: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "detalj: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "tips: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "kunde inte identifiera aktuell katalog: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "ogiltig binär \"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "kunde inte läsa binär \"%s\"" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "kunde inte hitta en \"%s\" att köra" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "kunde inte byta katalog till \"%s\": %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "kan inte läsa symbolisk länk \"%s\": %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() misslyckades: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Förfrågan om avbrytning skickad\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "Kunde inte skicka förfrågan om avbrytning: " + +#: ../../fe_utils/print.c:406 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu rad)" +msgstr[1] "(%lu rader)" + +#: ../../fe_utils/print.c:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Avbruten\n" + +#: ../../fe_utils/print.c:3173 +#, 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:3213 +#, 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:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "ogiltigt utdataformat (internt fel): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "hoppar över rekursiv expandering av variabeln \"%s\"" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "kunde inte slå upp lokalt användar-id %d: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "lokal användare med ID %d existerar inte" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "ogiltigt kommando \\%s" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "Försök med \\? för hjälp." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: extra argument \"%s\" ignorerat" + +#: command.c:304 +#, 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:573 +#, 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:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: kunde inte byta katalog till \"%s\": %m" + +#: command.c:617 +#, 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:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "ingen frågebuffert" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "ogiltigt radnummer: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "Inga ändringar" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: ogiltigt kodningsnamn eller konverteringsprocedur hittades inte" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "Det finns inget tidigare fel." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: saknar höger parentes" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: obligatoriskt argument saknas" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: kan inte komma efter \\else" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: ingen matchande \\if" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: kan inte komma efter \\else" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: ingen matchande \\if" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: ingen matchande \\if" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "Frågebufferten är tom." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Mata in nytt lösenord för användare \"%s\": " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "Mata in det igen: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "Lösenorden stämde inte överens." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: kunde inte läsa värde på varibeln" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "Frågebufferten har blivit borttagen." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "Skrev historiken till fil \"%s\".\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: omgivningsvariabelnamn får ej innehålla \"=\"" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "funktionsnamn krävs" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "vynamn krävs" + +#: command.c:2593 +msgid "Timing is on." +msgstr "Tidtagning är på." + +#: command.c:2595 +msgid "Timing is off." +msgstr "Tidtagning är av." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Lösenord: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Lösenord för användare %s: " + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "Ange inte användare, värd eller port separat tillsammans med en anslutningssträng" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "Det finns ingen anslutning att återanvända parametrar från" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "Föregående anslutning bevarad" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, 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:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, server %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "SSL-anslutning (protokoll: %s, krypto: %s, komprimering: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "okänd" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "av" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "på" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "GSSAPI-krypterad anslutning\n" + +#: command.c:3717 +#, 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:3822 +#, 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:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "kunde inte starta editorn \"%s\"" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "kunde inte starta /bin/sh" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "kunde inte hitta temp-katalog: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "kunde inte öppna temporär fil \"%s\": %m" + +#: command.c:4266 +#, 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:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: tillåtna linjestilar är ascii, old-ascii, unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: tillåtna Unicode-ramstilar är single, double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: tillåtna Unicode-kolumnlinjestilar ärsingle, double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: tillåtna Unicode-rubriklinjestilar är single, double" + +#: command.c:4393 +#, 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:4398 +#, 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:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: okänd parameter: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "Ramstil är %d.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "Målvidd är inte satt.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "Målvidd är %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Utökad visning är på.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "Utökad visning används automatiskt.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Utökad visning är av.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "Fältseparatorn för CSV är \"%s\".\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Fältseparatorn är noll-byte.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Fältseparatorn är \"%s\".\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "Standard sidfot är på.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "Standard sidfot är av.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "Utdataformatet är \"%s\".\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "Linjestil är %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null-visare är \"%s\".\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "Lokal-anpassad numerisk utdata är på.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "Lokal-anpassad numerisk utdata är av.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Siduppdelare är på för lång utdata.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "Siduppdelare används alltid.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "Siduppdelare är av.\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Postseparatorn är noll-byte.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "Postseparatorn är .\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Postseparatorn är \"%s\".\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Tabellattributen är \"%s\".\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Tabellattributen är ej satta.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Titeln är \"%s\".\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "Titeln är inte satt.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "Visa bara tupler är på.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "Visa bara tupler är av.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Unicode-ramstil är \"%s\".\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Unicode-kolumnLinjestil är \"%s\".\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Unicode-rubriklinjestil är \"%s\".\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: misslyckades" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch kan inte användas på en tom fråga" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "kunde inte sätta timer: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (varje %gs)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (varje %gs)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "kunde inte vänta på signaler: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* FRÅGA **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\" är inte en vy" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "kunde inte parsa arrayen reloptions" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "kan inte escape:a utan en aktiv uppkoppling" + +#: common.c:207 +#, 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:311 +#, c-format +msgid "connection to server was lost" +msgstr "uppkopplingen till servern har brutits" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Anslutningen till servern har brutits. Försöker starta om: " + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "Misslyckades.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "Lyckades.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "oväntad PQresultStatus: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Tid: %.3f ms\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Tid: %.3f ms (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Tid: %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, 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:566 common.c:623 common.c:1034 describe.c:6135 +#, 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:654 +#, 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:657 +#, 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:688 +#, c-format +msgid "could not print result table: %m" +msgstr "kunde inte visa resultatabell: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "inga rader returnerades för \\gset" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "mer än en rad returnerades för \\gset" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "försök att utföra \\gset in i en speciellt hanterad variabel \"%s\" hoppas över" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "SATS: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "oväntad transaktionsstatus (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "Kolumn" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Typ" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "avbruten på grund av läsfel" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Schema" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Namn" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Resultatdatatyp" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Argumentdatatyp" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Beskrivning" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Lista med aggregatfunktioner" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "Servern (version %s) stöder inte accessmetoder." + +#: describe.c:168 +msgid "Index" +msgstr "Index" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Tabell" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Hanterare" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Lista med accessmetoder" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Ägare" + +#: describe.c:231 +msgid "Location" +msgstr "Plats" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Alternativ" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Storlek" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Lista med tabellutrymmen" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df tar bara [anptwS+] som flaggor" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "agg" + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "fönster" + +#: describe.c:356 +msgid "proc" +msgstr "proc" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "funk" + +# Vi väljer att bevara den engelska termen då det dels refererar till kommandot CREATE TRIGGER +# och dels för att detta begreppet normalt benäms som triggers i dagligt tal i Sverige. +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "trigger" + +# Vi väljer att bevara den engelska termen då det refererar till en del av CREATE FUNCTION-syntaxen +#: describe.c:386 +msgid "immutable" +msgstr "immutable" + +# Vi väljer att bevara den engelska termen då det refererar till en del av CREATE FUNCTION-syntaxen +#: describe.c:387 +msgid "stable" +msgstr "stable" + +# Vi väljer att bevara den engelska termen då det refererar till en del av CREATE FUNCTION-syntaxen +#: describe.c:388 +msgid "volatile" +msgstr "volatile" + +#: describe.c:389 +msgid "Volatility" +msgstr "Flyktighet" + +#: describe.c:397 +msgid "restricted" +msgstr "begränsad" + +#: describe.c:398 +msgid "safe" +msgstr "säker" + +#: describe.c:399 +msgid "unsafe" +msgstr "osäker" + +#: describe.c:400 +msgid "Parallel" +msgstr "Parallell" + +#: describe.c:405 +msgid "definer" +msgstr "definierare" + +#: describe.c:406 +msgid "invoker" +msgstr "anropare" + +#: describe.c:407 +msgid "Security" +msgstr "Säkerhet" + +#: describe.c:412 +msgid "Language" +msgstr "Språk" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Källkod" + +#: describe.c:594 +msgid "List of functions" +msgstr "Lista med funktioner" + +#: describe.c:657 +msgid "Internal name" +msgstr "Internt namn" + +#: describe.c:659 +msgid "Elements" +msgstr "Element" + +#: describe.c:711 +msgid "List of data types" +msgstr "Lista med datatyper" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Vänster argumenttyp" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Höger argumenttyp" + +#: describe.c:816 +msgid "Result type" +msgstr "Resultattyp" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Funktion" + +#: describe.c:902 +msgid "List of operators" +msgstr "Lista med operatorer" + +#: describe.c:938 +msgid "Encoding" +msgstr "Kodning" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Jämförelse" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "ICU-lokal" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Lokalleverantör" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Tabellutrymme" + +#: describe.c:990 +msgid "List of databases" +msgstr "Lista med databaser" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "tabell" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "vy" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "materialiserad vy" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "sekvens" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "främmande tabell" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "partitionerad tabell" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Kolumnrättigheter" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Policys" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Åtkomsträttigheter" + +#: describe.c:1188 +msgid "function" +msgstr "funktion" + +#: describe.c:1190 +msgid "type" +msgstr "typ" + +#: describe.c:1192 +msgid "schema" +msgstr "schema" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Standard accessrättigheter" + +#: describe.c:1259 +msgid "Object" +msgstr "Objekt" + +#: describe.c:1273 +msgid "table constraint" +msgstr "tabellvillkor" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "domänvillkor" + +#: describe.c:1321 +msgid "operator class" +msgstr "operatorklass" + +#: describe.c:1345 +msgid "operator family" +msgstr "operatorfamilj" + +#: describe.c:1368 +msgid "rule" +msgstr "rule" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Objektbeskrivningar" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "Kunde inte hitta en relation med namn \"%s\"." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "Kunde inte hitta några relationer." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "Kunde inte hitta en relation med OID %s." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "Start" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Minimum" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Maximum" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Ökning" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "ja" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "nej" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "Cyklisk?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Cache" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Ägd av: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Sekvens för identitetskolumn: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Ologgat sekvens \"%s.%s\"" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Sekvens \"%s.%s\"" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Ologgad tabell \"%s.%s\"" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Tabell \"%s.%s\"" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Vy \"%s.%s\"" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Ologgad materialiserad vy \"%s.%s\"" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Materialiserad vy \"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Ologgat index \"%s.%s\"" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Index \"%s.%s\"" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Ologgat partitionerat index \"%s.%s\"" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Partitionerat index \"%s.%s\"" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST-tabell \"%s.%s\"" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Sammansatt typ \"%s.%s\"" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Främmande tabell \"%s.%s\"" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Ologgad partitionerad tabell \"%s.%s\"" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Partitionerad tabell \"%s.%s\"" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Jämförelse" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "Nullbar" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "Standard" + +#: describe.c:2029 +msgid "Key?" +msgstr "Nyckel?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Definition" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "FDW-alternativ" + +#: describe.c:2035 +msgid "Storage" +msgstr "Lagring" + +#: describe.c:2037 +msgid "Compression" +msgstr "Komprimering" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Statistikmål" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Partition av: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Inget partitioneringsvillkor" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Partitioneringsvillkor: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Partitioneringsnyckel: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Ägande tabell \"%s.%s\"" + +#: describe.c:2309 +msgid "primary key, " +msgstr "primärnyckel, " + +#: describe.c:2312 +msgid "unique" +msgstr "unik" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " null-värden ej distinkta" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "för tabell \"%s.%s\"" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", predikat (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", klustrad" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", ogiltig" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", uppskjutbar" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", initialt uppskjuten" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", replikaidentitet" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Index:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Kontrollvillkor:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Främmande nyckel-villkor:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Refererad av:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Policys:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Policys (tvingad radsäkerhet påslagen):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Policys (radsäkerhet påslagna): (ingen)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Policys (tvingad radsäkerhet påslagen): (ingen)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Policys (radsäkerhet avstängd):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Statistikobjekt:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Regler:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Avstängda regler:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Regler som alltid utförs:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Regler som utförs enbart på replika:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Publiceringar:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Vydefinition:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Triggrar:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Avstängda användartriggrar:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Avstängda interna triggrar:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Triggrar som alltid körs:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Triggrar som enbart körs på replika:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Server: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "FDW-alternativ: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Ärver" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Antal partitioner: %d" + +#: describe.c:3422 +#, 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:3424 +#, 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:3431 +msgid "Child tables" +msgstr "Barntabeller" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Partitioner" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Typad tabell av typ: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Replikaidentitet" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Har OID:er: ja" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Accessmetod: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", tabellutrymme: \"%s\"" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Lista med roller" + +#: describe.c:3670 +msgid "Role name" +msgstr "Rollnamn" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Attribut" + +#: describe.c:3673 +msgid "Member of" +msgstr "Medlem av" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Superanvändare" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "Inget arv" + +#: describe.c:3690 +msgid "Create role" +msgstr "Skapa roll" + +#: describe.c:3693 +msgid "Create DB" +msgstr "Skapa DB" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "Kan inte logga in" + +#: describe.c:3699 +msgid "Replication" +msgstr "Replikering" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Hopp över RLS" + +#: describe.c:3712 +msgid "No connections" +msgstr "Inga uppkopplingar" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d uppkoppling" +msgstr[1] "%d uppkopplingar" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Lösenord giltigt till " + +#: describe.c:3777 +msgid "Role" +msgstr "Roll" + +#: describe.c:3778 +msgid "Database" +msgstr "Databas" + +#: describe.c:3779 +msgid "Settings" +msgstr "Inställningar" + +#: describe.c:3803 +#, 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:3806 +#, 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:3809 +#, c-format +msgid "Did not find any settings." +msgstr "Kunde inte hitta några inställningar." + +#: describe.c:3814 +msgid "List of settings" +msgstr "Lista med inställningar" + +#: describe.c:3885 +msgid "index" +msgstr "index" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "TOAST-tabell" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "partitionerat index" + +#: describe.c:3910 +msgid "permanent" +msgstr "permanent" + +#: describe.c:3911 +msgid "temporary" +msgstr "temporär" + +#: describe.c:3912 +msgid "unlogged" +msgstr "ologgad" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Persistens" + +#: describe.c:3929 +msgid "Access method" +msgstr "Accessmetod" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Lista med relationer" + +#: describe.c:4063 +#, c-format +msgid "The server (version %s) does not support declarative table partitioning." +msgstr "Servern (version %s) stöder inte deklarativ tabellpartitionering." + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "Lista med partitionerade index" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Lista med partitionerade tabeller" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Lista med partitionerade relationer" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Föräldranamn" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Partitionsstorlek av löv" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Total storlek" + +#: describe.c:4258 +msgid "Trusted" +msgstr "Tillförlitlig" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Internt språk" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Anropshanterare" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Validerare" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Inline-hanterare" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Lista med språk" + +#: describe.c:4346 +msgid "Check" +msgstr "Check" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Lista med domäner" + +#: describe.c:4424 +msgid "Source" +msgstr "Källa" + +#: describe.c:4425 +msgid "Destination" +msgstr "Mål" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "Standard?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Lista med konverteringar" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Parameter" + +#: describe.c:4498 +msgid "Value" +msgstr "Värde" + +#: describe.c:4505 +msgid "Context" +msgstr "Kontext" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Lista med konfigurationsparametrar" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Lista med icke-defaulta konfigurationsparametrar" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "Servern (version %s) stöder inte händelsetriggrar." + +#: describe.c:4587 +msgid "Event" +msgstr "Händelse" + +#: describe.c:4589 +msgid "enabled" +msgstr "påslagen" + +#: describe.c:4590 +msgid "replica" +msgstr "replika" + +#: describe.c:4591 +msgid "always" +msgstr "alltid" + +#: describe.c:4592 +msgid "disabled" +msgstr "avstängd" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Påslagen" + +#: describe.c:4595 +msgid "Tags" +msgstr "Etiketter" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Lista med händelsetriggrar" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "Servern (version %s) stöder inte utökad statistik." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Nunika" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Beroenden" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Lista med utökad statistik" + +#: describe.c:4745 +msgid "Source type" +msgstr "Källtyp" + +#: describe.c:4746 +msgid "Target type" +msgstr "Måltyp" + +#: describe.c:4770 +msgid "in assignment" +msgstr "i tilldelning" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Implicit?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Lista med typomvandlingar" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Leverantör" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Deterministisk?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Lista med jämförelser (collations)" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Lista med scheman" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Lista med textsökparsrar" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "Kunde inte hitta en textsökparser med namn \"%s\"." + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "Kunde inte hitta några textsökparsrar." + +#: describe.c:5245 +msgid "Start parse" +msgstr "Starta parsning" + +#: describe.c:5246 +msgid "Method" +msgstr "Metod" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Hämta nästa symbol" + +#: describe.c:5252 +msgid "End parse" +msgstr "Avsluta parsning" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Hämta rubrik" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Hämta symboltyper" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Textsökparser \"%s.%s\"" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Textsökparser \"%s\"" + +#: describe.c:5289 +msgid "Token name" +msgstr "Symbolnamn" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Symboltyper för parser \"%s.%s\"" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Symboltyper för parser \"%s\"" + +#: describe.c:5350 +msgid "Template" +msgstr "Mall" + +#: describe.c:5351 +msgid "Init options" +msgstr "Initieringsalternativ" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Lista med textsökordlistor" + +#: describe.c:5411 +msgid "Init" +msgstr "Init" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Symboluppdelning" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Lista med textsökmallar" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Lista med textsökkonfigurationer" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "Kunde inte hitta en textsökkonfiguration med namn \"%s\"." + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "Kunde inte hitta några textsökkonfigurationer." + +#: describe.c:5619 +msgid "Token" +msgstr "Symbol" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Ordlistor" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Textsökkonfiguration \"%s.%s\"" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Textsökkonfiguration \"%s\"" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Parser: \"%s.%s\"" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Parser: \"%s\"" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Lista med främmande data-omvandlare" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Främmande data-omvandlare" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Version" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Lista med främmande servrar" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Server" + +#: describe.c:5825 +msgid "User name" +msgstr "Användarnamn" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Lista av användarmappningar" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Lista med främmande tabeller" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Lista med installerade utökningar" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "Kunde inte hitta en utökning med namn \"%s\"." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "Kunde inte hitta några utökningar." + +#: describe.c:6075 +msgid "Object description" +msgstr "Objektbeskrivning" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objekt i utökning \"%s\"" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "ej korrekt kvalificerat namn (för många namn med punkt): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "referenser till andra databaser är inte implementerat: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "Servern (version %s) stöder inte publiceringar." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Alla tabeller" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Insättningar" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Uppdateringar" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Borttagningar" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Trunkeringar" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Via root" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Lista med publiceringar" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "Kunde inte hitta någon publicering med namn \"%s\"." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "Kunde inte hitta några publiceringar." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Publicering %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Tabeller:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Tabeller från scheman:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "Denna server (version %s) stöder inte prenumerationer." + +#: describe.c:6497 +msgid "Publication" +msgstr "Publicering" + +#: describe.c:6506 +msgid "Binary" +msgstr "Binär" + +#: describe.c:6507 +msgid "Streaming" +msgstr "Strömmande" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Tvåfas-commit" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Stäng av vid fel" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Synkron commit" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Anslutningsinfo" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Skippa LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Lista med prenumerationer" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "AM" + +#: describe.c:6617 +msgid "Input type" +msgstr "Indatatyp" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Lagringstyp" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Operatorklass" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Operatorfamilj" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Lista med operatorklasser" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Applicerbara typer" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Lista med operatorfamiljer" + +#: describe.c:6807 +msgid "Operator" +msgstr "Operator" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Strategi" + +#: describe.c:6809 +msgid "ordering" +msgstr "ordning" + +#: describe.c:6810 +msgid "search" +msgstr "sök" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Ändamål" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "Sortering-opfamilj" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Lista med operatorer i operatorfamiljer" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Registrerad vänstertyp" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Registrerad högertyp" + +#: describe.c:6904 +msgid "Number" +msgstr "Nummer" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Lista med supportfunktioner i operatorfamiljer" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "Stora objekt" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql är den interaktiva PostgreSQL-terminalen.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Användning:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [FLAGGA]... [DBNAMN [ANVÄNDARNAMN]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Allmänna flaggor:\n" + +#: help.c:84 +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:85 +#, 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:87 +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:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list lista befintliga databaser och avsluta sedan\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version visa versionsinformation, avsluta sedan\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc läs inte startfilen (~/.psqlrc)\n" + +#: help.c:94 +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:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=alternativ] visa denna hjälp, avsluta sedan\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands lista bakstreck-kommandon, avsluta sedan\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variabler lista speciella variabler, avsluta sedan\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Flaggor för in-/utmatning:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all visa all indata från skript\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors visa misslyckade kommandon\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries visa kommandon som skickas till servern\n" + +#: help.c:104 +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:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME skicka sessions-logg till fil\n" + +#: help.c:106 +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:107 +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:108 +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:109 +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:110 +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:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Flaggor för utdataformat:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align ojusterad utskrift av tabeller\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv CSV-utmarningsläge (kommaseparerade värden)\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html HTML-utskrift av tabeller\n" + +#: help.c:119 +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:120 +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:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only visa endast rader\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded slå på utökad utsrift av tabeller\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Flaggor för anslutning:\n" + +#: help.c:133 +#, 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:134 +msgid "local socket" +msgstr "lokalt uttag (socket)" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password fråga aldrig efter lösenord\n" + +#: help.c:143 +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password fråga om lösenord (borde ske automatiskt)\n" + +#: help.c:145 +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:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Rapportera fel till <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "hemsida för %s: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "Allmänna\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright visa PostgreSQL-upphovsrättsinformation\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr " \\crosstabview [KOLUMNER] kör fråga och visa resultatet i en korstabell\n" + +#: help.c:194 +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose visa senste felmeddelande vid maximal verbositet\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result 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:197 +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:198 +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:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [PREFIX] kör frågan och spara resultatet i psql-variabler\n" + +#: help.c:200 +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:201 +msgid " \\q quit psql\n" +msgstr " \\q avsluta psql\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEK] kör fråga var SEK sekund\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Hjälp\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [kommandon] visa hjälp om backstreckkommandon\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options visa hjälp för psqls kommandoradflaggor\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables visa hjälp om speciella variabler\n" + +#: help.c:210 +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:213 +msgid "Query Buffer\n" +msgstr "Frågebuffert\n" + +#: help.c:214 +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:215 +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNKNAMN [RAD]] redigera funktionsdefinition med extern redigerare\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [FUNKNAMN [RAD]] redigera vydefinition med extern redigerare\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p visa innehållet i frågebufferten\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r nollställ (radera) frågebufferten\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [FILNAMN] visa kommandohistorien eller spara den i fil\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILNAMN skriv frågebuffert till fil\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "In-/Utmatning\n" + +#: help.c:226 +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:227 +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:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILNAMN kör kommandon från fil\n" + +#: help.c:229 +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:230 +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:231 +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:232 +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:235 +msgid "Conditional\n" +msgstr "Villkor\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR starta villkorsblock\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR alternativ inom aktuellt villkorsblock\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else avslutningsalternativ inom aktuellt villkorsblock\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif avsluta villkorsblock\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Information\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (flaggor: S = lista systemobjekt, + = mer detaljer)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] lista tabeller, vyer och sekvenser\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAMN beskriv tabell, vy, sekvens eller index\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [MALL] lista aggregatfunktioner\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [MALL] lista accessmetoder\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] lista operatorklasser\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] lista operatorfamiljer\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] lista operatorer i operatorfamiljer\n" + +#: help.c:251 +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] lista supportfunktioner i operatorfamiljer\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [MALL] lista tabellutrymmen\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [MALL] lista konverteringar\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [MALL] lista konfigurationsparametrar\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [MALL] lista typomvandlingar\n" + +#: help.c:256 +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:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [MALL] lista domäner\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [MALL] lista standardrättigheter\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MALL] lista främmande tabeller\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [MALL] lista främmande servrar\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MALL] lista främmande tabeller\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [MALL] lista användarmappning\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [MALL] lista främmande data-omvandlare\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNKMALL [TYPMALL ...]]\n" +" lista [endast agg/normala/procedur/trigger/window] funktioner\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [MALL] lista textsökkonfigurationer\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [MALL] lista textsökordlistor\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [MALL] lista textsökparsrar\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [MALL] lista textsökmallar\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [MALL] lista roller\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [MALL] lista index\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] lista stora objekt, samma som \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MALL] lista procedurspråk\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [MALL] lista materialiserade vyer\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MALL] lista scheman\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPMALL [TYPMALL [TYPMALL]]]\n" +" lista operatorer\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MALL] lista jämförelser (collation)\n" + +#: help.c:279 +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:280 +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:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr "" +" \\drds [ROLLMALL1 [DBMALL2]]\n" +" lista rollinställningar per databas\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [MALL] lista replikeringspubliceringar\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [MALL] lista replikeringsprenumerationer\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [MALL] lista sekvenser\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [MALL] lista tabeller\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [MALL] lista datatyper\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [MALL] lista roller\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [MALL] lista vyer\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MALL] lista utökningar\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [MALL] lista utökad statistik\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [MALL] lista händelsetriggrar\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [MALL] lista databaser\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNKNAMN visa en funktions definition\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] VYNAMN visa en vys definition\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [MALL] samma som \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "Stora objekt\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export LOBOID FIL skriv stort objekt till fil\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import FIL [KOMMENTAR]\n" +" läs stort objekt från fil\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] lista stora objekt\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID ta bort stort objekt\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Formatering\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a byt mellan ojusterat och justerat utdataformat\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C [TEXT] sätt tabelltitel, eller nollställ\n" + +#: help.c:309 +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:310 +#, 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:312 +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:319 +#, 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:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [TEXT] sätt HTML-tabellens
-attribut, eller nollställ\n" + +#: help.c:322 +#, 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:323 +msgid "auto" +msgstr "auto" + +#: help.c:326 +msgid "Connection\n" +msgstr "Anslutning\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo visa information om aktuell uppkoppling\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [KODNING] visa eller sätt klientens teckenkodning\n" + +#: help.c:336 +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:339 +msgid "Operating System\n" +msgstr "Operativsystem\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [KATALOG] byt den aktuella katalogen\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVVAR hämta omgivningsvariabel\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAMN [VÄRDE] sätt eller nollställ omgivningsvariabel\n" + +#: help.c:343 +#, 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:345 +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:348 +msgid "Variables\n" +msgstr "Variabler\n" + +#: help.c:349 +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:350 +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:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NAME ta bort intern variabel\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "Lista av variabler som hanteras speciellt\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "psql-variabler:\n" + +#: help.c:394 +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:396 +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:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr "" +" DBNAME\n" +" den uppkopplade databasens namn\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" aktuell teckenkodning för klient\n" + +#: help.c:411 +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:413 +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:415 +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:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" om satt så visas inte komprimeringsmetoder\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" styr kommandohistoriken [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +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:423 +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:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" den uppkopplade databasens värd\n" + +#: help.c:427 +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:429 +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:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" avsluta batchkörning vid fel\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" värdport för den aktuella uppkopplingen\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" anger standardprompten för psql\n" + +#: help.c:442 +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:444 +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:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" kör tyst (samma som flaggan -q)\n" + +#: help.c:448 +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:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" visa alla resultat från en kombinerad fråga (\\;) istället för bara\n" +" det sista\n" + +#: help.c:455 +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:457 +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:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" stegningsläge (samma som flaggan -s)\n" + +#: help.c:461 +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:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" den uppkopplade databasanvändaren\n" + +#: help.c:465 +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:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Visningsinställningar:\n" + +#: help.c:474 +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:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" ramstil (nummer)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" målvidd för wrappade format\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (eller x)\n" +" expanderad utdata [on, off, auto]\n" + +#: help.c:482 +#, 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:485 +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:487 +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:489 +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:491 +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:493 +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:495 +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:497 +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:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" post (rad) separator för ej justerad utdata\n" + +#: help.c:501 +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:503 +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:506 +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:508 +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:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Omgivningsvariabler:\n" + +#: help.c:519 +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:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" antal kolumner i wrappade format\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" samma som anslutningsparametern \"application_name\"\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" samma som anslutningsparametern \"dbname\"\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" samma som anslutningsparametern \"host\"\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" lösenordsfilnamn\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" uppkoppingens lösenord (rekommenderas inte)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" samma som anslutingsparametern \"port\"\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" samma som anslutningsparametern \"user\"\n" + +#: help.c:540 +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:542 +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:544 +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" alternativ plats för kommandohistorikfilen\n" + +#: help.c:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PAGER\n" +" namnet på den externa pageneraren\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" namn på externt paginerarprogram för \\watch\n" + +#: help.c:552 +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:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" skalet som används av kommandot \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" katalog för temporärfiler\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Tillgänglig hjälp:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "kunde inte skriva kommandohistorien till \"%s\": %m" + +#: input.c:535 +#, 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" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: escape:ad" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Använd \"\\q\" för att lämna %s.\n" + +#: mainloop.c:214 +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:295 +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:297 +msgid "Use \\? for help." +msgstr "Använd \\? för hjälp." + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Du använder psql, den interaktiva PostgreSQL-terminalen." + +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Använd \\q för att avsluta." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Använd control-D för att avsluta." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Använd control-C för att avsluta." + +#: mainloop.c:459 mainloop.c:618 +#, 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:636 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "namn" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "aggregatsignatur" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "nytt_namn" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "ny_ägare" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "nytt_schema" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +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:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "arg_läge" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "arg_namn" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "arg_typ" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "flaggor" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "där flaggor kan vara:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "tillåtansl" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "anslutningstak" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "ärmall" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "nytt_tabellutrymme" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "konfigurationsparameter" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "värde" + +#: sql_help.c:200 +msgid "target_role" +msgstr "målroll" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "schemanamn" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "förkortad_grant_eller_revoke" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "där förkortad_grant_eller_revok är en av:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "rollnamn" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "uttryck" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "domain_villkor" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "villkorsnamn" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "nyy_villkorsnamn" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "ny_version" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "medlemsobjekt" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "där medlemsobjekt är:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "objektnamn" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "aggregatnamn" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "källtyp" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "måltyp" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "funktionsnamn" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "operatornamn" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "vänster_typ" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "höger_typ" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "indexmetod" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "procedurnamn" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "rutinnamn" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "typnamn" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "språknamn" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "och aggregatsignatur är:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "hanterarfunktion" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "valideringsfunktion" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "aktion" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "kolumnnamn" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "nytt_kolumnnamn" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "där aktion är en av:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "datatyp" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "jämförelse" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "kolumnvillkor" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "heltal" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "attributalternativ" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "tabellvillkor" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "triggernamn" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "föräldertabell" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "utökningsnamn" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "körkostnad" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "resultatrader" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "supportfunktion" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "rollspecifikation" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "användarnamn" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "där rollspecifikation kan vara:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "gruppnamn" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "tabellutrymmesnamn" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "indexnamn" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "lagringsparameter" + +#: sql_help.c:607 +msgid "column_number" +msgstr "kolumnnummer" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "stort_objekt_oid" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "komprimeringsmetod" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "ny_accessmetod" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "join_proc" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "strateginummer" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "op_typ" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "sorteringsfamiljnamn" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "supportnummer" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "argumenttyp" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "tabellnamn" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "using-uttryck" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "check-uttryck" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "publiceringsobject" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "publiceringsparameter" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "där publiceringsobjekt är en av:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "lösenord" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "tidsstämpel" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "databasnamn" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "ökningsvärde" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "minvärde" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "maxvärde" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "start" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "starta om" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "cache" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "nytt_mål" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "anslinfo" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "publiceringsnamn" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "publicerings_alternativ" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "refresh_alternativ" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "prenumerationsparameter" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "skip_alternativ" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "partitionsnamn" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "partitionsgränsspec" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "sekvensalternativ" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "sekvensalternativ" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "tabellvillkor_för_index" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "omskrivningsregelnamn" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "och partitionsgränsspec är:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "partitionsgränsuttryck" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "numerisk_literal" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "och kolumnvillkor är:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "default_uttryck" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "generatoruttryck" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "indexparametrar" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "reftabell" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "refkolumn" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "referentiell_aktion" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "och tabellvillkor är:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "uteslutelement" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "operator" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "predikat" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "och tabellvillkor_för_index är:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "indexparametrar i UNIQUE-, PRIMARY KEY- och EXCLUDE-villkor är:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "uteslutelement i ett EXCLUDE-villkort är:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "op-klass" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "referentiell_aktion i ett FOREIGN KEY/REFERENCES-villkor är:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "tabellutrymmesalternativ" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "symboltyp" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "ordlistnamn" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "gammal_ordlista" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "ny_ordlista" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "attributnamn" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "nytt_attributnamn" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "nytt_enumvärde" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "närliggande_enumvärde" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "existerande_enumvärde" + +#: sql_help.c:1589 +msgid "property" +msgstr "egenskap" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "servernamn" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "visningsalternativnamn" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "visningsalternativvärde" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "tabell_och_kolumner" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "där flaggor kan vara en av:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "och tabell_och_kolumner är:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "transaktionsläge" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "där transaktionsläge är en av:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "argument" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "relationsnamn" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "domännamn" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "policynamn" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "regelnamn" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "sträng_literal" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "transaktions-id" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "filnamn" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "kommando" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "villkor" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "fråga" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "formatnamn" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "avdelartecken" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "null-sträng" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "citattecken" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "escape-tecken" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "kodningsnamn" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "accessmetodtyp" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "arg_datatyp" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "sfunc" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "tillståndsdatatyp" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "tillståndsdatastorlek" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "ffunc" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "kombinerafunk" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "serialiseringsfunk" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "deserialiseringsfunk" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "startvärde" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "msfunk" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "minvfunk" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "mtillståndsdatatyp" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "ntillståndsstorlek" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "mffunk" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "mstartvärde" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "sorteringsoperator" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "eller gamla syntaxen" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "bastyp" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "lokal" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "leverantör" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "version" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "existerande_jämförelse" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "källkodning" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "målkodning" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "mall" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "kodning" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "strategi" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "icu_lokal" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "lokal_leverantör" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "jämförelse_version" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "villkor" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "där villkor är:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "händelse" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "filtervariabel" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "filtervärde" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "där kolumnvillkor är:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "rettyp" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "kolumntyp" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "definition" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "obj-fil" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "linksymbol" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "sql-kropp" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "metod" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "opclass_parameter" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "anropshanterare" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "inline-hanterare" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "val-funktion" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "familjenamn" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "lagringstyp" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "där händelse kan vara en av:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "schema-element" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "servertyp" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "serverversion" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "fdw-namn" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "statistiknamn" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "statistiksort" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "prenumerationsnamn" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "källtabell" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "like_alternativ" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "och likealternativ är:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "katalog" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "parsernamn" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "källkonfig" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "startfunktion" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "gettoken_funktion" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "slutfunktion" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "symboltypfunktion" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "rubrikfunktion" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "init_funktion" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "symboluppdelningsfunktion" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "från_sql_funktionsnamn" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "till_sql_funktionsnamn" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "refererat_tabellnamn" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "övergångsrelationsnamn" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "argument" + +#: sql_help.c:3170 +msgid "label" +msgstr "etikett" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "subtyp" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "subtypoperatorklass" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "kanonisk_funktion" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "subtyp_diff_funktion" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "multirange_typnamn" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "inmatningsfunktion" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "utmatningsfunktion" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "mottagarfunktion" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "sändfunktion" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "typmodifiering_indatafunktion" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "typmodifiering_utdatafunktion" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "analysfunktion" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "arrayindexfunktion" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "internlängd" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "justering" + +#: sql_help.c:3189 +msgid "storage" +msgstr "lagring" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "liketyp" + +#: sql_help.c:3191 +msgid "category" +msgstr "kategori" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "föredragen" + +#: sql_help.c:3193 +msgid "default" +msgstr "standard" + +#: sql_help.c:3194 +msgid "element" +msgstr "element" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "avskiljare" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "sorterbar" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "with_fråga" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "alias" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "frånval" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "markörnamn" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "utdatauttryck" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "utdatanamn" + +#: sql_help.c:3316 +msgid "code" +msgstr "kod" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "parameter" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "sats" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "riktning" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "där riktning kan vara en av:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "antal" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "sekvensnamn" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "arg_namn" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "arg_typ" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "externt_schema" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "lokalt_schema" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "konfliktmål" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "konfliktaktion" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "där konfliktmål kan vara en av:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "indexkolumnnamn" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "indexuttryck" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "indexpredikat" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "och konfliktaktion är en av:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "sub-SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "kanal" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "låsläge" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "där låsläge är en av:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "måltabellnamn" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "målalias" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "datakälla" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "join-villkor" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "when_sats" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "där datakälla är:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "källtabellnamn" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "källfråga" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "källalias" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "och when_sats är:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "merge_update" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "merge_delete" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "merge_insert" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "och merge_insert är:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "och merge_update är:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "och merge_delete är:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "innehåll" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "gammal_roll" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "ny_roll" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "sparpunktnamn" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "gruperingselement" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "fönsternamn" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "fönsterdefinition" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "select" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "där frånval kan vara en av:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "kolumnalias" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "samplingsmetod" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "frö" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "with_frågenamn" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "kolumndefinition" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "join-typ" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "join-kolumn" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "join_using_alias" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "och grupperingselement kan vara en av:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "och with_fråga är:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "värden" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "update" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "söksekvens_kolumnnamn" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "cykelmarkering_kolumnnamn" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "cykelmarkering_värde" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "cykelmarkering_standard" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "cykelväg_kolumnnamn" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "ny_tabell" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "snapshot_id" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "sorteringsuttryck" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "avbryt aktuell transaktion" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "ändra definitionen av en aggregatfunktion" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "ändra definitionen av en jämförelse" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "ändra definitionen av en konvertering" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "ändra en databas" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "definiera standardaccessrättigheter" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "ändra definitionen av en domän" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "ändra definitionen av en händelsetrigger" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "ändra definitionen av en utökning" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "ändra definitionen av en främmande data-omvandlare" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "ändra definitionen av en främmande tabell" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "ändra definitionen av en funktion" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "ändra rollnamn eller medlemskap" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "ändra definitionen av ett index" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "ändra definitionen av ett procedur-språk" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "ändra definitionen av ett stort objekt" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "ändra definitionen av en materialiserad vy" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "ändra definitionen av en operator" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "ändra definitionen av en operatorklass" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "ändra definitionen av en operatorfamilj" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "ändra definitionen av en säkerhetspolicy på radnivå" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "ändra definitionen av en procedur" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "ändra definitionen av en publicering" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "ändra databasroll" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "ändra definitionen av en rutin" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "ändra definitionen av en regel" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "ändra definitionen av ett schema" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "ändra definitionen av en sekvensgenerator" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "ändra definitionen av en främmande server" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "ändra definitionen av ett utökat statistikobjekt" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "ändra definitionen av en prenumerering" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "ändra en servers konfigurationsparameter" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "ändra definitionen av en tabell" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "ändra definitionen av ett tabellutrymme" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "ändra definitionen av en textsökkonfiguration" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "ändra definitionen av en textsökordlista" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "ändra definitionen av en textsökparser" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "ändra definitionen av en textsökmall" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "ändra definitionen av en trigger" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "ändra definitionen av en typ" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "ändra definitionen av en användarmappning" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "ändra definitionen av en vy" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "samla in statistik om en databas" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "starta ett transaktionsblock" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "anropa en procedur" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "tvinga checkpoint i transaktionsloggen" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "stäng en markör" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "klustra en tabell efter ett index" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "definiera eller ändra en kommentar på ett objekt" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "utför den aktuella transaktionen" + +#: sql_help.c:5434 +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:5440 +msgid "copy data between a file and a table" +msgstr "kopiera data mellan en fil och en tabell" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "definiera en ny accessmetod" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "definiera en ny aggregatfunktion" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "definiera en ny typomvandling" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "definiera en ny jämförelse" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "definiera en ny teckenkodningskonvertering" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "skapa en ny databas" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "definiera en ny domän" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "definiera en ny händelsetrigger" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "installera en utökning" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "definiera en ny främmande data-omvandlare" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "definiera en ny främmande tabell" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "definiera en ny funktion" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "definiera en ny databasroll" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "skapa ett nytt index" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "definiera ett nytt procedur-språk" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "definiera en ny materialiserad vy" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "definiera en ny operator" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "definiera en ny operatorklass" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "definiera en ny operatorfamilj" + +#: sql_help.c:5560 +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:5566 +msgid "define a new procedure" +msgstr "definiera ett ny procedur" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "definiera en ny publicering" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "definiera en ny omskrivningsregel" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "definiera ett nytt schema" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "definiera en ny sekvensgenerator" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "definiera en ny främmande server" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "definiera utökad statistik" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "definiera en ny prenumeration" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "definiera en ny tabell" + +#: sql_help.c:5626 sql_help.c:6148 +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:5632 +msgid "define a new tablespace" +msgstr "definiera ett nytt tabellutrymme" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "definiera en ny textsökkonfiguration" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "definiera en ny textsökordlista" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "definiera en ny textsökparser" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "definiera en ny textsökmall" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "definiera en ny transform" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "definiera en ny trigger" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "definiera en ny datatyp" + +#: sql_help.c:5686 +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:5692 +msgid "define a new view" +msgstr "definiera en ny vy" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "deallokera en förberedd sats" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "definiera en markör" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "radera rader i en tabell" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "släng sessionstillstånd" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "kör ett annonymt kodblock" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "ta bort en accessmetod" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "ta bort en aggregatfunktioner" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "ta bort en typomvandling" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "ta bort en jämförelse" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "ta bort en konvertering" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "ta bort en databas" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "ta bort en domän" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "ta bort en händelsetrigger" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "ta bort en utökning" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "ta bort en frammande data-omvandlare" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "ta bort en främmande tabell" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "ta bort en funktion" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "ta bort en databasroll" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "ta bort ett index" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "ta bort ett procedur-språk" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "ta bort en materialiserad vy" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "ta bort en operator" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "ta bort en operatorklass" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "ta bort en operatorfamilj" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "ta bort databasobjekt som ägs av databasroll" + +#: sql_help.c:5848 +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:5854 +msgid "remove a procedure" +msgstr "ta bort en procedur" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "ta bort en publicering" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "ta bort en rutin" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "ta bort en omskrivningsregel" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "ta bort ett schema" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "ta bort en sekvens" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "ta bort en främmande server-deskriptor" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "ta bort utökad statistik" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "ta bort en prenumeration" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "ta bort en tabell" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "ta bort ett tabellutrymme" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "ta bort en textsökkonfiguration" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "ta bort en textsökordlista" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "ta bort en textsökparser" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "ta bort en textsökmall" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "ta bort en transform" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "ta bort en trigger" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "ta bort en datatyp" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "ta bort en användarmappning för en främmande server" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "ta bort en vy" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "utför en förberedd sats" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "visa körningsplanen för en sats" + +#: sql_help.c:6004 +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:6010 +msgid "define access privileges" +msgstr "definera åtkomsträttigheter" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "importera tabelldefinitioner från en främmande server" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "skapa nya rader i en tabell" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "lyssna efter notifiering" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "ladda en delad biblioteksfil (shared library)" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "lås en tabell" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "villkorlig insert, updare eller delete av rader i en tabell" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "flytta en markör" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "generera en notifiering" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "förbered en sats för körning" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "avbryt aktuell transaktion för två-fas-commit" + +#: sql_help.c:6076 +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:6082 +msgid "replace the contents of a materialized view" +msgstr "ersätt innehållet av en materialiserad vy" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "återskapa index" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "ta bort en tidigare definierad sparpunkt" + +#: sql_help.c:6100 +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:6106 +msgid "remove access privileges" +msgstr "ta bort åtkomsträttigheter" + +#: sql_help.c:6118 +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:6124 +msgid "roll back to a savepoint" +msgstr "rulla tillbaka till sparpunkt" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "definera en ny sparpunkt i den aktuella transaktionen" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "definiera eller ändra en säkerhetsetikett på ett objekt" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "hämta rader från en tabell eller vy" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "ändra en körningsparameter" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "sätt integritetsvillkorstiming för nuvarande transaktion" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "sätt användare för den aktiva sessionen" + +#: sql_help.c:6172 +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:6178 +msgid "set the characteristics of the current transaction" +msgstr "sätt inställningar för nuvarande transaktionen" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "visa värde på en körningsparameter" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "töm en eller flera tabeller" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "sluta att lyssna efter notifiering" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "uppdatera rader i en tabell" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "skräpsamla och eventuellt analysera en databas" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "beräkna en mängd rader" + +#: startup.c:220 +#, 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:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "kunde inte öppna loggfil \"%s\": %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Skriv \"help\" för hjälp.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "kunde inte sätta utskriftsparameter \"%s\"" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Försök med \"%s --help\" för mer information." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "extra kommandoradsargument \"%s\" ignorerad" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "kunde inte hitta det egna programmets körbara fil" + +#: tab-complete.c:5955 +#, 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:419 +#, 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." + +#, 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" + +#, c-format +#~ msgid "\\watch cannot be used with COPY" +#~ msgstr "\\watch kan inte användas med COPY" + +#~ msgid "match" +#~ msgstr "match" + +#~ msgid "text" +#~ msgstr "text" + +#~ msgid "timezone" +#~ msgstr "tidszon" + +#~ msgid "where direction can be empty or one of:" +#~ msgstr "där riktning kan vara tom eller en av:" diff --git a/src/bin/psql/po/uk.po b/src/bin/psql/po/uk.po new file mode 100644 index 0000000..93cc6e8 --- /dev/null +++ b/src/bin/psql/po/uk.po @@ -0,0 +1,6427 @@ +msgid "" +msgstr "" +"Project-Id-Version: postgresql\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2023-04-18 19:16+0000\n" +"PO-Revision-Date: 2023-04-20 14:13+0200\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: /REL_15_STABLE/psql.pot\n" +"X-Crowdin-File-ID: 900\n" + +#: ../../../src/common/logging.c:276 +#, c-format +msgid "error: " +msgstr "помилка: " + +#: ../../../src/common/logging.c:283 +#, c-format +msgid "warning: " +msgstr "попередження: " + +#: ../../../src/common/logging.c:294 +#, c-format +msgid "detail: " +msgstr "деталі: " + +#: ../../../src/common/logging.c:301 +#, c-format +msgid "hint: " +msgstr "підказка: " + +#: ../../common/exec.c:149 ../../common/exec.c:266 ../../common/exec.c:312 +#, c-format +msgid "could not identify current directory: %m" +msgstr "не вдалося визначити поточний каталог: %m" + +#: ../../common/exec.c:168 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "невірний бінарний файл \"%s\"" + +#: ../../common/exec.c:218 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "неможливо прочитати бінарний файл \"%s\"" + +#: ../../common/exec.c:226 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "неможливо знайти \"%s\" для виконання" + +#: ../../common/exec.c:282 ../../common/exec.c:321 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "не вдалося змінити каталог на \"%s\": %m" + +#: ../../common/exec.c:299 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "не можливо прочитати символічне послання \"%s\": %m" + +#: ../../common/exec.c:422 +#, c-format +msgid "%s() failed: %m" +msgstr "%s() помилка: %m" + +#: ../../common/exec.c:560 ../../common/exec.c:605 ../../common/exec.c:697 +#: command.c:1321 command.c:3310 command.c:3359 command.c:3483 input.c:227 +#: mainloop.c:80 mainloop.c:398 +#, 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:575 +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:189 ../../fe_utils/cancel.c:238 +msgid "Cancel request sent\n" +msgstr "Запит на скасування відправлений\n" + +#: ../../fe_utils/cancel.c:190 ../../fe_utils/cancel.c:239 +msgid "Could not send cancel request: " +msgstr "Не вдалося надіслати запит на скасування: " + +#: ../../fe_utils/print.c:406 +#, 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:3109 +#, c-format +msgid "Interrupted\n" +msgstr "Перервано\n" + +#: ../../fe_utils/print.c:3173 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "Неможливо додати заголовок до вмісту таблиці: кількість колонок %d перевищено.\n" + +#: ../../fe_utils/print.c:3213 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "Неможливо додати комірку до вмісту таблиці: перевищено загальну кількість комірок %d.\n" + +#: ../../fe_utils/print.c:3471 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "невірний формат виводу (внутрішня помилка): %d" + +#: ../../fe_utils/psqlscan.l:702 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "пропуск рекурсивного розгортання змінної \"%s\"" + +#: ../../port/thread.c:100 ../../port/thread.c:136 +#, c-format +msgid "could not look up local user ID %d: %s" +msgstr "не вдалося знайти локального користувача з ідентифікатором %d: %s" + +#: ../../port/thread.c:105 ../../port/thread.c:141 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "локального користувача з ідентифікатором %d не існує" + +#: command.c:232 +#, c-format +msgid "invalid command \\%s" +msgstr "Невірна команда \\%s" + +#: command.c:234 +#, c-format +msgid "Try \\? for help." +msgstr "Спробуйте \\? для отримання довідки." + +#: command.c:252 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s: зайвий аргумент \"%s\" проігноровано" + +#: command.c:304 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "\\%s команду проігноровано; скористайтесь \\endif або Ctrl-C, щоб вийти з поточного блоку \\if" + +#: command.c:573 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "неможливо отримати домашню директорію для користувача ID %ld: %s" + +#: command.c:592 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: неможливо змінити директорію на \"%s\": %m" + +#: command.c:617 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "На даний момент ви від'єднанні від бази даних.\n" + +#: command.c:627 +#, 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:630 +#, 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:636 +#, 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:639 +#, 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:1030 command.c:1125 command.c:2654 +#, c-format +msgid "no query buffer" +msgstr "немає буферу запитів" + +#: command.c:1063 command.c:5491 +#, c-format +msgid "invalid line number: %s" +msgstr "невірний номер рядка: %s" + +#: command.c:1203 +msgid "No changes" +msgstr "Без змін" + +#: command.c:1282 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s: невірне ім'я кодування або не знайдено процедуру конверсії" + +#: command.c:1317 command.c:2120 command.c:3306 command.c:3505 command.c:5597 +#: common.c:181 common.c:230 common.c:399 common.c:1082 common.c:1100 +#: common.c:1174 common.c:1281 common.c:1319 common.c:1407 common.c:1443 +#: copy.c:488 copy.c:722 help.c:66 large_obj.c:157 large_obj.c:192 +#: large_obj.c:254 startup.c:304 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1324 +msgid "There is no previous error." +msgstr "Попередня помилка відсутня." + +#: command.c:1437 +#, c-format +msgid "\\%s: missing right parenthesis" +msgstr "\\%s: відсутня права дужка" + +#: command.c:1521 command.c:1651 command.c:1956 command.c:1970 command.c:1989 +#: command.c:2173 command.c:2415 command.c:2621 command.c:2661 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s: не вистачає обов'язкового аргументу" + +#: command.c:1782 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif: не може йти після \\else" + +#: command.c:1787 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: немає відповідного \\if" + +#: command.c:1851 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: не може йти після \\else" + +#: command.c:1856 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: немає відповідного \\if" + +#: command.c:1896 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif: немає відповідного \\if" + +#: command.c:2053 +msgid "Query buffer is empty." +msgstr "Буфер запиту порожній." + +#: command.c:2096 +#, c-format +msgid "Enter new password for user \"%s\": " +msgstr "Введіть новий пароль користувача \"%s\": " + +#: command.c:2100 +msgid "Enter it again: " +msgstr "Введіть знову: " + +#: command.c:2109 +#, c-format +msgid "Passwords didn't match." +msgstr "Паролі не співпадають." + +#: command.c:2208 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s: не вдалося прочитати значення змінної" + +#: command.c:2311 +msgid "Query buffer reset (cleared)." +msgstr "Буфер запитів скинуто (очищено)." + +#: command.c:2333 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "Історію записано до файлу \"%s\".\n" + +#: command.c:2420 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: змінна середовища не повинна містити \"=\"" + +#: command.c:2468 +#, c-format +msgid "function name is required" +msgstr "необхідне ім'я функції" + +#: command.c:2470 +#, c-format +msgid "view name is required" +msgstr "необхідне ім'я подання" + +#: command.c:2593 +msgid "Timing is on." +msgstr "Таймер увімкнено." + +#: command.c:2595 +msgid "Timing is off." +msgstr "Таймер вимкнено." + +#: command.c:2680 command.c:2708 command.c:3946 command.c:3949 command.c:3952 +#: command.c:3958 command.c:3960 command.c:3986 command.c:3996 command.c:4008 +#: command.c:4022 command.c:4049 command.c:4107 common.c:77 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:3107 startup.c:243 startup.c:293 +msgid "Password: " +msgstr "Пароль: " + +#: command.c:3112 startup.c:290 +#, c-format +msgid "Password for user %s: " +msgstr "Пароль користувача %s:" + +#: command.c:3168 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "Не надайте користувачеві, хосту або порту окремо під час використання рядка підключення" + +#: command.c:3203 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "Не існує підключення до бази даних для повторного використання параметрів" + +#: command.c:3511 +#, c-format +msgid "Previous connection kept" +msgstr "Попереднє підключення триває" + +#: command.c:3517 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:3573 +#, 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:3576 +#, 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:3582 +#, 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:3585 +#, 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:3590 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Ви тепер під'єднані до бази даних \"%s\" як користувач \"%s\".\n" + +#: command.c:3630 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, сервер %s)\n" + +#: command.c:3643 +#, 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:3680 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, compression: %s)\n" +msgstr "З'єднання SSL (протокол: %s, шифр: %s, компресія: %s)\n" + +#: command.c:3681 command.c:3682 +msgid "unknown" +msgstr "невідомо" + +#: command.c:3683 help.c:42 +msgid "off" +msgstr "вимк" + +#: command.c:3683 help.c:42 +msgid "on" +msgstr "увімк" + +#: command.c:3697 +#, c-format +msgid "GSSAPI-encrypted connection\n" +msgstr "З'єднання зашифровано GSSAPI\n" + +#: command.c:3717 +#, 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:3822 +#, c-format +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number" +msgstr "змінна середовища PSQL_EDITOR_LINENUMBER_ARG має бути встановлена, щоб вказувати номер рядка" + +#: command.c:3851 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "неможливо запустити редактор \"%s\"" + +#: command.c:3853 +#, c-format +msgid "could not start /bin/sh" +msgstr "неможливо запустити /bin/sh" + +#: command.c:3903 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "неможливо знайти тимчасову директорію: %s" + +#: command.c:3930 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "неможливо відкрити тимчасовий файл \"%s\": %m" + +#: command.c:4266 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "\\pset: неоднозначна абревіатура \"%s\" відповідає обом \"%s\" і \"%s" + +#: command.c:4286 +#, 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:4305 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: дозволені стилі ліній: ascii, old-ascii, unicode" + +#: command.c:4320 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset: дозволені стилі ліній рамок Unicode: single, double" + +#: command.c:4335 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset: дозволені стилі ліній стовпців для Unicode: single, double" + +#: command.c:4350 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset: дозволені стилі ліній заголовків для Unicode: single, double" + +#: command.c:4393 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: csv_fieldsep повинен бути однобайтовим символом" + +#: command.c:4398 +#, c-format +msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return" +msgstr "\\pset: csv_fieldsep не може бути подвійною лапкою, новим рядком або поверненням каретки" + +#: command.c:4535 command.c:4723 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: невідомий параметр: %s" + +#: command.c:4555 +#, c-format +msgid "Border style is %d.\n" +msgstr "Стиль рамки %d.\n" + +#: command.c:4561 +#, c-format +msgid "Target width is unset.\n" +msgstr "Цільова ширина не встановлена.\n" + +#: command.c:4563 +#, c-format +msgid "Target width is %d.\n" +msgstr "Цільова ширина %d.\n" + +#: command.c:4570 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Розширене відображення увімкнуто.\n" + +#: command.c:4572 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "Розширене відображення використовується автоматично.\n" + +#: command.c:4574 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Розширене відображення вимкнуто.\n" + +#: command.c:4580 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "Розділювач полів CSV: \"%s\".\n" + +#: command.c:4588 command.c:4596 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Розділювач полів - нульовий байт.\n" + +#: command.c:4590 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Розділювач полів \"%s\".\n" + +#: command.c:4603 +#, c-format +msgid "Default footer is on.\n" +msgstr "Нинжній колонтитул увімкнуто за замовчуванням.\n" + +#: command.c:4605 +#, c-format +msgid "Default footer is off.\n" +msgstr "Нинжній колонтитул вимкнуто за замовчуванням.\n" + +#: command.c:4611 +#, c-format +msgid "Output format is %s.\n" +msgstr "Формат виводу %s.\n" + +#: command.c:4617 +#, c-format +msgid "Line style is %s.\n" +msgstr "Стиль лінії %s.\n" + +#: command.c:4624 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null відображається як \"%s\".\n" + +#: command.c:4632 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "Локалізоване виведення чисел ввімкнено.\n" + +#: command.c:4634 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "Локалізоване виведення чисел вимкнено.\n" + +#: command.c:4641 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Пейджер використовується для виведення довгого тексту.\n" + +#: command.c:4643 +#, c-format +msgid "Pager is always used.\n" +msgstr "Завжди використовується пейджер.\n" + +#: command.c:4645 +#, c-format +msgid "Pager usage is off.\n" +msgstr "Пейджер не використовується.\n" + +#: command.c:4651 +#, 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:4661 command.c:4671 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Розділювач записів - нульовий байт.\n" + +#: command.c:4663 +#, c-format +msgid "Record separator is .\n" +msgstr "Розділювач записів: .\n" + +#: command.c:4665 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Розділювач записів: \"%s\".\n" + +#: command.c:4678 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Табличні атрибути \"%s\".\n" + +#: command.c:4681 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Атрибути таблиць не задані.\n" + +#: command.c:4688 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Заголовок: \"%s\".\n" + +#: command.c:4690 +#, c-format +msgid "Title is unset.\n" +msgstr "Заголовок не встановлено.\n" + +#: command.c:4697 +#, c-format +msgid "Tuples only is on.\n" +msgstr "Увімкнуто тільки кортежі.\n" + +#: command.c:4699 +#, c-format +msgid "Tuples only is off.\n" +msgstr "Вимкнуто тільки кортежі.\n" + +#: command.c:4705 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Стиль ліній рамки для Unicode: \"%s\".\n" + +#: command.c:4711 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Стиль ліній стовпців для Unicode: \"%s\".\n" + +#: command.c:4717 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Стиль ліній заголовків для Unicode: \"%s\".\n" + +#: command.c:4950 +#, c-format +msgid "\\!: failed" +msgstr "\\!: помилка" + +#: command.c:4984 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch не може бути використано із пустим запитом" + +#: command.c:5016 +#, c-format +msgid "could not set timer: %m" +msgstr "не вдалося встановити таймер: %m" + +#: command.c:5078 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (кожні %g сек)\n" + +#: command.c:5081 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (кожні %g сек)\n" + +#: command.c:5142 +#, c-format +msgid "could not wait for signals: %m" +msgstr "не вдалося дочекатися сигналів: %m" + +#: command.c:5200 command.c:5207 common.c:572 common.c:579 common.c:1063 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* ЗАПИТ **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5386 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\" не є поданням" + +#: command.c:5402 +#, c-format +msgid "could not parse reloptions array" +msgstr "неможливо розібрати масив reloptions" + +#: common.c:166 +#, c-format +msgid "cannot escape without active connection" +msgstr "не можна вийти без активного з'єднання" + +#: common.c:207 +#, c-format +msgid "shell command argument contains a newline or carriage return: \"%s\"" +msgstr "аргумент командної оболонки містить символ нового рядка або повернення каретки: \"%s\"" + +#: common.c:311 +#, c-format +msgid "connection to server was lost" +msgstr "з'єднання із сервером втрачено" + +#: common.c:315 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "З'єднання із сервером втрачено. Спроба перевстановити:" + +#: common.c:320 +#, c-format +msgid "Failed.\n" +msgstr "Помилка.\n" + +#: common.c:337 +#, c-format +msgid "Succeeded.\n" +msgstr "Вдало.\n" + +#: common.c:389 common.c:1001 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "неочікуваний PQresultStatus: %d" + +#: common.c:511 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Час: %.3f мс\n" + +#: common.c:526 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "Час: %.3f мс (%02d:%06.3f)\n" + +#: common.c:535 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "Час: %.3f мс (%02d:%02d:%06.3f)\n" + +#: common.c:542 +#, c-format +msgid "Time: %.3f ms (%.0f d %02d:%02d:%06.3f)\n" +msgstr "Час: %.3f мс (%.0f d %02d:%02d:%06.3f)\n" + +#: common.c:566 common.c:623 common.c:1034 describe.c:6135 +#, c-format +msgid "You are currently not connected to a database." +msgstr "На даний момент ви від'єднанні від бази даних." + +#: common.c:654 +#, 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:657 +#, c-format +msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "Асинхронне сповіщення \"%s\" отримане від серверного процесу з PID %d.\n" + +#: common.c:688 +#, c-format +msgid "could not print result table: %m" +msgstr "не вдалося надрукувати таблицю результатів: %m" + +#: common.c:708 +#, c-format +msgid "no rows returned for \\gset" +msgstr "немає рядків повернутих для \\gset" + +#: common.c:713 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "більш, ніж один рядок повернуто для \\gset" + +#: common.c:731 +#, c-format +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "спробу виконати \\gset в спеціальну змінну \"%s\" проігноровано" + +#: common.c:1043 +#, 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:1126 +#, c-format +msgid "STATEMENT: %s" +msgstr "ІНСТРУКЦІЯ: %s" + +#: common.c:1162 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "неочікуваний стан транзакції (%d)" + +#: common.c:1303 describe.c:2020 +msgid "Column" +msgstr "Стовпець" + +#: common.c:1304 describe.c:170 describe.c:358 describe.c:376 describe.c:1037 +#: describe.c:1193 describe.c:1725 describe.c:1749 describe.c:2021 +#: describe.c:3891 describe.c:4103 describe.c:4342 describe.c:4504 +#: describe.c:5767 +msgid "Type" +msgstr "Тип" + +#: common.c:1353 +#, 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:684 +msgid "aborted because of read failure" +msgstr "перервано через помилку читання" + +#: copy.c:718 +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:87 describe.c:338 describe.c:635 describe.c:812 describe.c:1029 +#: describe.c:1182 describe.c:1257 describe.c:3880 describe.c:4090 +#: describe.c:4340 describe.c:4422 describe.c:4657 describe.c:4866 +#: describe.c:5095 describe.c:5339 describe.c:5409 describe.c:5420 +#: describe.c:5477 describe.c:5881 describe.c:5959 +msgid "Schema" +msgstr "Схема" + +#: describe.c:88 describe.c:167 describe.c:229 describe.c:339 describe.c:636 +#: describe.c:813 describe.c:936 describe.c:1030 describe.c:1258 +#: describe.c:3881 describe.c:4091 describe.c:4256 describe.c:4341 +#: describe.c:4423 describe.c:4586 describe.c:4658 describe.c:4867 +#: describe.c:4967 describe.c:5096 describe.c:5340 describe.c:5410 +#: describe.c:5421 describe.c:5478 describe.c:5677 describe.c:5748 +#: describe.c:5957 describe.c:6186 describe.c:6494 +msgid "Name" +msgstr "Назва" + +#: describe.c:89 describe.c:351 describe.c:369 +msgid "Result data type" +msgstr "Тип даних результату" + +#: describe.c:90 describe.c:352 describe.c:370 +msgid "Argument data types" +msgstr "Типи даних аргументів" + +#: describe.c:98 describe.c:105 describe.c:178 describe.c:243 describe.c:423 +#: describe.c:667 describe.c:828 describe.c:965 describe.c:1260 describe.c:2041 +#: describe.c:3676 describe.c:3935 describe.c:4137 describe.c:4280 +#: describe.c:4354 describe.c:4432 describe.c:4599 describe.c:4777 +#: describe.c:4903 describe.c:4976 describe.c:5097 describe.c:5248 +#: describe.c:5290 describe.c:5356 describe.c:5413 describe.c:5422 +#: describe.c:5479 describe.c:5695 describe.c:5770 describe.c:5895 +#: describe.c:5960 describe.c:6992 +msgid "Description" +msgstr "Опис" + +#: describe.c:128 +msgid "List of aggregate functions" +msgstr "Перелік агрегатних функцій" + +#: describe.c:153 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "Сервер (версія %s) не підтримує методи доступу." + +#: describe.c:168 +msgid "Index" +msgstr "Індекс" + +#: describe.c:169 describe.c:3899 describe.c:4116 describe.c:5882 +msgid "Table" +msgstr "Таблиця" + +#: describe.c:177 describe.c:5679 +msgid "Handler" +msgstr "Обробник" + +#: describe.c:201 +msgid "List of access methods" +msgstr "Список методів доступу" + +#: describe.c:230 describe.c:404 describe.c:660 describe.c:937 describe.c:1181 +#: describe.c:3892 describe.c:4092 describe.c:4257 describe.c:4588 +#: describe.c:4968 describe.c:5678 describe.c:5749 describe.c:6187 +#: describe.c:6375 describe.c:6495 describe.c:6632 describe.c:6718 +#: describe.c:6980 +msgid "Owner" +msgstr "Власник" + +#: describe.c:231 +msgid "Location" +msgstr "Розташування" + +#: describe.c:241 describe.c:3509 +msgid "Options" +msgstr "Параметри" + +#: describe.c:242 describe.c:658 describe.c:963 describe.c:3934 +msgid "Size" +msgstr "Розмір" + +#: describe.c:266 +msgid "List of tablespaces" +msgstr "Список табличних просторів" + +#: describe.c:311 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df приймає в якості параметрів тільки [anptwS+]" + +#: describe.c:319 +#, 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:354 describe.c:372 +msgid "agg" +msgstr "агр." + +#: describe.c:355 describe.c:373 +msgid "window" +msgstr "вікно" + +#: describe.c:356 +msgid "proc" +msgstr "проц" + +#: describe.c:357 describe.c:375 +msgid "func" +msgstr "функ" + +#: describe.c:374 describe.c:1390 +msgid "trigger" +msgstr "тригер" + +#: describe.c:386 +msgid "immutable" +msgstr "постійна" + +#: describe.c:387 +msgid "stable" +msgstr "стабільна" + +#: describe.c:388 +msgid "volatile" +msgstr "мінлива" + +#: describe.c:389 +msgid "Volatility" +msgstr "Мінливість" + +#: describe.c:397 +msgid "restricted" +msgstr "обмежений" + +#: describe.c:398 +msgid "safe" +msgstr "безпечний" + +#: describe.c:399 +msgid "unsafe" +msgstr "небезпечний" + +#: describe.c:400 +msgid "Parallel" +msgstr "Паралельність" + +#: describe.c:405 +msgid "definer" +msgstr "визначник" + +#: describe.c:406 +msgid "invoker" +msgstr "викликач" + +#: describe.c:407 +msgid "Security" +msgstr "Безпека" + +#: describe.c:412 +msgid "Language" +msgstr "Мова" + +#: describe.c:416 describe.c:420 +msgid "Source code" +msgstr "Вихідний код" + +#: describe.c:594 +msgid "List of functions" +msgstr "Список функцій" + +#: describe.c:657 +msgid "Internal name" +msgstr "Внутрішнє назва" + +#: describe.c:659 +msgid "Elements" +msgstr "Елементи" + +#: describe.c:711 +msgid "List of data types" +msgstr "Список типів даних" + +#: describe.c:814 +msgid "Left arg type" +msgstr "Тип лівого аргумента" + +#: describe.c:815 +msgid "Right arg type" +msgstr "Тип правого аргумента" + +#: describe.c:816 +msgid "Result type" +msgstr "Результуючий тип" + +#: describe.c:821 describe.c:4594 describe.c:4760 describe.c:5247 +#: describe.c:6909 describe.c:6913 +msgid "Function" +msgstr "Функція" + +#: describe.c:902 +msgid "List of operators" +msgstr "Список операторів" + +#: describe.c:938 +msgid "Encoding" +msgstr "Кодування" + +#: describe.c:939 describe.c:4868 +msgid "Collate" +msgstr "Порядок сортування" + +#: describe.c:940 describe.c:4869 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:945 describe.c:951 describe.c:4874 describe.c:4878 +msgid "ICU Locale" +msgstr "Локалізація ICU" + +#: describe.c:946 describe.c:952 +msgid "Locale Provider" +msgstr "Постачальник локалі" + +#: describe.c:964 +msgid "Tablespace" +msgstr "Табличний простір" + +#: describe.c:990 +msgid "List of databases" +msgstr "Список баз даних" + +#: describe.c:1031 describe.c:1184 describe.c:3882 +msgid "table" +msgstr "таблиця" + +#: describe.c:1032 describe.c:3883 +msgid "view" +msgstr "подання" + +#: describe.c:1033 describe.c:3884 +msgid "materialized view" +msgstr "матеріалізоване подання" + +#: describe.c:1034 describe.c:1186 describe.c:3886 +msgid "sequence" +msgstr "послідовність" + +#: describe.c:1035 describe.c:3888 +msgid "foreign table" +msgstr "зовнішня таблиця" + +#: describe.c:1036 describe.c:3889 describe.c:4101 +msgid "partitioned table" +msgstr "секційна таблиця" + +#: describe.c:1047 +msgid "Column privileges" +msgstr "Права для стовпців" + +#: describe.c:1078 describe.c:1112 +msgid "Policies" +msgstr "Політики" + +#: describe.c:1143 describe.c:4510 describe.c:6577 +msgid "Access privileges" +msgstr "Права доступу" + +#: describe.c:1188 +msgid "function" +msgstr "функція" + +#: describe.c:1190 +msgid "type" +msgstr "тип" + +#: describe.c:1192 +msgid "schema" +msgstr "схема" + +#: describe.c:1215 +msgid "Default access privileges" +msgstr "Права доступу за замовчуванням" + +#: describe.c:1259 +msgid "Object" +msgstr "Об'єкт" + +#: describe.c:1273 +msgid "table constraint" +msgstr "обмеження таблиці" + +#: describe.c:1297 +msgid "domain constraint" +msgstr "обмеження домену" + +#: describe.c:1321 +msgid "operator class" +msgstr "клас операторів" + +#: describe.c:1345 +msgid "operator family" +msgstr "сімейство операторів" + +#: describe.c:1368 +msgid "rule" +msgstr "правило" + +#: describe.c:1414 +msgid "Object descriptions" +msgstr "Опис об'єкту" + +#: describe.c:1479 describe.c:4007 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "Не знайдено жодного відношення під назвою \"%s\"." + +#: describe.c:1482 describe.c:4010 +#, c-format +msgid "Did not find any relations." +msgstr "Не знайдено жодного відношення." + +#: describe.c:1678 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "Не знайдено жодного відношення з OID %s." + +#: describe.c:1726 describe.c:1750 +msgid "Start" +msgstr "Початок" + +#: describe.c:1727 describe.c:1751 +msgid "Minimum" +msgstr "Мінімум" + +#: describe.c:1728 describe.c:1752 +msgid "Maximum" +msgstr "Максимум" + +#: describe.c:1729 describe.c:1753 +msgid "Increment" +msgstr "Приріст" + +#: describe.c:1730 describe.c:1754 describe.c:1884 describe.c:4426 +#: describe.c:4771 describe.c:4892 describe.c:4897 describe.c:6620 +msgid "yes" +msgstr "так" + +#: describe.c:1731 describe.c:1755 describe.c:1885 describe.c:4426 +#: describe.c:4768 describe.c:4892 describe.c:6621 +msgid "no" +msgstr "ні" + +#: describe.c:1732 describe.c:1756 +msgid "Cycles?" +msgstr "Цикли?" + +#: describe.c:1733 describe.c:1757 +msgid "Cache" +msgstr "Кеш" + +#: describe.c:1798 +#, c-format +msgid "Owned by: %s" +msgstr "Власник: %s" + +#: describe.c:1802 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "Послідовність для стовпця identity: %s" + +#: describe.c:1810 +#, c-format +msgid "Unlogged sequence \"%s.%s\"" +msgstr "Послідовність без журналювання \"%s.%s\"" + +#: describe.c:1813 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Послідовність \"%s.%s\"" + +#: describe.c:1957 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Таблиця без журналювання \"%s.%s\"" + +#: describe.c:1960 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Таблиця \"%s.%s\"" + +#: describe.c:1964 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Подання \"%s.%s\"" + +#: describe.c:1969 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Матеріалізоване подання без журналювання \"%s.%s\"" + +#: describe.c:1972 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Матеріалізоване подання \"%s.%s\"" + +#: describe.c:1977 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Індекс без журналювання \"%s.%s\"" + +#: describe.c:1980 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Індекс \"%s.%s\"" + +#: describe.c:1985 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "Секційний індекс без журналювання \"%s.%s\"" + +#: describe.c:1988 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "Секційний індекс \"%s.%s\"" + +#: describe.c:1992 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "Таблиця TOAST \"%s.%s\"" + +#: describe.c:1996 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Композитний тип \"%s.%s\"" + +#: describe.c:2000 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Зовнішня таблиця \"%s.%s\"" + +#: describe.c:2005 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "Секційна таблиця без журналювання \"%s.%s\"" + +#: describe.c:2008 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "Секційна таблиця \"%s.%s\"" + +#: describe.c:2024 describe.c:4343 +msgid "Collation" +msgstr "Сортування" + +#: describe.c:2025 describe.c:4344 +msgid "Nullable" +msgstr "Обнуляється" + +#: describe.c:2026 describe.c:4345 +msgid "Default" +msgstr "За замовчуванням" + +#: describe.c:2029 +msgid "Key?" +msgstr "Ключ?" + +#: describe.c:2031 describe.c:4665 describe.c:4676 +msgid "Definition" +msgstr "Визначення" + +#: describe.c:2033 describe.c:5694 describe.c:5769 describe.c:5835 +#: describe.c:5894 +msgid "FDW options" +msgstr "Налаштування FDW" + +#: describe.c:2035 +msgid "Storage" +msgstr "Сховище" + +#: describe.c:2037 +msgid "Compression" +msgstr "Стискання" + +#: describe.c:2039 +msgid "Stats target" +msgstr "Статистична ціль" + +#: describe.c:2175 +#, c-format +msgid "Partition of: %s %s%s" +msgstr "Розділ: %s %s%s" + +#: describe.c:2188 +msgid "No partition constraint" +msgstr "Відсутнє розділове обмеження" + +#: describe.c:2190 +#, c-format +msgid "Partition constraint: %s" +msgstr "Обмеження секції: %s" + +#: describe.c:2214 +#, c-format +msgid "Partition key: %s" +msgstr "Ключ розділу: %s" + +#: describe.c:2240 +#, c-format +msgid "Owning table: \"%s.%s\"" +msgstr "Таблиця, що володіє: \"%s.%s\"" + +#: describe.c:2309 +msgid "primary key, " +msgstr "первинний ключ," + +#: describe.c:2312 +msgid "unique" +msgstr "унікальний" + +#: describe.c:2314 +msgid " nulls not distinct" +msgstr " nulls не відрізняються" + +#: describe.c:2315 +msgid ", " +msgstr ", " + +#: describe.c:2322 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "для таблиці \"%s.%s\"" + +#: describe.c:2326 +#, c-format +msgid ", predicate (%s)" +msgstr ", предикат (%s)" + +#: describe.c:2329 +msgid ", clustered" +msgstr ", кластеризовано" + +#: describe.c:2332 +msgid ", invalid" +msgstr ", недійсний" + +#: describe.c:2335 +msgid ", deferrable" +msgstr ", відтермінований" + +#: describe.c:2338 +msgid ", initially deferred" +msgstr ", від початку відтермінований" + +#: describe.c:2341 +msgid ", replica identity" +msgstr ", ідентичність репліки" + +#: describe.c:2395 +msgid "Indexes:" +msgstr "Індекси:" + +#: describe.c:2478 +msgid "Check constraints:" +msgstr "Обмеження перевірки:" + +#: describe.c:2546 +msgid "Foreign-key constraints:" +msgstr "Обмеження зовнішнього ключа:" + +#: describe.c:2609 +msgid "Referenced by:" +msgstr "Посилання ззовні:" + +#: describe.c:2659 +msgid "Policies:" +msgstr "Політики:" + +#: describe.c:2662 +msgid "Policies (forced row security enabled):" +msgstr "Політики (посилений захист рядків активовано):" + +#: describe.c:2665 +msgid "Policies (row security enabled): (none)" +msgstr "Політики (захист рядків ввімкнуто): (ні)" + +#: describe.c:2668 +msgid "Policies (forced row security enabled): (none)" +msgstr "Політики (посилений захист рядків ввімкнуто): (ні)" + +#: describe.c:2671 +msgid "Policies (row security disabled):" +msgstr "Політики (захист рядків вимкнуто):" + +#: describe.c:2731 describe.c:2835 +msgid "Statistics objects:" +msgstr "Об'єкти статистики:" + +#: describe.c:2937 describe.c:3090 +msgid "Rules:" +msgstr "Правила:" + +#: describe.c:2940 +msgid "Disabled rules:" +msgstr "Вимкнені правила:" + +#: describe.c:2943 +msgid "Rules firing always:" +msgstr "Правила, що завжди працюють:" + +#: describe.c:2946 +msgid "Rules firing on replica only:" +msgstr "Правила, що працюють тільки на репліці:" + +#: describe.c:3025 describe.c:5030 +msgid "Publications:" +msgstr "Публікації:" + +#: describe.c:3073 +msgid "View definition:" +msgstr "Визначення подання:" + +#: describe.c:3236 +msgid "Triggers:" +msgstr "Тригери:" + +#: describe.c:3239 +msgid "Disabled user triggers:" +msgstr "Вимкнені користувацькі тригери:" + +#: describe.c:3242 +msgid "Disabled internal triggers:" +msgstr "Вимкнені внутрішні тригери:" + +#: describe.c:3245 +msgid "Triggers firing always:" +msgstr "Тригери, що завжди працюють:" + +#: describe.c:3248 +msgid "Triggers firing on replica only:" +msgstr "Тригери, що працюють тільки на репліці:" + +#: describe.c:3319 +#, c-format +msgid "Server: %s" +msgstr "Сервер: %s" + +#: describe.c:3327 +#, c-format +msgid "FDW options: (%s)" +msgstr "Налаштування FDW: (%s)" + +#: describe.c:3348 +msgid "Inherits" +msgstr "Успадковує" + +#: describe.c:3413 +#, c-format +msgid "Number of partitions: %d" +msgstr "Число секцій: %d" + +#: describe.c:3422 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "Кількість розділів: %d (\\d+ для списку)" + +#: describe.c:3424 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Кількість дочірніх таблиць: %d (\\d+ для списку)" + +#: describe.c:3431 +msgid "Child tables" +msgstr "Дочірні таблиці" + +#: describe.c:3431 +msgid "Partitions" +msgstr "Розділи" + +#: describe.c:3462 +#, c-format +msgid "Typed table of type: %s" +msgstr "Типізована таблиця типу: %s" + +#: describe.c:3478 +msgid "Replica Identity" +msgstr "Ідентичність репліки" + +#: describe.c:3491 +msgid "Has OIDs: yes" +msgstr "Має OIDs: так" + +#: describe.c:3500 +#, c-format +msgid "Access method: %s" +msgstr "Метод доступу: %s" + +#: describe.c:3579 +#, 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:3591 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", табличний простір \"%s\"" + +#: describe.c:3668 +msgid "List of roles" +msgstr "Список ролей" + +#: describe.c:3670 +msgid "Role name" +msgstr "Ім'я ролі" + +#: describe.c:3671 +msgid "Attributes" +msgstr "Атрибути" + +#: describe.c:3673 +msgid "Member of" +msgstr "Член" + +#: describe.c:3684 +msgid "Superuser" +msgstr "Суперкористувач" + +#: describe.c:3687 +msgid "No inheritance" +msgstr "Без успадкування" + +#: describe.c:3690 +msgid "Create role" +msgstr "Створити роль" + +#: describe.c:3693 +msgid "Create DB" +msgstr "Створити базу даних" + +#: describe.c:3696 +msgid "Cannot login" +msgstr "Не може увійти" + +#: describe.c:3699 +msgid "Replication" +msgstr "Реплікація" + +#: describe.c:3703 +msgid "Bypass RLS" +msgstr "Обхід RLC" + +#: describe.c:3712 +msgid "No connections" +msgstr "Без підключень" + +#: describe.c:3714 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d підключення" +msgstr[1] "%d підключення" +msgstr[2] "%d підключень" +msgstr[3] "%d підключення" + +#: describe.c:3724 +msgid "Password valid until " +msgstr "Пароль дійнсий до" + +#: describe.c:3777 +msgid "Role" +msgstr "Роль" + +#: describe.c:3778 +msgid "Database" +msgstr "База даних" + +#: describe.c:3779 +msgid "Settings" +msgstr "Параметри" + +#: describe.c:3803 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "Не знайдено жодного параметра для ролі \"%s\" і бази даних \"%s\"." + +#: describe.c:3806 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "Не знайдено жодного параметру для ролі \"%s\"." + +#: describe.c:3809 +#, c-format +msgid "Did not find any settings." +msgstr "Не знайдено жодного параметру." + +#: describe.c:3814 +msgid "List of settings" +msgstr "Список параметрів" + +#: describe.c:3885 +msgid "index" +msgstr "індекс" + +#: describe.c:3887 +msgid "TOAST table" +msgstr "Таблиця TOAST" + +#: describe.c:3890 describe.c:4102 +msgid "partitioned index" +msgstr "секційний індекс" + +#: describe.c:3910 +msgid "permanent" +msgstr "постійна" + +#: describe.c:3911 +msgid "temporary" +msgstr "тимчасова" + +#: describe.c:3912 +msgid "unlogged" +msgstr "нежурнальована" + +#: describe.c:3913 +msgid "Persistence" +msgstr "Стійкість" + +#: describe.c:3929 +msgid "Access method" +msgstr "Метод доступу" + +#: describe.c:4015 +msgid "List of relations" +msgstr "Список відношень" + +#: describe.c:4063 +#, c-format +msgid "The server (version %s) does not support declarative table partitioning." +msgstr "Сервер (версія %s) не підтримує декларативне секціонування таблиць." + +#: describe.c:4074 +msgid "List of partitioned indexes" +msgstr "Список секційних індексів" + +#: describe.c:4076 +msgid "List of partitioned tables" +msgstr "Список секційних таблиць" + +#: describe.c:4080 +msgid "List of partitioned relations" +msgstr "Список секційних відношень" + +#: describe.c:4111 +msgid "Parent name" +msgstr "Батьківська назва" + +#: describe.c:4124 +msgid "Leaf partition size" +msgstr "Розмір дочірньої секції" + +#: describe.c:4127 describe.c:4133 +msgid "Total size" +msgstr "Загальний розмір" + +#: describe.c:4258 +msgid "Trusted" +msgstr "Надійний" + +#: describe.c:4267 +msgid "Internal language" +msgstr "Внутрішня мова" + +#: describe.c:4268 +msgid "Call handler" +msgstr "Обробник виклику" + +#: describe.c:4269 describe.c:5680 +msgid "Validator" +msgstr "Функція перевірки" + +#: describe.c:4270 +msgid "Inline handler" +msgstr "Оброблювач впровадженого коду" + +#: describe.c:4305 +msgid "List of languages" +msgstr "Список мов" + +#: describe.c:4346 +msgid "Check" +msgstr "Перевірка" + +#: describe.c:4390 +msgid "List of domains" +msgstr "Список доменів" + +#: describe.c:4424 +msgid "Source" +msgstr "Джерело" + +#: describe.c:4425 +msgid "Destination" +msgstr "Призначення" + +#: describe.c:4427 describe.c:6622 +msgid "Default?" +msgstr "За замовчуванням?" + +#: describe.c:4469 +msgid "List of conversions" +msgstr "Список перетворень" + +#: describe.c:4497 +msgid "Parameter" +msgstr "Параметр" + +#: describe.c:4498 +msgid "Value" +msgstr "Значення" + +#: describe.c:4505 +msgid "Context" +msgstr "Контекст" + +#: describe.c:4538 +msgid "List of configuration parameters" +msgstr "Список параметрів конфігурації" + +#: describe.c:4540 +msgid "List of non-default configuration parameters" +msgstr "Список параметрів конфігурації не за замовчуванням" + +#: describe.c:4567 +#, c-format +msgid "The server (version %s) does not support event triggers." +msgstr "Сервер (версія %s) не підтримує тригери подій." + +#: describe.c:4587 +msgid "Event" +msgstr "Подія" + +#: describe.c:4589 +msgid "enabled" +msgstr "увімкнено" + +#: describe.c:4590 +msgid "replica" +msgstr "репліка" + +#: describe.c:4591 +msgid "always" +msgstr "завжди" + +#: describe.c:4592 +msgid "disabled" +msgstr "вимкнено" + +#: describe.c:4593 describe.c:6496 +msgid "Enabled" +msgstr "Увімкнено" + +#: describe.c:4595 +msgid "Tags" +msgstr "Теги" + +#: describe.c:4619 +msgid "List of event triggers" +msgstr "Список тригерів подій" + +#: describe.c:4646 +#, c-format +msgid "The server (version %s) does not support extended statistics." +msgstr "Сервер (версія %s) не підтримує розширену статистику." + +#: describe.c:4683 +msgid "Ndistinct" +msgstr "Ndistinct" + +#: describe.c:4684 +msgid "Dependencies" +msgstr "Залежності" + +#: describe.c:4694 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4718 +msgid "List of extended statistics" +msgstr "Список розширеної статистики" + +#: describe.c:4745 +msgid "Source type" +msgstr "Початковий тип" + +#: describe.c:4746 +msgid "Target type" +msgstr "Тип цілі" + +#: describe.c:4770 +msgid "in assignment" +msgstr "у призначенні" + +#: describe.c:4772 +msgid "Implicit?" +msgstr "Приховане?" + +#: describe.c:4831 +msgid "List of casts" +msgstr "Список приведення типів" + +#: describe.c:4883 describe.c:4887 +msgid "Provider" +msgstr "Постачальник" + +#: describe.c:4893 describe.c:4898 +msgid "Deterministic?" +msgstr "Детермінований?" + +#: describe.c:4938 +msgid "List of collations" +msgstr "Список правил сортування" + +#: describe.c:5000 +msgid "List of schemas" +msgstr "Список схем" + +#: describe.c:5117 +msgid "List of text search parsers" +msgstr "Список парсерів текстового пошуку" + +#: describe.c:5167 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "Не знайдено жодного парсера текстового пошуку \"%s\"." + +#: describe.c:5170 +#, c-format +msgid "Did not find any text search parsers." +msgstr "Не знайдено жодного парсера текстового пошуку." + +#: describe.c:5245 +msgid "Start parse" +msgstr "Почати розбір" + +#: describe.c:5246 +msgid "Method" +msgstr "Метод" + +#: describe.c:5250 +msgid "Get next token" +msgstr "Отримати наступний токен" + +#: describe.c:5252 +msgid "End parse" +msgstr "Закінчити розбір" + +#: describe.c:5254 +msgid "Get headline" +msgstr "Отримати заголовок" + +#: describe.c:5256 +msgid "Get token types" +msgstr "Отримати типи токенів" + +#: describe.c:5267 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Парсер текстового пошуку \"%s.%s\"" + +#: describe.c:5270 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Парсер текстового пошуку \"%s\"" + +#: describe.c:5289 +msgid "Token name" +msgstr "Ім'я токену" + +#: describe.c:5303 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Типи токенів для парсера \"%s.%s\"" + +#: describe.c:5306 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Типи токенів для парсера \"%s\"" + +#: describe.c:5350 +msgid "Template" +msgstr "Шаблон" + +#: describe.c:5351 +msgid "Init options" +msgstr "Параметри ініціалізації" + +#: describe.c:5378 +msgid "List of text search dictionaries" +msgstr "Список словників текстового пошуку" + +#: describe.c:5411 +msgid "Init" +msgstr "Ініціалізація" + +#: describe.c:5412 +msgid "Lexize" +msgstr "Виділення лексем" + +#: describe.c:5444 +msgid "List of text search templates" +msgstr "Список шаблонів текстового пошуку" + +#: describe.c:5499 +msgid "List of text search configurations" +msgstr "Список конфігурацій текстового пошуку" + +#: describe.c:5550 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "Не знайдено жодної конфігурації текстового пошуку під назвою \"%s\"." + +#: describe.c:5553 +#, c-format +msgid "Did not find any text search configurations." +msgstr "Не знайдено жодної конфігурації текствого пошуку." + +#: describe.c:5619 +msgid "Token" +msgstr "Токен" + +#: describe.c:5620 +msgid "Dictionaries" +msgstr "Словники" + +#: describe.c:5631 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Конфігурація пошуку тексту \"%s.%s\"" + +#: describe.c:5634 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Конфігурація пошуку тексту \"%s\"" + +#: describe.c:5638 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Парсер: \"%s.%s\"" + +#: describe.c:5641 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Парсер: \"%s\"" + +#: describe.c:5722 +msgid "List of foreign-data wrappers" +msgstr "Список джерел сторонніх даних" + +#: describe.c:5750 +msgid "Foreign-data wrapper" +msgstr "Джерело сторонніх даних" + +#: describe.c:5768 describe.c:5958 +msgid "Version" +msgstr "Версія" + +#: describe.c:5799 +msgid "List of foreign servers" +msgstr "Список сторонніх серверів" + +#: describe.c:5824 describe.c:5883 +msgid "Server" +msgstr "Сервер" + +#: describe.c:5825 +msgid "User name" +msgstr "Ім'я користувача" + +#: describe.c:5855 +msgid "List of user mappings" +msgstr "Список зіставлень користувачів" + +#: describe.c:5928 +msgid "List of foreign tables" +msgstr "Список сторонніх таблиць" + +#: describe.c:5980 +msgid "List of installed extensions" +msgstr "Список встановлених розширень" + +#: describe.c:6028 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "Не знайдено жодного розширення під назвою \"%s\"." + +#: describe.c:6031 +#, c-format +msgid "Did not find any extensions." +msgstr "Не знайдено жодного розширення." + +#: describe.c:6075 +msgid "Object description" +msgstr "Опис об'єкту" + +#: describe.c:6085 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Об'єкти в розширенні \"%s\"" + +#: describe.c:6126 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "неправильне повне ім'я (забагато компонентів): %s" + +#: describe.c:6140 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "міжбазові посилання не реалізовані: %s" + +#: describe.c:6171 describe.c:6298 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "Сервер (версія %s) не підтримує публікації." + +#: describe.c:6188 describe.c:6376 +msgid "All tables" +msgstr "Усі таблиці" + +#: describe.c:6189 describe.c:6377 +msgid "Inserts" +msgstr "Вставки" + +#: describe.c:6190 describe.c:6378 +msgid "Updates" +msgstr "Оновлення" + +#: describe.c:6191 describe.c:6379 +msgid "Deletes" +msgstr "Видалення" + +#: describe.c:6195 describe.c:6381 +msgid "Truncates" +msgstr "Очищення" + +#: describe.c:6199 describe.c:6383 +msgid "Via root" +msgstr "Через root" + +#: describe.c:6221 +msgid "List of publications" +msgstr "Список публікацій" + +#: describe.c:6345 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "Не знайдено жодної публікації під назвою \"%s\"." + +#: describe.c:6348 +#, c-format +msgid "Did not find any publications." +msgstr "Не знайдено жодної публікації." + +#: describe.c:6372 +#, c-format +msgid "Publication %s" +msgstr "Публікація %s" + +#: describe.c:6425 +msgid "Tables:" +msgstr "Таблиці:" + +#: describe.c:6437 +msgid "Tables from schemas:" +msgstr "Таблиці зі схеми:" + +#: describe.c:6481 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "Сервер (версія %s) не підтримує підписки." + +#: describe.c:6497 +msgid "Publication" +msgstr "Публікація" + +#: describe.c:6506 +msgid "Binary" +msgstr "Бінарний" + +#: describe.c:6507 +msgid "Streaming" +msgstr "Потокова передача" + +#: describe.c:6514 +msgid "Two-phase commit" +msgstr "Двофазовий коміт" + +#: describe.c:6515 +msgid "Disable on error" +msgstr "Вимкнути при помилці" + +#: describe.c:6520 +msgid "Synchronous commit" +msgstr "Синхронні затвердження" + +#: describe.c:6521 +msgid "Conninfo" +msgstr "Conninfo" + +#: describe.c:6527 +msgid "Skip LSN" +msgstr "Пропустити LSN" + +#: describe.c:6554 +msgid "List of subscriptions" +msgstr "Список підписок" + +#: describe.c:6616 describe.c:6712 describe.c:6805 describe.c:6900 +msgid "AM" +msgstr "АМ" + +#: describe.c:6617 +msgid "Input type" +msgstr "Тип вводу" + +#: describe.c:6618 +msgid "Storage type" +msgstr "Тип сховища" + +#: describe.c:6619 +msgid "Operator class" +msgstr "Клас операторів" + +#: describe.c:6631 describe.c:6713 describe.c:6806 describe.c:6901 +msgid "Operator family" +msgstr "Сімейство операторів" + +#: describe.c:6667 +msgid "List of operator classes" +msgstr "Список класів операторів" + +#: describe.c:6714 +msgid "Applicable types" +msgstr "Типи для застосування" + +#: describe.c:6756 +msgid "List of operator families" +msgstr "Список сімейств операторів" + +#: describe.c:6807 +msgid "Operator" +msgstr "Оператор" + +#: describe.c:6808 +msgid "Strategy" +msgstr "Стратегія" + +#: describe.c:6809 +msgid "ordering" +msgstr "упорядкування" + +#: describe.c:6810 +msgid "search" +msgstr "пошук" + +#: describe.c:6811 +msgid "Purpose" +msgstr "Ціль" + +#: describe.c:6816 +msgid "Sort opfamily" +msgstr "Сімейство операторів сортування" + +#: describe.c:6855 +msgid "List of operators of operator families" +msgstr "Список операторів сімейств операторів" + +#: describe.c:6902 +msgid "Registered left type" +msgstr "Зареєстрований лівий тип" + +#: describe.c:6903 +msgid "Registered right type" +msgstr "Зареєстрований правий тип" + +#: describe.c:6904 +msgid "Number" +msgstr "Число" + +#: describe.c:6948 +msgid "List of support functions of operator families" +msgstr "Список функцій підтримки сімейств операторів" + +#: describe.c:6979 +msgid "ID" +msgstr "ID" + +#: describe.c:7000 +msgid "Large objects" +msgstr "Великі об'єкти" + +#: help.c:75 +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql - це інтерактивний термінал PostgreSQL.\n" +"\n" + +#: help.c:76 help.c:393 help.c:473 help.c:516 +msgid "Usage:\n" +msgstr "Використання:\n" + +#: help.c:77 +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [ОПЦІЯ]... [БД [КОРИСТУВАЧ]]\n" +"\n" + +#: help.c:79 +msgid "General options:\n" +msgstr "Основні налаштування:\n" + +#: help.c:84 +msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" +msgstr " -c, --command=КОМАНДА виконати лише одну команду (SQL або внутрішню) і вийти\n" + +#: help.c:85 +#, c-format +msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr " -d, --dbname=DBNAME ім'я бази даних для підключення (за замовчання: \"%s\") \n" + +#: help.c:87 +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=FILENAME виконує команди з файлу, потім виходить\n" + +#: help.c:88 +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list виводить список доступних баз даних, потім виходить\n" + +#: help.c:89 +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:92 +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version вивести інформацію про версію, потім вийти\n" + +#: help.c:93 +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc ігнорувати файл параметрів запуска (~/.psqlrc)\n" + +#: help.c:94 +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-interactive)\n" +msgstr "" +" -1 (\"один\"), --single-transaction\n" +" виконує як одну транзакцію (якщо не інтерактивна)\n" + +#: help.c:96 +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help [=options] показати цю довідку, потім вийти\n" + +#: help.c:97 +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands перерахувати команди, потім вийти\n" + +#: help.c:98 +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables перерахувати спеціальні змінні, потім вийти\n" + +#: help.c:100 +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Параметри вводу і виводу:\n" + +#: help.c:101 +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all відобразити всі вхідні дані з скрипта\n" + +#: help.c:102 +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors відобразити команди з помилками\n" + +#: help.c:103 +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries відобразити команди, відправлені на сервер\n" + +#: help.c:104 +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden відобразити запити, згенеровані внутрішніми командами\n" + +#: help.c:105 +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME зберегти протокол роботи у файл\n" + +#: help.c:106 +msgid " -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr " -n, --no-readline вимкнути розширене редагування командного рядка (readline)\n" + +#: help.c:107 +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr " -o, --output=FILENAME надсилати результати запиту до файлу (або до каналу |)\n" + +#: help.c:108 +msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgstr " -q, --quiet тихий запуск (ніяких повідомлень, лише результат запитів)\n" + +#: help.c:109 +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step покроковий режим (підтвердження кожного запиту)\n" + +#: help.c:110 +msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" +msgstr " -S, --single-line однорядковий режим (кінець рядка завершує команду)\n" + +#: help.c:112 +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Параметри формату виводу:\n" + +#: help.c:113 +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align режим виводу не вирівняної таблиці\n" + +#: help.c:114 +msgid " --csv CSV (Comma-Separated Values) table output mode\n" +msgstr " --csv режим виводу таблиць CSV (Comma-Separated Values)\n" + +#: help.c:115 +#, 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:118 +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html вивід таблиці у форматі HTML\n" + +#: help.c:119 +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:120 +msgid "" +" -R, --record-separator=STRING\n" +" record separator for unaligned output (default: newline)\n" +msgstr "" +" -R, --record-separator=СТРОКА\n" +" розділювач записів при не вирівняному виводі\n" +" (за замовчуванням: новий рядок)\n" + +#: help.c:122 +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only виводити лише рядки\n" + +#: help.c:123 +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:124 +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded ввімкнути розширене виведення таблиці\n" + +#: help.c:125 +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:127 +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:130 +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Налаштування з'єднання:\n" + +#: help.c:133 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" +msgstr " -h, --host=HOSTNAME хост сервера бази даних або каталог сокетів (за замовчуванням: \"%s)\n" + +#: help.c:134 +msgid "local socket" +msgstr "локальний сокет" + +#: help.c:137 +#, 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:142 +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password ніколи не запитувати пароль\n" + +#: help.c:143 +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password запитувати пароль завжди (повинно траплятись автоматично)\n" + +#: help.c:145 +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:148 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Повідомляти про помилки на <%s>.\n" + +#: help.c:149 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "Домашня сторінка %s: <%s>\n" + +#: help.c:191 +msgid "General\n" +msgstr "Загальні\n" + +#: help.c:192 +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright умови використання і розповсюдження PostgreSQL\n" + +#: help.c:193 +msgid " \\crosstabview [COLUMNS] execute query and display result in crosstab\n" +msgstr " \\crosstabview [COLUMNS] виконати запит і відобразити результат у перехресній таблиці\n" + +#: help.c:194 +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose вивести максимально докладне повідомлення про останню помилку\n" + +#: help.c:195 +msgid "" +" \\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\n" +" \\g with no arguments is equivalent to a semicolon\n" +msgstr "" +" \\g [(OPTIONS)] [FILE] виконати запит (і надіслати результат до файлу або |каналу);\n" +" \\g без аргументів рівнозначно крапці з комою\n" + +#: help.c:197 +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc описати результат запиту без виконання\n" + +#: help.c:198 +msgid " \\gexec execute query, then execute each value in its result\n" +msgstr " \\gexec виконати запит, потім виконати кожне значення в його результаті\n" + +#: help.c:199 +msgid " \\gset [PREFIX] execute query and store result in psql variables\n" +msgstr " \\gset [PREFIX] виконати запит та зберегти результат в змінних psql \n" + +#: help.c:200 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr " \\gx [(OPTIONS)] [FILE] як \\g, але вмикає розширений режим виводу\n" + +#: help.c:201 +msgid " \\q quit psql\n" +msgstr " \\q вийти з psql\n" + +#: help.c:202 +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] виконувати запит кожні SEC секунд\n" + +#: help.c:203 help.c:211 help.c:223 help.c:233 help.c:240 help.c:296 help.c:304 +#: help.c:324 help.c:337 help.c:346 +msgid "\n" +msgstr "\n" + +#: help.c:205 +msgid "Help\n" +msgstr "Довідка\n" + +#: help.c:207 +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] показати довідку по командах з \\\n" + +#: help.c:208 +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options показати довідку по параметрах командного рядку psql\n" + +#: help.c:209 +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables показати довідку по спеціальних змінних\n" + +#: help.c:210 +msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" +msgstr " \\h [NAME] довідка з синтаксису команд SQL, * для всіх команд\n" + +#: help.c:213 +msgid "Query Buffer\n" +msgstr "Буфер запитів\n" + +#: help.c:214 +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" +msgstr " \\e [FILE] [LINE] редагувати буфер запитів (або файл) зовнішнім редактором\n" + +#: help.c:215 +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNCNAME [LINE]] редагувати визначення функції зовнішнім редактором\n" + +#: help.c:216 +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [VIEWNAME [LINE]] редагувати визначення подання зовнішнім редактором\n" + +#: help.c:217 +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p показати вміст буфера запитів\n" + +#: help.c:218 +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r скинути (очистити) буфер запитів\n" + +#: help.c:220 +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [FILE] відобразити історію або зберегти її до файлу\n" + +#: help.c:222 +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILE писати буфер запитів до файлу\n" + +#: help.c:225 +msgid "Input/Output\n" +msgstr "Ввід/Вивід\n" + +#: help.c:226 +msgid " \\copy ... perform SQL COPY with data stream to the client host\n" +msgstr " \\copy ... виконати команду SQL COPY з потоком даних на клієнтський хост\n" + +#: help.c:227 +msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n" +msgstr " \\echo [-n] [STRING] записати рядок до стандартного виводу (-n для пропуску нового рядка)\n" + +#: help.c:228 +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILE виконати команди з файлу\n" + +#: help.c:229 +msgid " \\ir FILE as \\i, but relative to location of current script\n" +msgstr " \\ir ФАЙЛ те саме, що \\i, але відносно розташування поточного сценарію\n" + +#: help.c:230 +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [FILE] надсилати всі результати запитів до файлу або до каналу |\n" + +#: help.c:231 +msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n" +msgstr " \\qecho [-n] [STRING] записати рядок до вихідного потоку \\o (-n для пропуску нового рядка)\n" + +#: help.c:232 +msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n" +msgstr " \\warn [-n] [STRING] записати рядок до стандартної помилки (-n для пропуску нового рядка)\n" + +#: help.c:235 +msgid "Conditional\n" +msgstr "Умовний\n" + +#: help.c:236 +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR початок умовного блоку\n" + +#: help.c:237 +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR альтернатива в рамках поточного блоку\n" + +#: help.c:238 +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else остаточна альтернатива в рамках поточного умовного блоку\n" + +#: help.c:239 +msgid " \\endif end conditional block\n" +msgstr " \\endif кінець умовного блоку\n" + +#: help.c:242 +msgid "Informational\n" +msgstr "Інформаційний\n" + +#: help.c:243 +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (параметри: S = показати системні об'єкти, + = додаткові деталі)\n" + +#: help.c:244 +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] вивести таблиці, подання і послідовності\n" + +#: help.c:245 +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAME описати таблицю, подання, послідовність або індекс\n" + +#: help.c:246 +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [PATTERN] вивести агрегати\n" + +#: help.c:247 +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [PATTERN] вивести методи доступу\n" + +#: help.c:248 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] список класів операторів\n" + +#: help.c:249 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] список сімейств операторів\n" + +#: help.c:250 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] список операторів сімейств операторів\n" + +#: help.c:251 +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] список функцій підтримки сімейств операторів\n" + +#: help.c:252 +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [PATTERN] вивести табличні простори\n" + +#: help.c:253 +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [PATTERN] вивести перетворення\n" + +#: help.c:254 +msgid " \\dconfig[+] [PATTERN] list configuration parameters\n" +msgstr " \\dconfig[+] [PATTERN] вивести параметри конфігурації\n" + +#: help.c:255 +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [PATTERN] вивести приведення типів\n" + +#: help.c:256 +msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr " \\dd[S] [PATTERN] показати опис об'єкта, що не відображається в іншому місці\n" + +#: help.c:257 +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [PATTERN] вивести домени\n" + +#: help.c:258 +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [PATTERN] вивести привілеї за замовчуванням\n" + +#: help.c:259 +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATTERN] вивести зовнішні таблиці\n" + +#: help.c:260 +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [PATTERN] вивести зовнішні сервери\n" + +#: help.c:261 +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATTERN] вивести зовнішні таблиці\n" + +#: help.c:262 +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [PATTERN] вивести користувацькі зіставлення\n" + +#: help.c:263 +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [PATTERN] список джерел сторонніх даних\n" + +#: help.c:264 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" список [лише агрегатних/нормальних/процедурних/тригерних/віконних] функцій\n" + +#: help.c:266 +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [PATTERN] вивести конфігурації текстового пошуку\n" + +#: help.c:267 +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [PATTERN] вивести словники текстового пошуку\n" + +#: help.c:268 +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [PATTERN] вивести парсери текстового пошуку\n" + +#: help.c:269 +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [PATTERN] вивести шаблони текстового пошуку\n" + +#: help.c:270 +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [PATTERN] вивести ролі\n" + +#: help.c:271 +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [PATTERN] вивести індекси\n" + +#: help.c:272 +msgid " \\dl[+] list large objects, same as \\lo_list\n" +msgstr " \\dl[+] вивести великі об'єкти, те саме, що \\lo_list\n" + +#: help.c:273 +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATTERN] вивести процедурні мови\n" + +#: help.c:274 +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [PATTERN] вивести матеріалізовані подання\n" + +#: help.c:275 +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATTERN] вивести схеми\n" + +#: help.c:276 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" список операторів\n" + +#: help.c:278 +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [PATTERN] вивести правила сортування\n" + +#: help.c:279 +msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr " \\dp [PATTERN] вивести привілеї доступу до таблиць, подань або послідновностей \n" + +#: help.c:280 +msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n" +msgstr " \\dP[itn+] [PATTERN] вивести [тільки індекс/таблицю] секційні відношення [n=вкладені]\n" + +#: help.c:281 +msgid " \\drds [ROLEPTRN [DBPTRN]] list per-database role settings\n" +msgstr " \\drds [ROLEPTRN [DBPTRN]] вивести налаштування ролей побазово\n" + +#: help.c:282 +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [PATTERN] вивести реплікаційні публікації\n" + +#: help.c:283 +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [PATTERN] вивести реплікаційні підписки\n" + +#: help.c:284 +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [PATTERN] вивести послідовності\n" + +#: help.c:285 +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [PATTERN] вивести таблиці\n" + +#: help.c:286 +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [PATTERN] вивести типи даних\n" + +#: help.c:287 +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [PATTERN] вивести ролі\n" + +#: help.c:288 +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [PATTERN] вивести подання\n" + +#: help.c:289 +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATTERN] вивести розширення\n" + +#: help.c:290 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [PATTERN] список розширеної статистики\n" + +#: help.c:291 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [PATTERN] вивести тригери подій\n" + +#: help.c:292 +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [PATTERN] вивести бази даних\n" + +#: help.c:293 +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNCNAME відобразити визначення функції\n" + +#: help.c:294 +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] VIEWNAME відобразити визначення подання\n" + +#: help.c:295 +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [PATTERN] те саме, що \\dp\n" + +#: help.c:298 +msgid "Large Objects\n" +msgstr "Великі об'єкти\n" + +#: help.c:299 +msgid " \\lo_export LOBOID FILE write large object to file\n" +msgstr " \\lo_export LOBOID FILE записати великий об'єкт в файл\n" + +#: help.c:300 +msgid "" +" \\lo_import FILE [COMMENT]\n" +" read large object from file\n" +msgstr "" +" \\lo_import FILE [COMMENT]\n" +" читати великий об'єкт з файлу\n" + +#: help.c:302 +msgid " \\lo_list[+] list large objects\n" +msgstr " \\lo_list[+] вивести великі об'єкти\n" + +#: help.c:303 +msgid " \\lo_unlink LOBOID delete a large object\n" +msgstr " \\lo_unlink LOBOID видалити великий об’єкт\n" + +#: help.c:306 +msgid "Formatting\n" +msgstr "Форматування\n" + +#: help.c:307 +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a перемикання між режимами виводу: unaligned, aligned\n" + +#: help.c:308 +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C [STRING] встановити заголовок таблиці або прибрати, якщо не задано\n" + +#: help.c:309 +msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgstr " \\f [STRING] показати або встановити розділювач полів для не вирівняного виводу запиту\n" + +#: help.c:310 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H переключити режим виводу HTML (поточний: %s)\n" + +#: help.c:312 +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:319 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] показувати лише рядки (поточно %s)\n" + +#: help.c:321 +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [STRING] встановити атрибути для HTML
або прибрати, якщо не задані\n" + +#: help.c:322 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr " \\x [on|off|auto] переключити розширений вивід (поточний: %s)\n" + +#: help.c:323 +msgid "auto" +msgstr "авто" + +#: help.c:326 +msgid "Connection\n" +msgstr "Підключення\n" + +#: help.c:328 +#, 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:332 +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:334 +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo показати інформацію про поточне з'єднання\n" + +#: help.c:335 +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [ENCODING] показати або встановити кодування клієнта\n" + +#: help.c:336 +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [USERNAME] безпечно змінити пароль користувача \n" + +#: help.c:339 +msgid "Operating System\n" +msgstr "Операційна система\n" + +#: help.c:340 +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIR] змінити поточний робочий каталог\n" + +#: help.c:341 +msgid " \\getenv PSQLVAR ENVVAR fetch environment variable\n" +msgstr " \\getenv PSQLVAR ENVAR отримати змінну середовища\n" + +#: help.c:342 +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAME [VALUE] встановити або скинути змінну середовища\n" + +#: help.c:343 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] переключити таймер команд (поточний: %s)\n" + +#: help.c:345 +msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" +msgstr " \\! [COMMAND] виконати команду в оболонці або запустити інтерактивну оболонку\n" + +#: help.c:348 +msgid "Variables\n" +msgstr "Змінні\n" + +#: help.c:349 +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [TEXT] NAME запитати користувача значення внутрішньої змінної\n" + +#: help.c:350 +msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" +msgstr " \\set [NAME [VALUE]] встановити внутрішню змінну або вивести всі, якщо не задані параметри\n" + +#: help.c:351 +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NAME скинути (видалити) значення внутрішньої змінної\n" + +#: help.c:390 +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"Список спеціальних змінних\n" +"\n" + +#: help.c:392 +msgid "psql variables:\n" +msgstr "змінні psql:\n" + +#: help.c:394 +msgid "" +" psql --set=NAME=VALUE\n" +" or \\set NAME VALUE inside psql\n" +"\n" +msgstr "" +" psql --set=ІМ'Я=ЗНАЧЕННЯ\n" +" або \\set ІМ'Я ЗНАЧЕННЯ усередині psql\n" +"\n" + +#: help.c:396 +msgid "" +" AUTOCOMMIT\n" +" if set, successful SQL commands are automatically committed\n" +msgstr "" +" AUTOCOMMIT\n" +" якщо встановлений, успішні SQL-команди підтверджуються автоматично\n" + +#: help.c:398 +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:401 +msgid "" +" DBNAME\n" +" the currently connected database name\n" +msgstr " DBNAME назва під'єднаної бази даних\n" + +#: help.c:403 +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:406 +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:409 +msgid "" +" ENCODING\n" +" current client character set encoding\n" +msgstr "" +" ENCODING\n" +" поточне кодування набору символів клієнта\n" + +#: help.c:411 +msgid "" +" ERROR\n" +" true if last query failed, else false\n" +msgstr "" +" ERROR\n" +" істина, якщо в останньому запиті є помилка, в іншому разі - хибність\n" + +#: help.c:413 +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:415 +msgid "" +" HIDE_TABLEAM\n" +" if set, table access methods are not displayed\n" +msgstr "" +" HIDE_TABLEAM\n" +" якщо вказано, методи доступу до таблиць не відображаються\n" + +#: help.c:417 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" якщо встановлено, методи стискання не відображаються\n" + +#: help.c:419 +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr " HISTCONTROL контролює історію команд [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:421 +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr " HISTFILE ім'я файлу для зберігання історії команд\n" + +#: help.c:423 +msgid "" +" HISTSIZE\n" +" maximum number of commands to store in the command history\n" +msgstr " HISTSIZE максимальна кількість команд для зберігання в історії команд\n" + +#: help.c:425 +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr " HOST поточний підключений хост сервера бази даних\n" + +#: help.c:427 +msgid "" +" IGNOREEOF\n" +" number of EOFs needed to terminate an interactive session\n" +msgstr " IGNOREEOF кількість EOF для завершення інтерактивної сесії\n" + +#: help.c:429 +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr " LASTOID значення останнього залученого OID\n" + +#: help.c:431 +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:434 +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:436 +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" зупиняти виконання пакету команд після помилки\n" + +#: help.c:438 +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" порт сервера для поточного з'єднання\n" + +#: help.c:440 +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" визначає стандратне запрошення psql \n" + +#: help.c:442 +msgid "" +" PROMPT2\n" +" specifies the prompt used when a statement continues from a previous line\n" +msgstr "" +" PROMPT2\n" +" визначає запрошення, яке використовується при продовженні команди з попереднього рядка\n" + +#: help.c:444 +msgid "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3\n" +" визначає запрошення, яке виконується під час COPY ... FROM STDIN\n" + +#: help.c:446 +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" тихий запуск ( як із параметром -q)\n" + +#: help.c:448 +msgid "" +" ROW_COUNT\n" +" number of rows returned or affected by last query, or 0\n" +msgstr "" +" ROW_COUNT\n" +" число повернених або оброблених рядків останнім запитом, або 0\n" + +#: help.c:450 +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:453 +msgid "" +" SHOW_ALL_RESULTS\n" +" show all results of a combined query (\\;) instead of only the last\n" +msgstr "" +" SHOW_ALL_RESULTS\n" +" показати всі результати комбінованого запиту (\\;) замість тільки останнього\n" + +#: help.c:455 +msgid "" +" SHOW_CONTEXT\n" +" controls display of message context fields [never, errors, always]\n" +msgstr "" +" SHOW_CONTEXT\n" +" керує відображенням полів контексту повідомлень [never, errors, always]\n" + +#: help.c:457 +msgid "" +" SINGLELINE\n" +" if set, end of line terminates SQL commands (same as -S option)\n" +msgstr "" +" SINGLELINE\n" +" якщо встановлено, кінець рядка завершує режим вводу SQL-команди (як з параметром -S)\n" + +#: help.c:459 +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" покроковий режим (як з параметром -s)\n" + +#: help.c:461 +msgid "" +" SQLSTATE\n" +" SQLSTATE of last query, or \"00000\" if no error\n" +msgstr "" +" SQLSTATE\n" +" SQLSTATE останнього запиту, або \"00000\" якщо немає помилок\n" + +#: help.c:463 +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" поточний користувач, підключений до бази даних\n" + +#: help.c:465 +msgid "" +" VERBOSITY\n" +" controls verbosity of error reports [default, verbose, terse, sqlstate]\n" +msgstr "" +" VERBOSITY\n" +" контролює докладність звітів про помилку [default, verbose, terse, sqlstate]\n" + +#: help.c:467 +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:472 +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Налаштування відобреження:\n" + +#: help.c:474 +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:476 +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" стиль рамки (число)\n" + +#: help.c:478 +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" цільова ширина для формату з переносом\n" + +#: help.c:480 +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (or x)\n" +" розширений вивід [on, off, auto]\n" + +#: help.c:482 +#, c-format +msgid "" +" fieldsep\n" +" field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep\n" +" розділювач полів для не вирівняного виводу (за замовчуванням \"%s\")\n" + +#: help.c:485 +msgid "" +" fieldsep_zero\n" +" set field separator for unaligned output to a zero byte\n" +msgstr "" +" fieldsep_zero\n" +" встановити розділювач полів для невирівняного виводу на нульовий байт\n" + +#: help.c:487 +msgid "" +" footer\n" +" enable or disable display of the table footer [on, off]\n" +msgstr "" +" footer\n" +" вмикає або вимикає вивід підписів таблиці [on, off]\n" + +#: help.c:489 +msgid "" +" format\n" +" set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr "" +" format\n" +" встановити формат виводу [unaligned, aligned, wrapped, html, asciidoc, ...]\n" + +#: help.c:491 +msgid "" +" linestyle\n" +" set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr "" +" linestyle\n" +" встановлює стиль малювання ліній рамки [ascii, old-ascii, unicode]\n" + +#: help.c:493 +msgid "" +" null\n" +" set the string to be printed in place of a null value\n" +msgstr "" +" null\n" +" встановлює рядок, який буде виведено замість значення (null)\n" + +#: help.c:495 +msgid "" +" numericlocale\n" +" enable display of a locale-specific character to separate groups of digits\n" +msgstr "" +" numericlocale\n" +" вмикає виведення заданого локалью роздільника групи цифр\n" + +#: help.c:497 +msgid "" +" pager\n" +" control when an external pager is used [yes, no, always]\n" +msgstr "" +" pager\n" +" контролює використання зовнішнього пейджера [yes, no, always]\n" + +#: help.c:499 +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" розділювач записів (рядків) для не вирівняного виводу\n" + +#: help.c:501 +msgid "" +" recordsep_zero\n" +" set record separator for unaligned output to a zero byte\n" +msgstr "" +" recordsep_zero\n" +" встановлює розділювач записів для невирівняного виводу на нульовий байт\n" + +#: help.c:503 +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:506 +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" задає заголовок таблиці для послідовно друкованих таблиць\n" + +#: help.c:508 +msgid "" +" tuples_only\n" +" if set, only actual table data is shown\n" +msgstr "" +" tuples_only\n" +" якщо встановлено, виводяться лише фактичні табличні дані\n" + +#: help.c:510 +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:515 +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Змінні оточення:\n" + +#: help.c:519 +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:521 +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:524 +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" число стовпців для форматування з переносом\n" + +#: help.c:526 +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" те саме, що параметр підключення application_name\n" + +#: help.c:528 +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" те саме, що параметр підключення dbname\n" + +#: help.c:530 +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" те саме, що параметр підключення host\n" + +#: help.c:532 +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" назва файлу з паролем\n" + +#: help.c:534 +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" пароль для підключення (не рекомендується)\n" + +#: help.c:536 +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" те саме, що параметр підключення port\n" + +#: help.c:538 +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" те саме, що параметр підключення user\n" + +#: help.c:540 +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:542 +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:544 +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" альтернативне розміщення файлу з історією команд\n" + +#: help.c:546 +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" ім'я програми зовнішнього пейджеру\n" + +#: help.c:549 +msgid "" +" PSQL_WATCH_PAGER\n" +" name of external pager program used for \\watch\n" +msgstr "" +" PSQL_WATCH_PAGER\n" +" назва зовнішньої програми-пейджера для використання з \\watch\n" + +#: help.c:552 +msgid "" +" PSQLRC\n" +" alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC\n" +" альтернативне розміщення користувацького файла .psqlrc\n" + +#: help.c:554 +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" оболонка, що використовується командою \\!\n" + +#: help.c:556 +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" каталог для тимчасових файлів\n" + +#: help.c:616 +msgid "Available help:\n" +msgstr "Доступна довідка:\n" + +#: help.c:711 +#, 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:734 +#, 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:478 input.c:516 +#, c-format +msgid "could not save history to file \"%s\": %m" +msgstr "не можливо зберегти історію в файлі \"%s\": %m" + +#: input.c:535 +#, 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: невідомий стан транзакції" + +#: mainloop.c:133 +#, c-format +msgid "\\if: escaped" +msgstr "\\if: вихід" + +#: mainloop.c:192 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Введіть \"\\q\", щоб вийти з %s.\n" + +#: mainloop.c:214 +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:295 +msgid "Use \\? for help or press control-C to clear the input buffer." +msgstr "Для отримання довідки введіть \\? або натисніть сontrol-C для очищення буферу вводу." + +#: mainloop.c:297 +msgid "Use \\? for help." +msgstr "Введіть \\? для отримання довідки." + +#: mainloop.c:301 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Ви використовуєте psql — інтерфейс командного рядка до PostgreSQL." + +#: mainloop.c:302 +#, 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:326 +msgid "Use \\q to quit." +msgstr "Введіть \\q, щоб вийти." + +#: mainloop.c:329 mainloop.c:353 +msgid "Use control-D to quit." +msgstr "Натисніть control-D, щоб вийти." + +#: mainloop.c:331 mainloop.c:355 +msgid "Use control-C to quit." +msgstr "Натисніть control-C, щоб вийти." + +#: mainloop.c:459 mainloop.c:618 +#, c-format +msgid "query ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "запит ігнорується; введіть \\endif або натисніть Ctrl-C для завершення поточного \\if блоку" + +#: mainloop.c:636 +#, 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:113 sql_help.c:119 sql_help.c:121 sql_help.c:123 sql_help.c:125 +#: sql_help.c:126 sql_help.c:129 sql_help.c:131 sql_help.c:133 sql_help.c:238 +#: sql_help.c:240 sql_help.c:241 sql_help.c:243 sql_help.c:245 sql_help.c:248 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:266 sql_help.c:267 +#: sql_help.c:268 sql_help.c:270 sql_help.c:319 sql_help.c:321 sql_help.c:323 +#: sql_help.c:325 sql_help.c:394 sql_help.c:399 sql_help.c:401 sql_help.c:443 +#: sql_help.c:445 sql_help.c:448 sql_help.c:450 sql_help.c:519 sql_help.c:524 +#: sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:593 sql_help.c:595 +#: sql_help.c:597 sql_help.c:599 sql_help.c:601 sql_help.c:604 sql_help.c:606 +#: sql_help.c:609 sql_help.c:620 sql_help.c:622 sql_help.c:666 sql_help.c:668 +#: sql_help.c:670 sql_help.c:673 sql_help.c:675 sql_help.c:677 sql_help.c:714 +#: sql_help.c:718 sql_help.c:722 sql_help.c:741 sql_help.c:744 sql_help.c:747 +#: sql_help.c:776 sql_help.c:788 sql_help.c:796 sql_help.c:799 sql_help.c:802 +#: sql_help.c:817 sql_help.c:820 sql_help.c:849 sql_help.c:854 sql_help.c:859 +#: sql_help.c:864 sql_help.c:869 sql_help.c:896 sql_help.c:898 sql_help.c:900 +#: sql_help.c:902 sql_help.c:905 sql_help.c:907 sql_help.c:954 sql_help.c:999 +#: sql_help.c:1004 sql_help.c:1009 sql_help.c:1014 sql_help.c:1019 +#: sql_help.c:1038 sql_help.c:1049 sql_help.c:1051 sql_help.c:1071 +#: sql_help.c:1081 sql_help.c:1082 sql_help.c:1084 sql_help.c:1086 +#: sql_help.c:1098 sql_help.c:1102 sql_help.c:1104 sql_help.c:1116 +#: sql_help.c:1118 sql_help.c:1120 sql_help.c:1122 sql_help.c:1141 +#: sql_help.c:1143 sql_help.c:1147 sql_help.c:1151 sql_help.c:1155 +#: sql_help.c:1158 sql_help.c:1159 sql_help.c:1160 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1168 sql_help.c:1308 sql_help.c:1310 +#: sql_help.c:1313 sql_help.c:1316 sql_help.c:1318 sql_help.c:1320 +#: sql_help.c:1323 sql_help.c:1326 sql_help.c:1443 sql_help.c:1445 +#: sql_help.c:1447 sql_help.c:1450 sql_help.c:1471 sql_help.c:1474 +#: sql_help.c:1477 sql_help.c:1480 sql_help.c:1484 sql_help.c:1486 +#: sql_help.c:1488 sql_help.c:1490 sql_help.c:1504 sql_help.c:1507 +#: sql_help.c:1509 sql_help.c:1511 sql_help.c:1521 sql_help.c:1523 +#: sql_help.c:1533 sql_help.c:1535 sql_help.c:1545 sql_help.c:1548 +#: sql_help.c:1571 sql_help.c:1573 sql_help.c:1575 sql_help.c:1577 +#: sql_help.c:1580 sql_help.c:1582 sql_help.c:1585 sql_help.c:1588 +#: sql_help.c:1639 sql_help.c:1682 sql_help.c:1685 sql_help.c:1687 +#: sql_help.c:1689 sql_help.c:1692 sql_help.c:1694 sql_help.c:1696 +#: sql_help.c:1699 sql_help.c:1749 sql_help.c:1765 sql_help.c:1996 +#: sql_help.c:2065 sql_help.c:2084 sql_help.c:2097 sql_help.c:2154 +#: sql_help.c:2161 sql_help.c:2171 sql_help.c:2197 sql_help.c:2228 +#: sql_help.c:2246 sql_help.c:2274 sql_help.c:2385 sql_help.c:2431 +#: sql_help.c:2456 sql_help.c:2479 sql_help.c:2483 sql_help.c:2517 +#: sql_help.c:2537 sql_help.c:2559 sql_help.c:2573 sql_help.c:2594 +#: sql_help.c:2623 sql_help.c:2658 sql_help.c:2683 sql_help.c:2730 +#: sql_help.c:3025 sql_help.c:3038 sql_help.c:3055 sql_help.c:3071 +#: sql_help.c:3111 sql_help.c:3165 sql_help.c:3169 sql_help.c:3171 +#: sql_help.c:3178 sql_help.c:3197 sql_help.c:3224 sql_help.c:3259 +#: sql_help.c:3271 sql_help.c:3280 sql_help.c:3324 sql_help.c:3338 +#: sql_help.c:3366 sql_help.c:3374 sql_help.c:3386 sql_help.c:3396 +#: sql_help.c:3404 sql_help.c:3412 sql_help.c:3420 sql_help.c:3428 +#: sql_help.c:3437 sql_help.c:3448 sql_help.c:3456 sql_help.c:3464 +#: sql_help.c:3472 sql_help.c:3480 sql_help.c:3490 sql_help.c:3499 +#: sql_help.c:3508 sql_help.c:3516 sql_help.c:3526 sql_help.c:3537 +#: sql_help.c:3545 sql_help.c:3554 sql_help.c:3565 sql_help.c:3574 +#: sql_help.c:3582 sql_help.c:3590 sql_help.c:3598 sql_help.c:3606 +#: sql_help.c:3614 sql_help.c:3622 sql_help.c:3630 sql_help.c:3638 +#: sql_help.c:3646 sql_help.c:3654 sql_help.c:3671 sql_help.c:3680 +#: sql_help.c:3688 sql_help.c:3705 sql_help.c:3720 sql_help.c:4030 +#: sql_help.c:4140 sql_help.c:4169 sql_help.c:4184 sql_help.c:4687 +#: sql_help.c:4735 sql_help.c:4893 +msgid "name" +msgstr "назва" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:330 sql_help.c:1846 +#: sql_help.c:3339 sql_help.c:4455 +msgid "aggregate_signature" +msgstr "сигнатура_агр_функції" + +#: sql_help.c:37 sql_help.c:67 sql_help.c:82 sql_help.c:120 sql_help.c:253 +#: sql_help.c:271 sql_help.c:402 sql_help.c:449 sql_help.c:528 sql_help.c:576 +#: sql_help.c:594 sql_help.c:621 sql_help.c:674 sql_help.c:743 sql_help.c:798 +#: sql_help.c:819 sql_help.c:858 sql_help.c:908 sql_help.c:955 sql_help.c:1008 +#: sql_help.c:1040 sql_help.c:1050 sql_help.c:1085 sql_help.c:1105 +#: sql_help.c:1119 sql_help.c:1169 sql_help.c:1317 sql_help.c:1444 +#: sql_help.c:1487 sql_help.c:1508 sql_help.c:1522 sql_help.c:1534 +#: sql_help.c:1547 sql_help.c:1574 sql_help.c:1640 sql_help.c:1693 +msgid "new_name" +msgstr "нова_назва" + +#: sql_help.c:40 sql_help.c:69 sql_help.c:84 sql_help.c:122 sql_help.c:251 +#: sql_help.c:269 sql_help.c:400 sql_help.c:485 sql_help.c:533 sql_help.c:623 +#: sql_help.c:632 sql_help.c:697 sql_help.c:717 sql_help.c:746 sql_help.c:801 +#: sql_help.c:863 sql_help.c:906 sql_help.c:1013 sql_help.c:1052 +#: sql_help.c:1083 sql_help.c:1103 sql_help.c:1117 sql_help.c:1167 +#: sql_help.c:1381 sql_help.c:1446 sql_help.c:1489 sql_help.c:1510 +#: sql_help.c:1572 sql_help.c:1688 sql_help.c:3011 +msgid "new_owner" +msgstr "новий_власник" + +#: sql_help.c:43 sql_help.c:71 sql_help.c:86 sql_help.c:255 sql_help.c:322 +#: sql_help.c:451 sql_help.c:538 sql_help.c:676 sql_help.c:721 sql_help.c:749 +#: sql_help.c:804 sql_help.c:868 sql_help.c:1018 sql_help.c:1087 +#: sql_help.c:1121 sql_help.c:1319 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1524 sql_help.c:1536 sql_help.c:1576 sql_help.c:1695 +msgid "new_schema" +msgstr "нова_схема" + +#: sql_help.c:44 sql_help.c:1910 sql_help.c:3340 sql_help.c:4484 +msgid "where aggregate_signature is:" +msgstr "де сигнатура_агр_функції:" + +#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:340 sql_help.c:353 +#: sql_help.c:357 sql_help.c:373 sql_help.c:376 sql_help.c:379 sql_help.c:520 +#: sql_help.c:525 sql_help.c:530 sql_help.c:535 sql_help.c:540 sql_help.c:850 +#: sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:870 sql_help.c:1000 +#: sql_help.c:1005 sql_help.c:1010 sql_help.c:1015 sql_help.c:1020 +#: sql_help.c:1864 sql_help.c:1881 sql_help.c:1887 sql_help.c:1911 +#: sql_help.c:1914 sql_help.c:1917 sql_help.c:2066 sql_help.c:2085 +#: sql_help.c:2088 sql_help.c:2386 sql_help.c:2595 sql_help.c:3341 +#: sql_help.c:3344 sql_help.c:3347 sql_help.c:3438 sql_help.c:3527 +#: sql_help.c:3555 sql_help.c:3905 sql_help.c:4354 sql_help.c:4461 +#: sql_help.c:4468 sql_help.c:4474 sql_help.c:4485 sql_help.c:4488 +#: sql_help.c:4491 +msgid "argmode" +msgstr "режим_аргументу" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:341 sql_help.c:354 +#: sql_help.c:358 sql_help.c:374 sql_help.c:377 sql_help.c:380 sql_help.c:521 +#: sql_help.c:526 sql_help.c:531 sql_help.c:536 sql_help.c:541 sql_help.c:851 +#: sql_help.c:856 sql_help.c:861 sql_help.c:866 sql_help.c:871 sql_help.c:1001 +#: sql_help.c:1006 sql_help.c:1011 sql_help.c:1016 sql_help.c:1021 +#: sql_help.c:1865 sql_help.c:1882 sql_help.c:1888 sql_help.c:1912 +#: sql_help.c:1915 sql_help.c:1918 sql_help.c:2067 sql_help.c:2086 +#: sql_help.c:2089 sql_help.c:2387 sql_help.c:2596 sql_help.c:3342 +#: sql_help.c:3345 sql_help.c:3348 sql_help.c:3439 sql_help.c:3528 +#: sql_help.c:3556 sql_help.c:4462 sql_help.c:4469 sql_help.c:4475 +#: sql_help.c:4486 sql_help.c:4489 sql_help.c:4492 +msgid "argname" +msgstr "ім'я_аргументу" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:342 sql_help.c:355 +#: sql_help.c:359 sql_help.c:375 sql_help.c:378 sql_help.c:381 sql_help.c:522 +#: sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:542 sql_help.c:852 +#: sql_help.c:857 sql_help.c:862 sql_help.c:867 sql_help.c:872 sql_help.c:1002 +#: sql_help.c:1007 sql_help.c:1012 sql_help.c:1017 sql_help.c:1022 +#: sql_help.c:1866 sql_help.c:1883 sql_help.c:1889 sql_help.c:1913 +#: sql_help.c:1916 sql_help.c:1919 sql_help.c:2388 sql_help.c:2597 +#: sql_help.c:3343 sql_help.c:3346 sql_help.c:3349 sql_help.c:3440 +#: sql_help.c:3529 sql_help.c:3557 sql_help.c:4463 sql_help.c:4470 +#: sql_help.c:4476 sql_help.c:4487 sql_help.c:4490 sql_help.c:4493 +msgid "argtype" +msgstr "тип_аргументу" + +#: sql_help.c:114 sql_help.c:397 sql_help.c:474 sql_help.c:486 sql_help.c:949 +#: sql_help.c:1100 sql_help.c:1505 sql_help.c:1634 sql_help.c:1666 +#: sql_help.c:1718 sql_help.c:1781 sql_help.c:1967 sql_help.c:1974 +#: sql_help.c:2277 sql_help.c:2327 sql_help.c:2334 sql_help.c:2343 +#: sql_help.c:2432 sql_help.c:2659 sql_help.c:2752 sql_help.c:3040 +#: sql_help.c:3225 sql_help.c:3247 sql_help.c:3387 sql_help.c:3742 +#: sql_help.c:3949 sql_help.c:4183 sql_help.c:4956 +msgid "option" +msgstr "параметр" + +#: sql_help.c:115 sql_help.c:950 sql_help.c:1635 sql_help.c:2433 +#: sql_help.c:2660 sql_help.c:3226 sql_help.c:3388 +msgid "where option can be:" +msgstr "де параметр може бути:" + +#: sql_help.c:116 sql_help.c:2209 +msgid "allowconn" +msgstr "дозвол_підкл" + +#: sql_help.c:117 sql_help.c:951 sql_help.c:1636 sql_help.c:2210 +#: sql_help.c:2434 sql_help.c:2661 sql_help.c:3227 +msgid "connlimit" +msgstr "ліміт_підключень" + +#: sql_help.c:118 sql_help.c:2211 +msgid "istemplate" +msgstr "чи_шаблон" + +#: sql_help.c:124 sql_help.c:611 sql_help.c:679 sql_help.c:693 sql_help.c:1322 +#: sql_help.c:1374 sql_help.c:4187 +msgid "new_tablespace" +msgstr "новий_табл_простір" + +#: sql_help.c:127 sql_help.c:130 sql_help.c:132 sql_help.c:548 sql_help.c:550 +#: sql_help.c:551 sql_help.c:875 sql_help.c:877 sql_help.c:878 sql_help.c:958 +#: sql_help.c:962 sql_help.c:965 sql_help.c:1027 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1180 sql_help.c:1183 sql_help.c:1643 +#: sql_help.c:1647 sql_help.c:1650 sql_help.c:2398 sql_help.c:2601 +#: sql_help.c:3917 sql_help.c:4205 sql_help.c:4366 sql_help.c:4675 +msgid "configuration_parameter" +msgstr "параметр_конфігурації" + +#: sql_help.c:128 sql_help.c:398 sql_help.c:469 sql_help.c:475 sql_help.c:487 +#: sql_help.c:549 sql_help.c:603 sql_help.c:685 sql_help.c:695 sql_help.c:876 +#: sql_help.c:904 sql_help.c:959 sql_help.c:1028 sql_help.c:1101 +#: sql_help.c:1146 sql_help.c:1150 sql_help.c:1154 sql_help.c:1157 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1181 sql_help.c:1182 +#: sql_help.c:1353 sql_help.c:1376 sql_help.c:1424 sql_help.c:1449 +#: sql_help.c:1506 sql_help.c:1590 sql_help.c:1644 sql_help.c:1667 +#: sql_help.c:2278 sql_help.c:2328 sql_help.c:2335 sql_help.c:2344 +#: sql_help.c:2399 sql_help.c:2400 sql_help.c:2464 sql_help.c:2467 +#: sql_help.c:2501 sql_help.c:2602 sql_help.c:2603 sql_help.c:2626 +#: sql_help.c:2753 sql_help.c:2792 sql_help.c:2902 sql_help.c:2915 +#: sql_help.c:2929 sql_help.c:2970 sql_help.c:2997 sql_help.c:3014 +#: sql_help.c:3041 sql_help.c:3248 sql_help.c:3950 sql_help.c:4676 +#: sql_help.c:4677 sql_help.c:4678 sql_help.c:4679 +msgid "value" +msgstr "значення" + +#: sql_help.c:200 +msgid "target_role" +msgstr "цільова_роль" + +#: sql_help.c:201 sql_help.c:913 sql_help.c:2262 sql_help.c:2631 +#: sql_help.c:2708 sql_help.c:2713 sql_help.c:3880 sql_help.c:3889 +#: sql_help.c:3908 sql_help.c:3920 sql_help.c:4329 sql_help.c:4338 +#: sql_help.c:4357 sql_help.c:4369 +msgid "schema_name" +msgstr "ім'я_схеми" + +#: sql_help.c:202 +msgid "abbreviated_grant_or_revoke" +msgstr "скорочено_GRANT_або_REVOKE" + +#: sql_help.c:203 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "де скорочено_GRANT_або_REVOKE є одним з:" + +#: 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:211 sql_help.c:212 sql_help.c:213 +#: sql_help.c:574 sql_help.c:610 sql_help.c:678 sql_help.c:822 sql_help.c:969 +#: sql_help.c:1321 sql_help.c:1654 sql_help.c:2437 sql_help.c:2438 +#: sql_help.c:2439 sql_help.c:2440 sql_help.c:2441 sql_help.c:2575 +#: sql_help.c:2664 sql_help.c:2665 sql_help.c:2666 sql_help.c:2667 +#: sql_help.c:2668 sql_help.c:3230 sql_help.c:3231 sql_help.c:3232 +#: sql_help.c:3233 sql_help.c:3234 sql_help.c:3929 sql_help.c:3933 +#: sql_help.c:4378 sql_help.c:4382 sql_help.c:4697 +msgid "role_name" +msgstr "ім'я_ролі" + +#: sql_help.c:239 sql_help.c:462 sql_help.c:912 sql_help.c:1337 sql_help.c:1339 +#: sql_help.c:1391 sql_help.c:1403 sql_help.c:1428 sql_help.c:1684 +#: sql_help.c:2231 sql_help.c:2235 sql_help.c:2347 sql_help.c:2352 +#: sql_help.c:2460 sql_help.c:2630 sql_help.c:2769 sql_help.c:2774 +#: sql_help.c:2776 sql_help.c:2897 sql_help.c:2910 sql_help.c:2924 +#: sql_help.c:2933 sql_help.c:2945 sql_help.c:2974 sql_help.c:3981 +#: sql_help.c:3996 sql_help.c:3998 sql_help.c:4085 sql_help.c:4088 +#: sql_help.c:4090 sql_help.c:4548 sql_help.c:4549 sql_help.c:4558 +#: sql_help.c:4605 sql_help.c:4606 sql_help.c:4607 sql_help.c:4608 +#: sql_help.c:4609 sql_help.c:4610 sql_help.c:4650 sql_help.c:4651 +#: sql_help.c:4656 sql_help.c:4661 sql_help.c:4805 sql_help.c:4806 +#: sql_help.c:4815 sql_help.c:4862 sql_help.c:4863 sql_help.c:4864 +#: sql_help.c:4865 sql_help.c:4866 sql_help.c:4867 sql_help.c:4921 +#: sql_help.c:4923 sql_help.c:4983 sql_help.c:5043 sql_help.c:5044 +#: sql_help.c:5053 sql_help.c:5100 sql_help.c:5101 sql_help.c:5102 +#: sql_help.c:5103 sql_help.c:5104 sql_help.c:5105 +msgid "expression" +msgstr "вираз" + +#: sql_help.c:242 +msgid "domain_constraint" +msgstr "обмеження_домену" + +#: sql_help.c:244 sql_help.c:246 sql_help.c:249 sql_help.c:477 sql_help.c:478 +#: sql_help.c:1314 sql_help.c:1361 sql_help.c:1362 sql_help.c:1363 +#: sql_help.c:1390 sql_help.c:1402 sql_help.c:1419 sql_help.c:1852 +#: sql_help.c:1854 sql_help.c:2234 sql_help.c:2346 sql_help.c:2351 +#: sql_help.c:2932 sql_help.c:2944 sql_help.c:3993 +msgid "constraint_name" +msgstr "ім'я_обмеження" + +#: sql_help.c:247 sql_help.c:1315 +msgid "new_constraint_name" +msgstr "ім'я_нового_обмеження" + +#: sql_help.c:320 sql_help.c:1099 +msgid "new_version" +msgstr "нова_версія" + +#: sql_help.c:324 sql_help.c:326 +msgid "member_object" +msgstr "елемент_об'єкт" + +#: sql_help.c:327 +msgid "where member_object is:" +msgstr "де елемент_об'єкт є:" + +#: sql_help.c:328 sql_help.c:333 sql_help.c:334 sql_help.c:335 sql_help.c:336 +#: sql_help.c:337 sql_help.c:338 sql_help.c:343 sql_help.c:347 sql_help.c:349 +#: sql_help.c:351 sql_help.c:360 sql_help.c:361 sql_help.c:362 sql_help.c:363 +#: sql_help.c:364 sql_help.c:365 sql_help.c:366 sql_help.c:367 sql_help.c:370 +#: sql_help.c:371 sql_help.c:1844 sql_help.c:1849 sql_help.c:1856 +#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 +#: sql_help.c:1861 sql_help.c:1862 sql_help.c:1867 sql_help.c:1869 +#: sql_help.c:1873 sql_help.c:1875 sql_help.c:1879 sql_help.c:1884 +#: sql_help.c:1885 sql_help.c:1892 sql_help.c:1893 sql_help.c:1894 +#: sql_help.c:1895 sql_help.c:1896 sql_help.c:1897 sql_help.c:1898 +#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1901 sql_help.c:1902 +#: sql_help.c:1907 sql_help.c:1908 sql_help.c:4451 sql_help.c:4456 +#: sql_help.c:4457 sql_help.c:4458 sql_help.c:4459 sql_help.c:4465 +#: sql_help.c:4466 sql_help.c:4471 sql_help.c:4472 sql_help.c:4477 +#: sql_help.c:4478 sql_help.c:4479 sql_help.c:4480 sql_help.c:4481 +#: sql_help.c:4482 +msgid "object_name" +msgstr "ім'я_об'єкту" + +#: sql_help.c:329 sql_help.c:1845 sql_help.c:4454 +msgid "aggregate_name" +msgstr "ім'я_агр_функції" + +#: sql_help.c:331 sql_help.c:1847 sql_help.c:2131 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:3357 +msgid "source_type" +msgstr "початковий_тип" + +#: sql_help.c:332 sql_help.c:1848 sql_help.c:2132 sql_help.c:2136 +#: sql_help.c:2138 sql_help.c:3358 +msgid "target_type" +msgstr "тип_цілі" + +#: sql_help.c:339 sql_help.c:786 sql_help.c:1863 sql_help.c:2133 +#: sql_help.c:2174 sql_help.c:2250 sql_help.c:2518 sql_help.c:2549 +#: sql_help.c:3117 sql_help.c:4353 sql_help.c:4460 sql_help.c:4577 +#: sql_help.c:4581 sql_help.c:4585 sql_help.c:4588 sql_help.c:4834 +#: sql_help.c:4838 sql_help.c:4842 sql_help.c:4845 sql_help.c:5072 +#: sql_help.c:5076 sql_help.c:5080 sql_help.c:5083 +msgid "function_name" +msgstr "ім'я_функції" + +#: sql_help.c:344 sql_help.c:779 sql_help.c:1870 sql_help.c:2542 +msgid "operator_name" +msgstr "ім'я_оператора" + +#: sql_help.c:345 sql_help.c:715 sql_help.c:719 sql_help.c:723 sql_help.c:1871 +#: sql_help.c:2519 sql_help.c:3481 +msgid "left_type" +msgstr "тип_ліворуч" + +#: sql_help.c:346 sql_help.c:716 sql_help.c:720 sql_help.c:724 sql_help.c:1872 +#: sql_help.c:2520 sql_help.c:3482 +msgid "right_type" +msgstr "тип_праворуч" + +#: sql_help.c:348 sql_help.c:350 sql_help.c:742 sql_help.c:745 sql_help.c:748 +#: sql_help.c:777 sql_help.c:789 sql_help.c:797 sql_help.c:800 sql_help.c:803 +#: sql_help.c:1408 sql_help.c:1874 sql_help.c:1876 sql_help.c:2539 +#: sql_help.c:2560 sql_help.c:2950 sql_help.c:3491 sql_help.c:3500 +msgid "index_method" +msgstr "метод_індексу" + +#: sql_help.c:352 sql_help.c:1880 sql_help.c:4467 +msgid "procedure_name" +msgstr "назва_процедури" + +#: sql_help.c:356 sql_help.c:1886 sql_help.c:3904 sql_help.c:4473 +msgid "routine_name" +msgstr "ім'я_підпрограми" + +#: sql_help.c:368 sql_help.c:1380 sql_help.c:1903 sql_help.c:2394 +#: sql_help.c:2600 sql_help.c:2905 sql_help.c:3084 sql_help.c:3662 +#: sql_help.c:3926 sql_help.c:4375 +msgid "type_name" +msgstr "назва_типу" + +#: sql_help.c:369 sql_help.c:1904 sql_help.c:2393 sql_help.c:2599 +#: sql_help.c:3085 sql_help.c:3315 sql_help.c:3663 sql_help.c:3911 +#: sql_help.c:4360 +msgid "lang_name" +msgstr "назва_мови" + +#: sql_help.c:372 +msgid "and aggregate_signature is:" +msgstr "і сигнатура_агр_функції:" + +#: sql_help.c:395 sql_help.c:1998 sql_help.c:2275 +msgid "handler_function" +msgstr "функція_обробник" + +#: sql_help.c:396 sql_help.c:2276 +msgid "validator_function" +msgstr "функція_перевірки" + +#: sql_help.c:444 sql_help.c:523 sql_help.c:667 sql_help.c:853 sql_help.c:1003 +#: sql_help.c:1309 sql_help.c:1581 +msgid "action" +msgstr "дія" + +#: sql_help.c:446 sql_help.c:453 sql_help.c:457 sql_help.c:458 sql_help.c:461 +#: sql_help.c:463 sql_help.c:464 sql_help.c:465 sql_help.c:467 sql_help.c:470 +#: sql_help.c:472 sql_help.c:473 sql_help.c:671 sql_help.c:681 sql_help.c:683 +#: sql_help.c:686 sql_help.c:688 sql_help.c:689 sql_help.c:911 sql_help.c:1080 +#: sql_help.c:1311 sql_help.c:1329 sql_help.c:1333 sql_help.c:1334 +#: sql_help.c:1338 sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 +#: sql_help.c:1343 sql_help.c:1345 sql_help.c:1348 sql_help.c:1349 +#: sql_help.c:1351 sql_help.c:1354 sql_help.c:1356 sql_help.c:1357 +#: sql_help.c:1404 sql_help.c:1406 sql_help.c:1413 sql_help.c:1422 +#: sql_help.c:1427 sql_help.c:1431 sql_help.c:1432 sql_help.c:1683 +#: sql_help.c:1686 sql_help.c:1690 sql_help.c:1726 sql_help.c:1851 +#: sql_help.c:1964 sql_help.c:1970 sql_help.c:1983 sql_help.c:1984 +#: sql_help.c:1985 sql_help.c:2325 sql_help.c:2338 sql_help.c:2391 +#: sql_help.c:2459 sql_help.c:2465 sql_help.c:2498 sql_help.c:2629 +#: sql_help.c:2738 sql_help.c:2773 sql_help.c:2775 sql_help.c:2887 +#: sql_help.c:2896 sql_help.c:2906 sql_help.c:2909 sql_help.c:2919 +#: sql_help.c:2923 sql_help.c:2946 sql_help.c:2948 sql_help.c:2955 +#: sql_help.c:2968 sql_help.c:2973 sql_help.c:2977 sql_help.c:2978 +#: sql_help.c:2994 sql_help.c:3120 sql_help.c:3260 sql_help.c:3883 +#: sql_help.c:3884 sql_help.c:3980 sql_help.c:3995 sql_help.c:3997 +#: sql_help.c:3999 sql_help.c:4084 sql_help.c:4087 sql_help.c:4089 +#: sql_help.c:4332 sql_help.c:4333 sql_help.c:4453 sql_help.c:4614 +#: sql_help.c:4620 sql_help.c:4622 sql_help.c:4871 sql_help.c:4877 +#: sql_help.c:4879 sql_help.c:4920 sql_help.c:4922 sql_help.c:4924 +#: sql_help.c:4971 sql_help.c:5109 sql_help.c:5115 sql_help.c:5117 +msgid "column_name" +msgstr "назва_стовпця" + +#: sql_help.c:447 sql_help.c:672 sql_help.c:1312 sql_help.c:1691 +msgid "new_column_name" +msgstr "нова_назва_стовпця" + +#: sql_help.c:452 sql_help.c:544 sql_help.c:680 sql_help.c:874 sql_help.c:1024 +#: sql_help.c:1328 sql_help.c:1591 +msgid "where action is one of:" +msgstr "де допустима дія:" + +#: sql_help.c:454 sql_help.c:459 sql_help.c:1072 sql_help.c:1330 +#: sql_help.c:1335 sql_help.c:1593 sql_help.c:1597 sql_help.c:2229 +#: sql_help.c:2326 sql_help.c:2538 sql_help.c:2731 sql_help.c:2888 +#: sql_help.c:3167 sql_help.c:4141 +msgid "data_type" +msgstr "тип_даних" + +#: sql_help.c:455 sql_help.c:460 sql_help.c:1331 sql_help.c:1336 +#: sql_help.c:1594 sql_help.c:1598 sql_help.c:2230 sql_help.c:2329 +#: sql_help.c:2461 sql_help.c:2890 sql_help.c:2898 sql_help.c:2911 +#: sql_help.c:2925 sql_help.c:3168 sql_help.c:3174 sql_help.c:3990 +msgid "collation" +msgstr "правила_сортування" + +#: sql_help.c:456 sql_help.c:1332 sql_help.c:2330 sql_help.c:2339 +#: sql_help.c:2891 sql_help.c:2907 sql_help.c:2920 +msgid "column_constraint" +msgstr "обмеження_стовпця" + +#: sql_help.c:466 sql_help.c:608 sql_help.c:682 sql_help.c:1350 sql_help.c:4968 +msgid "integer" +msgstr "ціле" + +#: sql_help.c:468 sql_help.c:471 sql_help.c:684 sql_help.c:687 sql_help.c:1352 +#: sql_help.c:1355 +msgid "attribute_option" +msgstr "параметр_атрибуту" + +#: sql_help.c:476 sql_help.c:1359 sql_help.c:2331 sql_help.c:2340 +#: sql_help.c:2892 sql_help.c:2908 sql_help.c:2921 +msgid "table_constraint" +msgstr "обмеження_таблиці" + +#: sql_help.c:479 sql_help.c:480 sql_help.c:481 sql_help.c:482 sql_help.c:1364 +#: sql_help.c:1365 sql_help.c:1366 sql_help.c:1367 sql_help.c:1905 +msgid "trigger_name" +msgstr "ім'я_тригеру" + +#: sql_help.c:483 sql_help.c:484 sql_help.c:1378 sql_help.c:1379 +#: sql_help.c:2332 sql_help.c:2337 sql_help.c:2895 sql_help.c:2918 +msgid "parent_table" +msgstr "батьківська_таблиця" + +#: sql_help.c:543 sql_help.c:600 sql_help.c:669 sql_help.c:873 sql_help.c:1023 +#: sql_help.c:1550 sql_help.c:2261 +msgid "extension_name" +msgstr "ім'я_розширення" + +#: sql_help.c:545 sql_help.c:1025 sql_help.c:2395 +msgid "execution_cost" +msgstr "вартість_виконання" + +#: sql_help.c:546 sql_help.c:1026 sql_help.c:2396 +msgid "result_rows" +msgstr "рядки_результату" + +#: sql_help.c:547 sql_help.c:2397 +msgid "support_function" +msgstr "функція_підтримки" + +#: sql_help.c:569 sql_help.c:571 sql_help.c:948 sql_help.c:956 sql_help.c:960 +#: sql_help.c:963 sql_help.c:966 sql_help.c:1633 sql_help.c:1641 +#: sql_help.c:1645 sql_help.c:1648 sql_help.c:1651 sql_help.c:2709 +#: sql_help.c:2711 sql_help.c:2714 sql_help.c:2715 sql_help.c:3881 +#: sql_help.c:3882 sql_help.c:3886 sql_help.c:3887 sql_help.c:3890 +#: sql_help.c:3891 sql_help.c:3893 sql_help.c:3894 sql_help.c:3896 +#: sql_help.c:3897 sql_help.c:3899 sql_help.c:3900 sql_help.c:3902 +#: sql_help.c:3903 sql_help.c:3909 sql_help.c:3910 sql_help.c:3912 +#: sql_help.c:3913 sql_help.c:3915 sql_help.c:3916 sql_help.c:3918 +#: sql_help.c:3919 sql_help.c:3921 sql_help.c:3922 sql_help.c:3924 +#: sql_help.c:3925 sql_help.c:3927 sql_help.c:3928 sql_help.c:3930 +#: sql_help.c:3931 sql_help.c:4330 sql_help.c:4331 sql_help.c:4335 +#: sql_help.c:4336 sql_help.c:4339 sql_help.c:4340 sql_help.c:4342 +#: sql_help.c:4343 sql_help.c:4345 sql_help.c:4346 sql_help.c:4348 +#: sql_help.c:4349 sql_help.c:4351 sql_help.c:4352 sql_help.c:4358 +#: sql_help.c:4359 sql_help.c:4361 sql_help.c:4362 sql_help.c:4364 +#: sql_help.c:4365 sql_help.c:4367 sql_help.c:4368 sql_help.c:4370 +#: sql_help.c:4371 sql_help.c:4373 sql_help.c:4374 sql_help.c:4376 +#: sql_help.c:4377 sql_help.c:4379 sql_help.c:4380 +msgid "role_specification" +msgstr "вказання_ролі" + +#: sql_help.c:570 sql_help.c:572 sql_help.c:1664 sql_help.c:2198 +#: sql_help.c:2717 sql_help.c:3245 sql_help.c:3696 sql_help.c:4707 +msgid "user_name" +msgstr "ім'я_користувача" + +#: sql_help.c:573 sql_help.c:968 sql_help.c:1653 sql_help.c:2716 +#: sql_help.c:3932 sql_help.c:4381 +msgid "where role_specification can be:" +msgstr "де вказання_ролі може бути:" + +#: sql_help.c:575 +msgid "group_name" +msgstr "ім'я_групи" + +#: sql_help.c:596 sql_help.c:1425 sql_help.c:2208 sql_help.c:2468 +#: sql_help.c:2502 sql_help.c:2903 sql_help.c:2916 sql_help.c:2930 +#: sql_help.c:2971 sql_help.c:2998 sql_help.c:3010 sql_help.c:3923 +#: sql_help.c:4372 +msgid "tablespace_name" +msgstr "ім'я_табличного_простору" + +#: sql_help.c:598 sql_help.c:691 sql_help.c:1372 sql_help.c:1382 +#: sql_help.c:1420 sql_help.c:1780 sql_help.c:1783 +msgid "index_name" +msgstr "назва_індексу" + +#: sql_help.c:602 sql_help.c:605 sql_help.c:694 sql_help.c:696 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1423 sql_help.c:2466 sql_help.c:2500 +#: sql_help.c:2901 sql_help.c:2914 sql_help.c:2928 sql_help.c:2969 +#: sql_help.c:2996 +msgid "storage_parameter" +msgstr "параметр_зберігання" + +#: sql_help.c:607 +msgid "column_number" +msgstr "номер_стовпця" + +#: sql_help.c:631 sql_help.c:1868 sql_help.c:4464 +msgid "large_object_oid" +msgstr "oid_великого_об'єкта" + +#: sql_help.c:690 sql_help.c:1358 sql_help.c:2889 +msgid "compression_method" +msgstr "compression_method" + +#: sql_help.c:692 sql_help.c:1373 +msgid "new_access_method" +msgstr "новий_метод_доступа" + +#: sql_help.c:725 sql_help.c:2523 +msgid "res_proc" +msgstr "res_процедура" + +#: sql_help.c:726 sql_help.c:2524 +msgid "join_proc" +msgstr "процедура_приєднання" + +#: sql_help.c:778 sql_help.c:790 sql_help.c:2541 +msgid "strategy_number" +msgstr "номер_стратегії" + +#: sql_help.c:780 sql_help.c:781 sql_help.c:784 sql_help.c:785 sql_help.c:791 +#: sql_help.c:792 sql_help.c:794 sql_help.c:795 sql_help.c:2543 sql_help.c:2544 +#: sql_help.c:2547 sql_help.c:2548 +msgid "op_type" +msgstr "тип_операції" + +#: sql_help.c:782 sql_help.c:2545 +msgid "sort_family_name" +msgstr "ім'я_родини_сортування" + +#: sql_help.c:783 sql_help.c:793 sql_help.c:2546 +msgid "support_number" +msgstr "номер_підтримки" + +#: sql_help.c:787 sql_help.c:2134 sql_help.c:2550 sql_help.c:3087 +#: sql_help.c:3089 +msgid "argument_type" +msgstr "тип_аргументу" + +#: sql_help.c:818 sql_help.c:821 sql_help.c:910 sql_help.c:1039 sql_help.c:1079 +#: sql_help.c:1546 sql_help.c:1549 sql_help.c:1725 sql_help.c:1779 +#: sql_help.c:1782 sql_help.c:1853 sql_help.c:1878 sql_help.c:1891 +#: sql_help.c:1906 sql_help.c:1963 sql_help.c:1969 sql_help.c:2324 +#: sql_help.c:2336 sql_help.c:2457 sql_help.c:2497 sql_help.c:2574 +#: sql_help.c:2628 sql_help.c:2685 sql_help.c:2737 sql_help.c:2770 +#: sql_help.c:2777 sql_help.c:2886 sql_help.c:2904 sql_help.c:2917 +#: sql_help.c:2993 sql_help.c:3113 sql_help.c:3294 sql_help.c:3517 +#: sql_help.c:3566 sql_help.c:3672 sql_help.c:3879 sql_help.c:3885 +#: sql_help.c:3946 sql_help.c:3978 sql_help.c:4328 sql_help.c:4334 +#: sql_help.c:4452 sql_help.c:4563 sql_help.c:4565 sql_help.c:4627 +#: sql_help.c:4666 sql_help.c:4820 sql_help.c:4822 sql_help.c:4884 +#: sql_help.c:4918 sql_help.c:4970 sql_help.c:5058 sql_help.c:5060 +#: sql_help.c:5122 +msgid "table_name" +msgstr "ім'я_таблиці" + +#: sql_help.c:823 sql_help.c:2576 +msgid "using_expression" +msgstr "вираз_використання" + +#: sql_help.c:824 sql_help.c:2577 +msgid "check_expression" +msgstr "вираз_перевірки" + +#: sql_help.c:897 sql_help.c:899 sql_help.c:901 sql_help.c:2624 +msgid "publication_object" +msgstr "об'єкт_публікація" + +#: sql_help.c:903 sql_help.c:2625 +msgid "publication_parameter" +msgstr "параметр_публікації" + +#: sql_help.c:909 sql_help.c:2627 +msgid "where publication_object is one of:" +msgstr "де об'єкт_публікація є одним з:" + +#: sql_help.c:952 sql_help.c:1637 sql_help.c:2435 sql_help.c:2662 +#: sql_help.c:3228 +msgid "password" +msgstr "пароль" + +#: sql_help.c:953 sql_help.c:1638 sql_help.c:2436 sql_help.c:2663 +#: sql_help.c:3229 +msgid "timestamp" +msgstr "мітка часу" + +#: sql_help.c:957 sql_help.c:961 sql_help.c:964 sql_help.c:967 sql_help.c:1642 +#: sql_help.c:1646 sql_help.c:1649 sql_help.c:1652 sql_help.c:3892 +#: sql_help.c:4341 +msgid "database_name" +msgstr "назва_бази_даних" + +#: sql_help.c:1073 sql_help.c:2732 +msgid "increment" +msgstr "інкремент" + +#: sql_help.c:1074 sql_help.c:2733 +msgid "minvalue" +msgstr "мін_значення" + +#: sql_help.c:1075 sql_help.c:2734 +msgid "maxvalue" +msgstr "макс_значення" + +#: sql_help.c:1076 sql_help.c:2735 sql_help.c:4561 sql_help.c:4664 +#: sql_help.c:4818 sql_help.c:4987 sql_help.c:5056 +msgid "start" +msgstr "початок" + +#: sql_help.c:1077 sql_help.c:1347 +msgid "restart" +msgstr "перезапуск" + +#: sql_help.c:1078 sql_help.c:2736 +msgid "cache" +msgstr "кеш" + +#: sql_help.c:1123 +msgid "new_target" +msgstr "нова_ціль" + +#: sql_help.c:1142 sql_help.c:2789 +msgid "conninfo" +msgstr "інформація_підключення" + +#: sql_help.c:1144 sql_help.c:1148 sql_help.c:1152 sql_help.c:2790 +msgid "publication_name" +msgstr "назва_публікації" + +#: sql_help.c:1145 sql_help.c:1149 sql_help.c:1153 +msgid "publication_option" +msgstr "publication_option" + +#: sql_help.c:1156 +msgid "refresh_option" +msgstr "опція_оновлення" + +#: sql_help.c:1161 sql_help.c:2791 +msgid "subscription_parameter" +msgstr "параметр_підписки" + +#: sql_help.c:1164 +msgid "skip_option" +msgstr "опція_пропуска" + +#: sql_help.c:1324 sql_help.c:1327 +msgid "partition_name" +msgstr "ім'я_розділу" + +#: sql_help.c:1325 sql_help.c:2341 sql_help.c:2922 +msgid "partition_bound_spec" +msgstr "специфікація_рамок_розділу" + +#: sql_help.c:1344 sql_help.c:1394 sql_help.c:2936 +msgid "sequence_options" +msgstr "опції_послідовності" + +#: sql_help.c:1346 +msgid "sequence_option" +msgstr "опція_послідовності" + +#: sql_help.c:1360 +msgid "table_constraint_using_index" +msgstr "індекс_обмеження_таблиці" + +#: sql_help.c:1368 sql_help.c:1369 sql_help.c:1370 sql_help.c:1371 +msgid "rewrite_rule_name" +msgstr "ім'я_правила_перезапису" + +#: sql_help.c:1383 sql_help.c:2353 sql_help.c:2961 +msgid "and partition_bound_spec is:" +msgstr "і специфікація_рамок_розділу:" + +#: sql_help.c:1384 sql_help.c:1385 sql_help.c:1386 sql_help.c:2354 +#: sql_help.c:2355 sql_help.c:2356 sql_help.c:2962 sql_help.c:2963 +#: sql_help.c:2964 +msgid "partition_bound_expr" +msgstr "код_секції" + +#: sql_help.c:1387 sql_help.c:1388 sql_help.c:2357 sql_help.c:2358 +#: sql_help.c:2965 sql_help.c:2966 +msgid "numeric_literal" +msgstr "числовий_літерал" + +#: sql_help.c:1389 +msgid "and column_constraint is:" +msgstr "і обмеження_стовпця:" + +#: sql_help.c:1392 sql_help.c:2348 sql_help.c:2389 sql_help.c:2598 +#: sql_help.c:2934 +msgid "default_expr" +msgstr "вираз_за_замовчуванням" + +#: sql_help.c:1393 sql_help.c:2349 sql_help.c:2935 +msgid "generation_expr" +msgstr "код_генерації" + +#: sql_help.c:1395 sql_help.c:1396 sql_help.c:1405 sql_help.c:1407 +#: sql_help.c:1411 sql_help.c:2937 sql_help.c:2938 sql_help.c:2947 +#: sql_help.c:2949 sql_help.c:2953 +msgid "index_parameters" +msgstr "параметри_індексу" + +#: sql_help.c:1397 sql_help.c:1414 sql_help.c:2939 sql_help.c:2956 +msgid "reftable" +msgstr "залежна_таблиця" + +#: sql_help.c:1398 sql_help.c:1415 sql_help.c:2940 sql_help.c:2957 +msgid "refcolumn" +msgstr "залежний_стовпець" + +#: sql_help.c:1399 sql_help.c:1400 sql_help.c:1416 sql_help.c:1417 +#: sql_help.c:2941 sql_help.c:2942 sql_help.c:2958 sql_help.c:2959 +msgid "referential_action" +msgstr "дія_посилання" + +#: sql_help.c:1401 sql_help.c:2350 sql_help.c:2943 +msgid "and table_constraint is:" +msgstr "і обмеження_таблиці:" + +#: sql_help.c:1409 sql_help.c:2951 +msgid "exclude_element" +msgstr "об'єкт_виключення" + +#: sql_help.c:1410 sql_help.c:2952 sql_help.c:4559 sql_help.c:4662 +#: sql_help.c:4816 sql_help.c:4985 sql_help.c:5054 +msgid "operator" +msgstr "оператор" + +#: sql_help.c:1412 sql_help.c:2469 sql_help.c:2954 +msgid "predicate" +msgstr "предикат" + +#: sql_help.c:1418 +msgid "and table_constraint_using_index is:" +msgstr "і індекс_обмеження_таблиці:" + +#: sql_help.c:1421 sql_help.c:2967 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "параметри_індексу в обмеженнях UNIQUE, PRIMARY KEY, EXCLUDE:" + +#: sql_help.c:1426 sql_help.c:2972 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "елемент_виключення в обмеженні EXCLUDE:" + +#: sql_help.c:1429 sql_help.c:2462 sql_help.c:2899 sql_help.c:2912 +#: sql_help.c:2926 sql_help.c:2975 sql_help.c:3991 +msgid "opclass" +msgstr "клас_оператора" + +#: sql_help.c:1430 sql_help.c:2976 +msgid "referential_action in a FOREIGN KEY/REFERENCES constraint is:" +msgstr "посилання на дію в обмеженні FOREIGN KEY/REFERENCES:" + +#: sql_help.c:1448 sql_help.c:1451 sql_help.c:3013 +msgid "tablespace_option" +msgstr "опція_табличного_простору" + +#: sql_help.c:1472 sql_help.c:1475 sql_help.c:1481 sql_help.c:1485 +msgid "token_type" +msgstr "тип_токену" + +#: sql_help.c:1473 sql_help.c:1476 +msgid "dictionary_name" +msgstr "ім'я_словника" + +#: sql_help.c:1478 sql_help.c:1482 +msgid "old_dictionary" +msgstr "старий_словник" + +#: sql_help.c:1479 sql_help.c:1483 +msgid "new_dictionary" +msgstr "новий_словник" + +#: sql_help.c:1578 sql_help.c:1592 sql_help.c:1595 sql_help.c:1596 +#: sql_help.c:3166 +msgid "attribute_name" +msgstr "ім'я_атрибута" + +#: sql_help.c:1579 +msgid "new_attribute_name" +msgstr "нове_ім'я_атрибута" + +#: sql_help.c:1583 sql_help.c:1587 +msgid "new_enum_value" +msgstr "нове_значення_перерахування" + +#: sql_help.c:1584 +msgid "neighbor_enum_value" +msgstr "сусіднє_значення_перерахування" + +#: sql_help.c:1586 +msgid "existing_enum_value" +msgstr "існуюче_значення_перерахування" + +#: sql_help.c:1589 +msgid "property" +msgstr "властивість" + +#: sql_help.c:1665 sql_help.c:2333 sql_help.c:2342 sql_help.c:2748 +#: sql_help.c:3246 sql_help.c:3697 sql_help.c:3901 sql_help.c:3947 +#: sql_help.c:4350 +msgid "server_name" +msgstr "назва_серверу" + +#: sql_help.c:1697 sql_help.c:1700 sql_help.c:3261 +msgid "view_option_name" +msgstr "ім'я_параметра_представлення" + +#: sql_help.c:1698 sql_help.c:3262 +msgid "view_option_value" +msgstr "значення_параметра_представлення" + +#: sql_help.c:1719 sql_help.c:1720 sql_help.c:4957 sql_help.c:4958 +msgid "table_and_columns" +msgstr "таблиця_і_стовпці" + +#: sql_help.c:1721 sql_help.c:1784 sql_help.c:1975 sql_help.c:3745 +#: sql_help.c:4185 sql_help.c:4959 +msgid "where option can be one of:" +msgstr "де параметр може бути одним із:" + +#: sql_help.c:1722 sql_help.c:1723 sql_help.c:1785 sql_help.c:1977 +#: sql_help.c:1980 sql_help.c:2159 sql_help.c:3746 sql_help.c:3747 +#: sql_help.c:3748 sql_help.c:3749 sql_help.c:3750 sql_help.c:3751 +#: sql_help.c:3752 sql_help.c:3753 sql_help.c:4186 sql_help.c:4188 +#: sql_help.c:4960 sql_help.c:4961 sql_help.c:4962 sql_help.c:4963 +#: sql_help.c:4964 sql_help.c:4965 sql_help.c:4966 sql_help.c:4967 +msgid "boolean" +msgstr "логічний" + +#: sql_help.c:1724 sql_help.c:4969 +msgid "and table_and_columns is:" +msgstr "і таблиця_і_стовпці:" + +#: sql_help.c:1740 sql_help.c:4723 sql_help.c:4725 sql_help.c:4749 +msgid "transaction_mode" +msgstr "режим_транзакції" + +#: sql_help.c:1741 sql_help.c:4726 sql_help.c:4750 +msgid "where transaction_mode is one of:" +msgstr "де режим_транзакції один з:" + +#: sql_help.c:1750 sql_help.c:4569 sql_help.c:4578 sql_help.c:4582 +#: sql_help.c:4586 sql_help.c:4589 sql_help.c:4826 sql_help.c:4835 +#: sql_help.c:4839 sql_help.c:4843 sql_help.c:4846 sql_help.c:5064 +#: sql_help.c:5073 sql_help.c:5077 sql_help.c:5081 sql_help.c:5084 +msgid "argument" +msgstr "аргумент" + +#: sql_help.c:1850 +msgid "relation_name" +msgstr "назва_відношення" + +#: sql_help.c:1855 sql_help.c:3895 sql_help.c:4344 +msgid "domain_name" +msgstr "назва_домену" + +#: sql_help.c:1877 +msgid "policy_name" +msgstr "назва_політики" + +#: sql_help.c:1890 +msgid "rule_name" +msgstr "назва_правила" + +#: sql_help.c:1909 sql_help.c:4483 +msgid "string_literal" +msgstr "рядковий_літерал" + +#: sql_help.c:1934 sql_help.c:4150 sql_help.c:4397 +msgid "transaction_id" +msgstr "ідентифікатор_транзакції" + +#: sql_help.c:1965 sql_help.c:1972 sql_help.c:4017 +msgid "filename" +msgstr "ім'я файлу" + +#: sql_help.c:1966 sql_help.c:1973 sql_help.c:2687 sql_help.c:2688 +#: sql_help.c:2689 +msgid "command" +msgstr "команда" + +#: sql_help.c:1968 sql_help.c:2686 sql_help.c:3116 sql_help.c:3297 +#: sql_help.c:4001 sql_help.c:4078 sql_help.c:4081 sql_help.c:4552 +#: sql_help.c:4554 sql_help.c:4655 sql_help.c:4657 sql_help.c:4809 +#: sql_help.c:4811 sql_help.c:4927 sql_help.c:5047 sql_help.c:5049 +msgid "condition" +msgstr "умова" + +#: sql_help.c:1971 sql_help.c:2503 sql_help.c:2999 sql_help.c:3263 +#: sql_help.c:3281 sql_help.c:3982 +msgid "query" +msgstr "запит" + +#: sql_help.c:1976 +msgid "format_name" +msgstr "назва_формату" + +#: sql_help.c:1978 +msgid "delimiter_character" +msgstr "символ_роздільник" + +#: sql_help.c:1979 +msgid "null_string" +msgstr "представлення_NULL" + +#: sql_help.c:1981 +msgid "quote_character" +msgstr "символ_лапок" + +#: sql_help.c:1982 +msgid "escape_character" +msgstr "символ_екранування" + +#: sql_help.c:1986 +msgid "encoding_name" +msgstr "ім'я_кодування" + +#: sql_help.c:1997 +msgid "access_method_type" +msgstr "тип_метода_доступа" + +#: sql_help.c:2068 sql_help.c:2087 sql_help.c:2090 +msgid "arg_data_type" +msgstr "тип_даних_аргумента" + +#: sql_help.c:2069 sql_help.c:2091 sql_help.c:2099 +msgid "sfunc" +msgstr "функція_стану" + +#: sql_help.c:2070 sql_help.c:2092 sql_help.c:2100 +msgid "state_data_type" +msgstr "тип_даних_стану" + +#: sql_help.c:2071 sql_help.c:2093 sql_help.c:2101 +msgid "state_data_size" +msgstr "розмір_даних_стану" + +#: sql_help.c:2072 sql_help.c:2094 sql_help.c:2102 +msgid "ffunc" +msgstr "функція_завершення" + +#: sql_help.c:2073 sql_help.c:2103 +msgid "combinefunc" +msgstr "комбінуюча_функція" + +#: sql_help.c:2074 sql_help.c:2104 +msgid "serialfunc" +msgstr "функція_серіалізації" + +#: sql_help.c:2075 sql_help.c:2105 +msgid "deserialfunc" +msgstr "функція_десеріалізації" + +#: sql_help.c:2076 sql_help.c:2095 sql_help.c:2106 +msgid "initial_condition" +msgstr "початкова_умова" + +#: sql_help.c:2077 sql_help.c:2107 +msgid "msfunc" +msgstr "функція_стану_рух" + +#: sql_help.c:2078 sql_help.c:2108 +msgid "minvfunc" +msgstr "зворотна_функція_рух" + +#: sql_help.c:2079 sql_help.c:2109 +msgid "mstate_data_type" +msgstr "тип_даних_стану_рух" + +#: sql_help.c:2080 sql_help.c:2110 +msgid "mstate_data_size" +msgstr "розмір_даних_стану_рух" + +#: sql_help.c:2081 sql_help.c:2111 +msgid "mffunc" +msgstr "функція_завершення_рух" + +#: sql_help.c:2082 sql_help.c:2112 +msgid "minitial_condition" +msgstr "початкова_умова_рух" + +#: sql_help.c:2083 sql_help.c:2113 +msgid "sort_operator" +msgstr "оператор_сортування" + +#: sql_help.c:2096 +msgid "or the old syntax" +msgstr "або старий синтаксис" + +#: sql_help.c:2098 +msgid "base_type" +msgstr "базовий_тип" + +#: sql_help.c:2155 sql_help.c:2202 +msgid "locale" +msgstr "локаль" + +#: sql_help.c:2156 sql_help.c:2203 +msgid "lc_collate" +msgstr "код_правила_сортування" + +#: sql_help.c:2157 sql_help.c:2204 +msgid "lc_ctype" +msgstr "код_класифікації_символів" + +#: sql_help.c:2158 sql_help.c:4450 +msgid "provider" +msgstr "постачальник" + +#: sql_help.c:2160 sql_help.c:2263 +msgid "version" +msgstr "версія" + +#: sql_help.c:2162 +msgid "existing_collation" +msgstr "існуюче_правило_сортування" + +#: sql_help.c:2172 +msgid "source_encoding" +msgstr "початкове_кодування" + +#: sql_help.c:2173 +msgid "dest_encoding" +msgstr "цільве_кодування" + +#: sql_help.c:2199 sql_help.c:3039 +msgid "template" +msgstr "шаблон" + +#: sql_help.c:2200 +msgid "encoding" +msgstr "кодування" + +#: sql_help.c:2201 +msgid "strategy" +msgstr "стратегія" + +#: sql_help.c:2205 +msgid "icu_locale" +msgstr "icu_locale" + +#: sql_help.c:2206 +msgid "locale_provider" +msgstr "локаль_провайдер" + +#: sql_help.c:2207 +msgid "collation_version" +msgstr "версія_сортування" + +#: sql_help.c:2212 +msgid "oid" +msgstr "oid" + +#: sql_help.c:2232 +msgid "constraint" +msgstr "обмеження" + +#: sql_help.c:2233 +msgid "where constraint is:" +msgstr "де обмеження:" + +#: sql_help.c:2247 sql_help.c:2684 sql_help.c:3112 +msgid "event" +msgstr "подія" + +#: sql_help.c:2248 +msgid "filter_variable" +msgstr "змінна_фільтру" + +#: sql_help.c:2249 +msgid "filter_value" +msgstr "значення_фільтру" + +#: sql_help.c:2345 sql_help.c:2931 +msgid "where column_constraint is:" +msgstr "де обмеження_стовпців:" + +#: sql_help.c:2390 +msgid "rettype" +msgstr "тип_результату" + +#: sql_help.c:2392 +msgid "column_type" +msgstr "тип_стовпця" + +#: sql_help.c:2401 sql_help.c:2604 +msgid "definition" +msgstr "визначення" + +#: sql_help.c:2402 sql_help.c:2605 +msgid "obj_file" +msgstr "об'єктний_файл" + +#: sql_help.c:2403 sql_help.c:2606 +msgid "link_symbol" +msgstr "символ_експорту" + +#: sql_help.c:2404 sql_help.c:2607 +msgid "sql_body" +msgstr "sql_body" + +#: sql_help.c:2442 sql_help.c:2669 sql_help.c:3235 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2458 sql_help.c:2499 sql_help.c:2900 sql_help.c:2913 +#: sql_help.c:2927 sql_help.c:2995 +msgid "method" +msgstr "метод" + +#: sql_help.c:2463 +msgid "opclass_parameter" +msgstr "opclass_parameter" + +#: sql_help.c:2480 +msgid "call_handler" +msgstr "обробник_виклику" + +#: sql_help.c:2481 +msgid "inline_handler" +msgstr "обробник_впровадженого_коду" + +#: sql_help.c:2482 +msgid "valfunction" +msgstr "функція_перевірки" + +#: sql_help.c:2521 +msgid "com_op" +msgstr "комут_оператор" + +#: sql_help.c:2522 +msgid "neg_op" +msgstr "зворотній_оператор" + +#: sql_help.c:2540 +msgid "family_name" +msgstr "назва_сімейства" + +#: sql_help.c:2551 +msgid "storage_type" +msgstr "тип_зберігання" + +#: sql_help.c:2690 sql_help.c:3119 +msgid "where event can be one of:" +msgstr "де подія може бути однією з:" + +#: sql_help.c:2710 sql_help.c:2712 +msgid "schema_element" +msgstr "елемент_схеми" + +#: sql_help.c:2749 +msgid "server_type" +msgstr "тип_серверу" + +#: sql_help.c:2750 +msgid "server_version" +msgstr "версія_серверу" + +#: sql_help.c:2751 sql_help.c:3898 sql_help.c:4347 +msgid "fdw_name" +msgstr "назва_fdw" + +#: sql_help.c:2768 sql_help.c:2771 +msgid "statistics_name" +msgstr "назва_статистики" + +#: sql_help.c:2772 +msgid "statistics_kind" +msgstr "вид_статистики" + +#: sql_help.c:2788 +msgid "subscription_name" +msgstr "назва_підписки" + +#: sql_help.c:2893 +msgid "source_table" +msgstr "вихідна_таблиця" + +#: sql_help.c:2894 +msgid "like_option" +msgstr "параметр_породження" + +#: sql_help.c:2960 +msgid "and like_option is:" +msgstr "і параметр_породження:" + +#: sql_help.c:3012 +msgid "directory" +msgstr "каталог" + +#: sql_help.c:3026 +msgid "parser_name" +msgstr "назва_парсера" + +#: sql_help.c:3027 +msgid "source_config" +msgstr "початкова_конфігурація" + +#: sql_help.c:3056 +msgid "start_function" +msgstr "функція_початку" + +#: sql_help.c:3057 +msgid "gettoken_function" +msgstr "функція_видачі_токену" + +#: sql_help.c:3058 +msgid "end_function" +msgstr "функція_завершення" + +#: sql_help.c:3059 +msgid "lextypes_function" +msgstr "функція_лекс_типів" + +#: sql_help.c:3060 +msgid "headline_function" +msgstr "функція_створення_заголовків" + +#: sql_help.c:3072 +msgid "init_function" +msgstr "функція_ініціалізації" + +#: sql_help.c:3073 +msgid "lexize_function" +msgstr "функція_виділення_лексем" + +#: sql_help.c:3086 +msgid "from_sql_function_name" +msgstr "ім'я_функції_з_sql" + +#: sql_help.c:3088 +msgid "to_sql_function_name" +msgstr "ім'я_функції_в_sql" + +#: sql_help.c:3114 +msgid "referenced_table_name" +msgstr "ім'я_залежної_таблиці" + +#: sql_help.c:3115 +msgid "transition_relation_name" +msgstr "ім'я_перехідного_відношення" + +#: sql_help.c:3118 +msgid "arguments" +msgstr "аргументи" + +#: sql_help.c:3170 +msgid "label" +msgstr "мітка" + +#: sql_help.c:3172 +msgid "subtype" +msgstr "підтип" + +#: sql_help.c:3173 +msgid "subtype_operator_class" +msgstr "клас_оператора_підтипу" + +#: sql_help.c:3175 +msgid "canonical_function" +msgstr "канонічна_функція" + +#: sql_help.c:3176 +msgid "subtype_diff_function" +msgstr "функція_розбіжностей_підтипу" + +#: sql_help.c:3177 +msgid "multirange_type_name" +msgstr "multirange_type_name" + +#: sql_help.c:3179 +msgid "input_function" +msgstr "функція_вводу" + +#: sql_help.c:3180 +msgid "output_function" +msgstr "функція_виводу" + +#: sql_help.c:3181 +msgid "receive_function" +msgstr "функція_отримання" + +#: sql_help.c:3182 +msgid "send_function" +msgstr "функція_відправки" + +#: sql_help.c:3183 +msgid "type_modifier_input_function" +msgstr "функція_введення_модифікатора_типу" + +#: sql_help.c:3184 +msgid "type_modifier_output_function" +msgstr "функція_виводу_модифікатора_типу" + +#: sql_help.c:3185 +msgid "analyze_function" +msgstr "функція_аналізу" + +#: sql_help.c:3186 +msgid "subscript_function" +msgstr "subscript_function" + +#: sql_help.c:3187 +msgid "internallength" +msgstr "внутр_довжина" + +#: sql_help.c:3188 +msgid "alignment" +msgstr "вирівнювання" + +#: sql_help.c:3189 +msgid "storage" +msgstr "зберігання" + +#: sql_help.c:3190 +msgid "like_type" +msgstr "тип_зразок" + +#: sql_help.c:3191 +msgid "category" +msgstr "категорія" + +#: sql_help.c:3192 +msgid "preferred" +msgstr "привілейований" + +#: sql_help.c:3193 +msgid "default" +msgstr "за_замовчуванням" + +#: sql_help.c:3194 +msgid "element" +msgstr "елемент" + +#: sql_help.c:3195 +msgid "delimiter" +msgstr "роздільник" + +#: sql_help.c:3196 +msgid "collatable" +msgstr "сортувальний" + +#: sql_help.c:3293 sql_help.c:3977 sql_help.c:4067 sql_help.c:4547 +#: sql_help.c:4649 sql_help.c:4804 sql_help.c:4917 sql_help.c:5042 +msgid "with_query" +msgstr "with_запит" + +#: sql_help.c:3295 sql_help.c:3979 sql_help.c:4566 sql_help.c:4572 +#: sql_help.c:4575 sql_help.c:4579 sql_help.c:4583 sql_help.c:4591 +#: sql_help.c:4823 sql_help.c:4829 sql_help.c:4832 sql_help.c:4836 +#: sql_help.c:4840 sql_help.c:4848 sql_help.c:4919 sql_help.c:5061 +#: sql_help.c:5067 sql_help.c:5070 sql_help.c:5074 sql_help.c:5078 +#: sql_help.c:5086 +msgid "alias" +msgstr "псевдонім" + +#: sql_help.c:3296 sql_help.c:4551 sql_help.c:4593 sql_help.c:4595 +#: sql_help.c:4599 sql_help.c:4601 sql_help.c:4602 sql_help.c:4603 +#: sql_help.c:4654 sql_help.c:4808 sql_help.c:4850 sql_help.c:4852 +#: sql_help.c:4856 sql_help.c:4858 sql_help.c:4859 sql_help.c:4860 +#: sql_help.c:4926 sql_help.c:5046 sql_help.c:5088 sql_help.c:5090 +#: sql_help.c:5094 sql_help.c:5096 sql_help.c:5097 sql_help.c:5098 +msgid "from_item" +msgstr "джерело_даних" + +#: sql_help.c:3298 sql_help.c:3779 sql_help.c:4117 sql_help.c:4928 +msgid "cursor_name" +msgstr "ім'я_курсору" + +#: sql_help.c:3299 sql_help.c:3985 sql_help.c:4929 +msgid "output_expression" +msgstr "вираз_результату" + +#: sql_help.c:3300 sql_help.c:3986 sql_help.c:4550 sql_help.c:4652 +#: sql_help.c:4807 sql_help.c:4930 sql_help.c:5045 +msgid "output_name" +msgstr "ім'я_результату" + +#: sql_help.c:3316 +msgid "code" +msgstr "код" + +#: sql_help.c:3721 +msgid "parameter" +msgstr "параметр" + +#: sql_help.c:3743 sql_help.c:3744 sql_help.c:4142 +msgid "statement" +msgstr "оператор" + +#: sql_help.c:3778 sql_help.c:4116 +msgid "direction" +msgstr "напрямок" + +#: sql_help.c:3780 sql_help.c:4118 +msgid "where direction can be one of:" +msgstr "де напрямок може бути одним із:" + +#: sql_help.c:3781 sql_help.c:3782 sql_help.c:3783 sql_help.c:3784 +#: sql_help.c:3785 sql_help.c:4119 sql_help.c:4120 sql_help.c:4121 +#: sql_help.c:4122 sql_help.c:4123 sql_help.c:4560 sql_help.c:4562 +#: sql_help.c:4663 sql_help.c:4665 sql_help.c:4817 sql_help.c:4819 +#: sql_help.c:4986 sql_help.c:4988 sql_help.c:5055 sql_help.c:5057 +msgid "count" +msgstr "кількість" + +#: sql_help.c:3888 sql_help.c:4337 +msgid "sequence_name" +msgstr "ім'я_послідовності" + +#: sql_help.c:3906 sql_help.c:4355 +msgid "arg_name" +msgstr "ім'я_аргументу" + +#: sql_help.c:3907 sql_help.c:4356 +msgid "arg_type" +msgstr "тип_аргументу" + +#: sql_help.c:3914 sql_help.c:4363 +msgid "loid" +msgstr "код_вел_об'єкту" + +#: sql_help.c:3945 +msgid "remote_schema" +msgstr "віддалена_схема" + +#: sql_help.c:3948 +msgid "local_schema" +msgstr "локальна_схема" + +#: sql_help.c:3983 +msgid "conflict_target" +msgstr "ціль_конфлікту" + +#: sql_help.c:3984 +msgid "conflict_action" +msgstr "дія_при_конфлікті" + +#: sql_help.c:3987 +msgid "where conflict_target can be one of:" +msgstr "де ціль_конфлікту може бути одним з:" + +#: sql_help.c:3988 +msgid "index_column_name" +msgstr "ім'я_стовпця_індексу" + +#: sql_help.c:3989 +msgid "index_expression" +msgstr "вираз_індексу" + +#: sql_help.c:3992 +msgid "index_predicate" +msgstr "предикат_індексу" + +#: sql_help.c:3994 +msgid "and conflict_action is one of:" +msgstr "і дія_при_конфлікті одна з:" + +#: sql_help.c:4000 sql_help.c:4925 +msgid "sub-SELECT" +msgstr "вкладений-SELECT" + +#: sql_help.c:4009 sql_help.c:4131 sql_help.c:4901 +msgid "channel" +msgstr "канал" + +#: sql_help.c:4031 +msgid "lockmode" +msgstr "режим_блокування" + +#: sql_help.c:4032 +msgid "where lockmode is one of:" +msgstr "де режим_блокування один з:" + +#: sql_help.c:4068 +msgid "target_table_name" +msgstr "ім'я_цілі_таблиці" + +#: sql_help.c:4069 +msgid "target_alias" +msgstr "псевдонім_цілі" + +#: sql_help.c:4070 +msgid "data_source" +msgstr "джерело_даних" + +#: sql_help.c:4071 sql_help.c:4596 sql_help.c:4853 sql_help.c:5091 +msgid "join_condition" +msgstr "умова_поєднання" + +#: sql_help.c:4072 +msgid "when_clause" +msgstr "when_твердження" + +#: sql_help.c:4073 +msgid "where data_source is:" +msgstr "де джерело_даних:" + +#: sql_help.c:4074 +msgid "source_table_name" +msgstr "ім'я_початкова_таблиці" + +#: sql_help.c:4075 +msgid "source_query" +msgstr "джерело_запит" + +#: sql_help.c:4076 +msgid "source_alias" +msgstr "джерело_псевдоніма" + +#: sql_help.c:4077 +msgid "and when_clause is:" +msgstr "і when_clause:" + +#: sql_help.c:4079 +msgid "merge_update" +msgstr "merge_update" + +#: sql_help.c:4080 +msgid "merge_delete" +msgstr "merge_delete" + +#: sql_help.c:4082 +msgid "merge_insert" +msgstr "merge_insert" + +#: sql_help.c:4083 +msgid "and merge_insert is:" +msgstr "і merge_insert:" + +#: sql_help.c:4086 +msgid "and merge_update is:" +msgstr "і merge_update:" + +#: sql_help.c:4091 +msgid "and merge_delete is:" +msgstr "і merge_delete:" + +#: sql_help.c:4132 +msgid "payload" +msgstr "зміст" + +#: sql_help.c:4159 +msgid "old_role" +msgstr "стара_роль" + +#: sql_help.c:4160 +msgid "new_role" +msgstr "нова_роль" + +#: sql_help.c:4196 sql_help.c:4405 sql_help.c:4413 +msgid "savepoint_name" +msgstr "ім'я_точки_збереження" + +#: sql_help.c:4553 sql_help.c:4611 sql_help.c:4810 sql_help.c:4868 +#: sql_help.c:5048 sql_help.c:5106 +msgid "grouping_element" +msgstr "елемент_групування" + +#: sql_help.c:4555 sql_help.c:4658 sql_help.c:4812 sql_help.c:5050 +msgid "window_name" +msgstr "назва_вікна" + +#: sql_help.c:4556 sql_help.c:4659 sql_help.c:4813 sql_help.c:5051 +msgid "window_definition" +msgstr "визначення_вікна" + +#: sql_help.c:4557 sql_help.c:4571 sql_help.c:4615 sql_help.c:4660 +#: sql_help.c:4814 sql_help.c:4828 sql_help.c:4872 sql_help.c:5052 +#: sql_help.c:5066 sql_help.c:5110 +msgid "select" +msgstr "виберіть" + +#: sql_help.c:4564 sql_help.c:4821 sql_help.c:5059 +msgid "where from_item can be one of:" +msgstr "де джерело_даних може бути одним з:" + +#: sql_help.c:4567 sql_help.c:4573 sql_help.c:4576 sql_help.c:4580 +#: sql_help.c:4592 sql_help.c:4824 sql_help.c:4830 sql_help.c:4833 +#: sql_help.c:4837 sql_help.c:4849 sql_help.c:5062 sql_help.c:5068 +#: sql_help.c:5071 sql_help.c:5075 sql_help.c:5087 +msgid "column_alias" +msgstr "псевдонім_стовпця" + +#: sql_help.c:4568 sql_help.c:4825 sql_help.c:5063 +msgid "sampling_method" +msgstr "метод_вибірки" + +#: sql_help.c:4570 sql_help.c:4827 sql_help.c:5065 +msgid "seed" +msgstr "початкове_число" + +#: sql_help.c:4574 sql_help.c:4613 sql_help.c:4831 sql_help.c:4870 +#: sql_help.c:5069 sql_help.c:5108 +msgid "with_query_name" +msgstr "ім'я_запиту_WITH" + +#: sql_help.c:4584 sql_help.c:4587 sql_help.c:4590 sql_help.c:4841 +#: sql_help.c:4844 sql_help.c:4847 sql_help.c:5079 sql_help.c:5082 +#: sql_help.c:5085 +msgid "column_definition" +msgstr "визначення_стовпця" + +#: sql_help.c:4594 sql_help.c:4600 sql_help.c:4851 sql_help.c:4857 +#: sql_help.c:5089 sql_help.c:5095 +msgid "join_type" +msgstr "тип_поєднання" + +#: sql_help.c:4597 sql_help.c:4854 sql_help.c:5092 +msgid "join_column" +msgstr "стовпець_поєднання" + +#: sql_help.c:4598 sql_help.c:4855 sql_help.c:5093 +msgid "join_using_alias" +msgstr "join_using_alias" + +#: sql_help.c:4604 sql_help.c:4861 sql_help.c:5099 +msgid "and grouping_element can be one of:" +msgstr "і елемент_групування може бути одним з:" + +#: sql_help.c:4612 sql_help.c:4869 sql_help.c:5107 +msgid "and with_query is:" +msgstr "і запит_WITH:" + +#: sql_help.c:4616 sql_help.c:4873 sql_help.c:5111 +msgid "values" +msgstr "значення" + +#: sql_help.c:4617 sql_help.c:4874 sql_help.c:5112 +msgid "insert" +msgstr "вставка" + +#: sql_help.c:4618 sql_help.c:4875 sql_help.c:5113 +msgid "update" +msgstr "оновлення" + +#: sql_help.c:4619 sql_help.c:4876 sql_help.c:5114 +msgid "delete" +msgstr "видалення" + +#: sql_help.c:4621 sql_help.c:4878 sql_help.c:5116 +msgid "search_seq_col_name" +msgstr "search_seq_col_name" + +#: sql_help.c:4623 sql_help.c:4880 sql_help.c:5118 +msgid "cycle_mark_col_name" +msgstr "cycle_mark_col_name" + +#: sql_help.c:4624 sql_help.c:4881 sql_help.c:5119 +msgid "cycle_mark_value" +msgstr "cycle_mark_value" + +#: sql_help.c:4625 sql_help.c:4882 sql_help.c:5120 +msgid "cycle_mark_default" +msgstr "cycle_mark_default" + +#: sql_help.c:4626 sql_help.c:4883 sql_help.c:5121 +msgid "cycle_path_col_name" +msgstr "cycle_path_col_name" + +#: sql_help.c:4653 +msgid "new_table" +msgstr "нова_таблиця" + +#: sql_help.c:4724 +msgid "snapshot_id" +msgstr "код_знімку" + +#: sql_help.c:4984 +msgid "sort_expression" +msgstr "вираз_сортування" + +#: sql_help.c:5128 sql_help.c:6112 +msgid "abort the current transaction" +msgstr "перервати поточну транзакцію" + +#: sql_help.c:5134 +msgid "change the definition of an aggregate function" +msgstr "змінити визначення агрегатної функції" + +#: sql_help.c:5140 +msgid "change the definition of a collation" +msgstr "змінити визначення правила сортування" + +#: sql_help.c:5146 +msgid "change the definition of a conversion" +msgstr "змінити визначення перетворення" + +#: sql_help.c:5152 +msgid "change a database" +msgstr "змінити базу даних" + +#: sql_help.c:5158 +msgid "define default access privileges" +msgstr "визначити права доступу за замовчуванням" + +#: sql_help.c:5164 +msgid "change the definition of a domain" +msgstr "змінити визначення домену" + +#: sql_help.c:5170 +msgid "change the definition of an event trigger" +msgstr "змінити визначення тригеру події" + +#: sql_help.c:5176 +msgid "change the definition of an extension" +msgstr "змінити визначення розширення" + +#: sql_help.c:5182 +msgid "change the definition of a foreign-data wrapper" +msgstr "змінити визначення джерела сторонніх даних" + +#: sql_help.c:5188 +msgid "change the definition of a foreign table" +msgstr "змінити визначення сторонньої таблиці" + +#: sql_help.c:5194 +msgid "change the definition of a function" +msgstr "змінити визначення функції" + +#: sql_help.c:5200 +msgid "change role name or membership" +msgstr "змінити назву ролі або членства" + +#: sql_help.c:5206 +msgid "change the definition of an index" +msgstr "змінити визначення індексу" + +#: sql_help.c:5212 +msgid "change the definition of a procedural language" +msgstr "змінити визначення процедурної мови" + +#: sql_help.c:5218 +msgid "change the definition of a large object" +msgstr "змінити визначення великого об'єкту" + +#: sql_help.c:5224 +msgid "change the definition of a materialized view" +msgstr "змінити визначення матеріалізованого подання" + +#: sql_help.c:5230 +msgid "change the definition of an operator" +msgstr "змінити визначення оператора" + +#: sql_help.c:5236 +msgid "change the definition of an operator class" +msgstr "змінити визначення класа операторів" + +#: sql_help.c:5242 +msgid "change the definition of an operator family" +msgstr "змінити визначення сімейства операторів" + +#: sql_help.c:5248 +msgid "change the definition of a row-level security policy" +msgstr "змінити визначення політики безпеки на рівні рядків" + +#: sql_help.c:5254 +msgid "change the definition of a procedure" +msgstr "змінити визначення процедури" + +#: sql_help.c:5260 +msgid "change the definition of a publication" +msgstr "змінити визначення публікації" + +#: sql_help.c:5266 sql_help.c:5368 +msgid "change a database role" +msgstr "змінити роль бази даних" + +#: sql_help.c:5272 +msgid "change the definition of a routine" +msgstr "змінити визначення підпрограми" + +#: sql_help.c:5278 +msgid "change the definition of a rule" +msgstr "змінити визначення правила" + +#: sql_help.c:5284 +msgid "change the definition of a schema" +msgstr "змінити визначення схеми" + +#: sql_help.c:5290 +msgid "change the definition of a sequence generator" +msgstr "змінити визначення генератору послідовності" + +#: sql_help.c:5296 +msgid "change the definition of a foreign server" +msgstr "змінити визначення стороннього серверу" + +#: sql_help.c:5302 +msgid "change the definition of an extended statistics object" +msgstr "змінити визначення об'єкту розширеної статистики" + +#: sql_help.c:5308 +msgid "change the definition of a subscription" +msgstr "змінити визначення підписки" + +#: sql_help.c:5314 +msgid "change a server configuration parameter" +msgstr "змінити параметр конфігурації сервера" + +#: sql_help.c:5320 +msgid "change the definition of a table" +msgstr "змінити визначення таблиці" + +#: sql_help.c:5326 +msgid "change the definition of a tablespace" +msgstr "змінити визначення табличного простору" + +#: sql_help.c:5332 +msgid "change the definition of a text search configuration" +msgstr "змінити визначення конфігурації текстового пошуку" + +#: sql_help.c:5338 +msgid "change the definition of a text search dictionary" +msgstr "змінити визначення словника текстового пошуку" + +#: sql_help.c:5344 +msgid "change the definition of a text search parser" +msgstr "змінити визначення парсера текстового пошуку" + +#: sql_help.c:5350 +msgid "change the definition of a text search template" +msgstr "змінити визначення шаблона текстового пошуку" + +#: sql_help.c:5356 +msgid "change the definition of a trigger" +msgstr "змінити визначення тригеру" + +#: sql_help.c:5362 +msgid "change the definition of a type" +msgstr "змінити визначення типу" + +#: sql_help.c:5374 +msgid "change the definition of a user mapping" +msgstr "змінити визначення зіставлень користувачів" + +#: sql_help.c:5380 +msgid "change the definition of a view" +msgstr "змінити визначення подання" + +#: sql_help.c:5386 +msgid "collect statistics about a database" +msgstr "зібрати статистику про базу даних" + +#: sql_help.c:5392 sql_help.c:6190 +msgid "start a transaction block" +msgstr "розпочати транзакцію" + +#: sql_help.c:5398 +msgid "invoke a procedure" +msgstr "викликати процедуру" + +#: sql_help.c:5404 +msgid "force a write-ahead log checkpoint" +msgstr "провести контрольну точку в журналі попереднього запису" + +#: sql_help.c:5410 +msgid "close a cursor" +msgstr "закрити курсор" + +#: sql_help.c:5416 +msgid "cluster a table according to an index" +msgstr "перегрупувати таблицю за індексом" + +#: sql_help.c:5422 +msgid "define or change the comment of an object" +msgstr "задати або змінити коментар об'єкта" + +#: sql_help.c:5428 sql_help.c:5986 +msgid "commit the current transaction" +msgstr "затвердити поточну транзакцію" + +#: sql_help.c:5434 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "затвердити транзакцію, раніше підготовлену до двохфазного затвердження" + +#: sql_help.c:5440 +msgid "copy data between a file and a table" +msgstr "копіювати дані між файлом та таблицею" + +#: sql_help.c:5446 +msgid "define a new access method" +msgstr "визначити новий метод доступу" + +#: sql_help.c:5452 +msgid "define a new aggregate function" +msgstr "визначити нову агрегатну функцію" + +#: sql_help.c:5458 +msgid "define a new cast" +msgstr "визначити приведення типів" + +#: sql_help.c:5464 +msgid "define a new collation" +msgstr "визначити нове правило сортування" + +#: sql_help.c:5470 +msgid "define a new encoding conversion" +msgstr "визначити нове перетворення кодування" + +#: sql_help.c:5476 +msgid "create a new database" +msgstr "створити нову базу даних" + +#: sql_help.c:5482 +msgid "define a new domain" +msgstr "визначити новий домен" + +#: sql_help.c:5488 +msgid "define a new event trigger" +msgstr "визначити новий тригер події" + +#: sql_help.c:5494 +msgid "install an extension" +msgstr "встановити розширення" + +#: sql_help.c:5500 +msgid "define a new foreign-data wrapper" +msgstr "визначити нове джерело сторонніх даних" + +#: sql_help.c:5506 +msgid "define a new foreign table" +msgstr "визначити нову сторонню таблицю" + +#: sql_help.c:5512 +msgid "define a new function" +msgstr "визначити нову функцію" + +#: sql_help.c:5518 sql_help.c:5578 sql_help.c:5680 +msgid "define a new database role" +msgstr "визначити нову роль бази даних" + +#: sql_help.c:5524 +msgid "define a new index" +msgstr "визначити новий індекс" + +#: sql_help.c:5530 +msgid "define a new procedural language" +msgstr "визначити нову процедурну мову" + +#: sql_help.c:5536 +msgid "define a new materialized view" +msgstr "визначити нове матеріалізоване подання" + +#: sql_help.c:5542 +msgid "define a new operator" +msgstr "визначити новий оператор" + +#: sql_help.c:5548 +msgid "define a new operator class" +msgstr "визначити новий клас оператора" + +#: sql_help.c:5554 +msgid "define a new operator family" +msgstr "визначити нове сімейство операторів" + +#: sql_help.c:5560 +msgid "define a new row-level security policy for a table" +msgstr "визначити нову політику безпеки на рівні рядків для таблиці" + +#: sql_help.c:5566 +msgid "define a new procedure" +msgstr "визначити нову процедуру" + +#: sql_help.c:5572 +msgid "define a new publication" +msgstr "визначити нову публікацію" + +#: sql_help.c:5584 +msgid "define a new rewrite rule" +msgstr "визначити нове правило перезапису" + +#: sql_help.c:5590 +msgid "define a new schema" +msgstr "визначити нову схему" + +#: sql_help.c:5596 +msgid "define a new sequence generator" +msgstr "визначити новий генератор послідовностей" + +#: sql_help.c:5602 +msgid "define a new foreign server" +msgstr "визначити новий сторонній сервер" + +#: sql_help.c:5608 +msgid "define extended statistics" +msgstr "визначити розширену статистику" + +#: sql_help.c:5614 +msgid "define a new subscription" +msgstr "визначити нову підписку" + +#: sql_help.c:5620 +msgid "define a new table" +msgstr "визначити нову таблицю" + +#: sql_help.c:5626 sql_help.c:6148 +msgid "define a new table from the results of a query" +msgstr "визначити нову таблицю з результатів запиту" + +#: sql_help.c:5632 +msgid "define a new tablespace" +msgstr "визначити новий табличний простір" + +#: sql_help.c:5638 +msgid "define a new text search configuration" +msgstr "визначити нову конфігурацію текстового пошуку" + +#: sql_help.c:5644 +msgid "define a new text search dictionary" +msgstr "визначити новий словник текстового пошуку" + +#: sql_help.c:5650 +msgid "define a new text search parser" +msgstr "визначити новий аналізатор текстового пошуку" + +#: sql_help.c:5656 +msgid "define a new text search template" +msgstr "визначити новий шаблон текстового пошуку" + +#: sql_help.c:5662 +msgid "define a new transform" +msgstr "визначити нове перетворення" + +#: sql_help.c:5668 +msgid "define a new trigger" +msgstr "визначити новий тригер" + +#: sql_help.c:5674 +msgid "define a new data type" +msgstr "визначити новий тип даних" + +#: sql_help.c:5686 +msgid "define a new mapping of a user to a foreign server" +msgstr "визначити нове зіставлення користувача для стороннього сервера" + +#: sql_help.c:5692 +msgid "define a new view" +msgstr "визначити нове подання" + +#: sql_help.c:5698 +msgid "deallocate a prepared statement" +msgstr "звільнити підготовлену команду" + +#: sql_help.c:5704 +msgid "define a cursor" +msgstr "визначити курсор" + +#: sql_help.c:5710 +msgid "delete rows of a table" +msgstr "видалити рядки таблиці" + +#: sql_help.c:5716 +msgid "discard session state" +msgstr "очистити стан сесії" + +#: sql_help.c:5722 +msgid "execute an anonymous code block" +msgstr "виконати анонімний блок коду" + +#: sql_help.c:5728 +msgid "remove an access method" +msgstr "видалити метод доступу" + +#: sql_help.c:5734 +msgid "remove an aggregate function" +msgstr "видалити агрегатну функцію" + +#: sql_help.c:5740 +msgid "remove a cast" +msgstr "видалити приведення типів" + +#: sql_help.c:5746 +msgid "remove a collation" +msgstr "видалити правило сортування" + +#: sql_help.c:5752 +msgid "remove a conversion" +msgstr "видалити перетворення" + +#: sql_help.c:5758 +msgid "remove a database" +msgstr "видалити базу даних" + +#: sql_help.c:5764 +msgid "remove a domain" +msgstr "видалити домен" + +#: sql_help.c:5770 +msgid "remove an event trigger" +msgstr "видалити тригер події" + +#: sql_help.c:5776 +msgid "remove an extension" +msgstr "видалити розширення" + +#: sql_help.c:5782 +msgid "remove a foreign-data wrapper" +msgstr "видалити джерело сторонніх даних" + +#: sql_help.c:5788 +msgid "remove a foreign table" +msgstr "видалити сторонню таблицю" + +#: sql_help.c:5794 +msgid "remove a function" +msgstr "видалити функцію" + +#: sql_help.c:5800 sql_help.c:5866 sql_help.c:5968 +msgid "remove a database role" +msgstr "видалити роль бази даних" + +#: sql_help.c:5806 +msgid "remove an index" +msgstr "видалити індекс" + +#: sql_help.c:5812 +msgid "remove a procedural language" +msgstr "видалити процедурну мову" + +#: sql_help.c:5818 +msgid "remove a materialized view" +msgstr "видалити матеріалізоване подання" + +#: sql_help.c:5824 +msgid "remove an operator" +msgstr "видалити оператор" + +#: sql_help.c:5830 +msgid "remove an operator class" +msgstr "видалити клас операторів" + +#: sql_help.c:5836 +msgid "remove an operator family" +msgstr "видалити сімейство операторів" + +#: sql_help.c:5842 +msgid "remove database objects owned by a database role" +msgstr "видалити об'єкти бази даних, що належать ролі" + +#: sql_help.c:5848 +msgid "remove a row-level security policy from a table" +msgstr "видалити політику безпеки на рівні рядків з таблиці" + +#: sql_help.c:5854 +msgid "remove a procedure" +msgstr "видалити процедуру" + +#: sql_help.c:5860 +msgid "remove a publication" +msgstr "видалити публікацію" + +#: sql_help.c:5872 +msgid "remove a routine" +msgstr "видалити підпрограму" + +#: sql_help.c:5878 +msgid "remove a rewrite rule" +msgstr "видалити правило перезапису" + +#: sql_help.c:5884 +msgid "remove a schema" +msgstr "видалити схему" + +#: sql_help.c:5890 +msgid "remove a sequence" +msgstr "видалити послідовність" + +#: sql_help.c:5896 +msgid "remove a foreign server descriptor" +msgstr "видалити опис стороннього серверу" + +#: sql_help.c:5902 +msgid "remove extended statistics" +msgstr "видалити розширену статистику" + +#: sql_help.c:5908 +msgid "remove a subscription" +msgstr "видалити підписку" + +#: sql_help.c:5914 +msgid "remove a table" +msgstr "видалити таблицю" + +#: sql_help.c:5920 +msgid "remove a tablespace" +msgstr "видалити табличний простір" + +#: sql_help.c:5926 +msgid "remove a text search configuration" +msgstr "видалити конфігурацію тектового пошуку" + +#: sql_help.c:5932 +msgid "remove a text search dictionary" +msgstr "видалити словник тектового пошуку" + +#: sql_help.c:5938 +msgid "remove a text search parser" +msgstr "видалити парсер тектового пошуку" + +#: sql_help.c:5944 +msgid "remove a text search template" +msgstr "видалити шаблон тектового пошуку" + +#: sql_help.c:5950 +msgid "remove a transform" +msgstr "видалити перетворення" + +#: sql_help.c:5956 +msgid "remove a trigger" +msgstr "видалити тригер" + +#: sql_help.c:5962 +msgid "remove a data type" +msgstr "видалити тип даних" + +#: sql_help.c:5974 +msgid "remove a user mapping for a foreign server" +msgstr "видалити зіставлення користувача для стороннього серверу" + +#: sql_help.c:5980 +msgid "remove a view" +msgstr "видалити подання" + +#: sql_help.c:5992 +msgid "execute a prepared statement" +msgstr "виконати підготовлену команду" + +#: sql_help.c:5998 +msgid "show the execution plan of a statement" +msgstr "показати план виконання команди" + +#: sql_help.c:6004 +msgid "retrieve rows from a query using a cursor" +msgstr "отримати рядки запиту з курсору" + +#: sql_help.c:6010 +msgid "define access privileges" +msgstr "визначити права доступу" + +#: sql_help.c:6016 +msgid "import table definitions from a foreign server" +msgstr "імпортувати визначення таблиць зі стороннього серверу" + +#: sql_help.c:6022 +msgid "create new rows in a table" +msgstr "створити нові рядки в таблиці" + +#: sql_help.c:6028 +msgid "listen for a notification" +msgstr "очікувати на повідомлення" + +#: sql_help.c:6034 +msgid "load a shared library file" +msgstr "завантажити файл спільної бібліотеки" + +#: sql_help.c:6040 +msgid "lock a table" +msgstr "заблокувати таблицю" + +#: sql_help.c:6046 +msgid "conditionally insert, update, or delete rows of a table" +msgstr "умовно вставити, оновити або видалити рядки таблиці" + +#: sql_help.c:6052 +msgid "position a cursor" +msgstr "розташувати курсор" + +#: sql_help.c:6058 +msgid "generate a notification" +msgstr "згенерувати повідомлення" + +#: sql_help.c:6064 +msgid "prepare a statement for execution" +msgstr "підготувати команду для виконання" + +#: sql_help.c:6070 +msgid "prepare the current transaction for two-phase commit" +msgstr "підготувати поточну транзакцію для двохфазного затвердження" + +#: sql_help.c:6076 +msgid "change the ownership of database objects owned by a database role" +msgstr "змінити власника об'єктів БД, що належать заданій ролі" + +#: sql_help.c:6082 +msgid "replace the contents of a materialized view" +msgstr "замінити вміст матеріалізованого подання" + +#: sql_help.c:6088 +msgid "rebuild indexes" +msgstr "перебудувати індекси" + +#: sql_help.c:6094 +msgid "destroy a previously defined savepoint" +msgstr "видалити раніше визначену точку збереження" + +#: sql_help.c:6100 +msgid "restore the value of a run-time parameter to the default value" +msgstr "відновити початкове значення параметру виконання" + +#: sql_help.c:6106 +msgid "remove access privileges" +msgstr "видалити права доступу" + +#: sql_help.c:6118 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "скасувати транзакцію, раніше підготовлену до двохфазного затвердження" + +#: sql_help.c:6124 +msgid "roll back to a savepoint" +msgstr "відкотитися до точки збереження" + +#: sql_help.c:6130 +msgid "define a new savepoint within the current transaction" +msgstr "визначити нову точку збереження в рамках поточної транзакції" + +#: sql_help.c:6136 +msgid "define or change a security label applied to an object" +msgstr "визначити або змінити мітку безпеки, застосовану до об'єкта" + +#: sql_help.c:6142 sql_help.c:6196 sql_help.c:6232 +msgid "retrieve rows from a table or view" +msgstr "отримати рядки з таблиці або подання" + +#: sql_help.c:6154 +msgid "change a run-time parameter" +msgstr "змінити параметр виконання" + +#: sql_help.c:6160 +msgid "set constraint check timing for the current transaction" +msgstr "встановити час перевірки обмеження для поточної транзакції" + +#: sql_help.c:6166 +msgid "set the current user identifier of the current session" +msgstr "встановити ідентифікатор поточного користувача в поточній сесії" + +#: sql_help.c:6172 +msgid "set the session user identifier and the current user identifier of the current session" +msgstr "встановити ідентифікатор користувача сесії й ідентифікатор поточного користувача в поточній сесії" + +#: sql_help.c:6178 +msgid "set the characteristics of the current transaction" +msgstr "встановити характеристики поточної транзакції" + +#: sql_help.c:6184 +msgid "show the value of a run-time parameter" +msgstr "показати значення параметра виконання" + +#: sql_help.c:6202 +msgid "empty a table or set of tables" +msgstr "очистити таблицю або декілька таблиць" + +#: sql_help.c:6208 +msgid "stop listening for a notification" +msgstr "припинити очікування повідомлень" + +#: sql_help.c:6214 +msgid "update rows of a table" +msgstr "змінити рядки таблиці" + +#: sql_help.c:6220 +msgid "garbage-collect and optionally analyze a database" +msgstr "виконати збір сміття і проаналізувати базу даних" + +#: sql_help.c:6226 +msgid "compute a set of rows" +msgstr "отримати набір рядків" + +#: startup.c:220 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1 можна використовувати лише в неінтерактивному режимі" + +#: startup.c:343 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "не вдалося відкрити файл журналу \"%s\": %m" + +#: startup.c:460 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Введіть \"help\", щоб отримати допомогу.\n" +"\n" + +#: startup.c:612 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "не вдалося встановити параметр друку \"%s\"" + +#: startup.c:719 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Спробуйте \"%s --help\" для додаткової інформації." + +#: startup.c:735 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "зайвий аргумент \"%s\" проігнорований" + +#: startup.c:783 +#, c-format +msgid "could not find own program executable" +msgstr "не вдалося знайти ехе файл власної програми" + +#: tab-complete.c:5955 +#, 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." diff --git a/src/bin/psql/po/zh_CN.po b/src/bin/psql/po/zh_CN.po new file mode 100644 index 0000000..131e906 --- /dev/null +++ b/src/bin/psql/po/zh_CN.po @@ -0,0 +1,6476 @@ +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL) 14\n" +"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n" +"POT-Creation-Date: 2021-08-14 05:45+0000\n" +"PO-Revision-Date: 2021-08-16 16:00+0800\n" +"Last-Translator: Jie Zhang \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\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" +"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:259 +#, c-format +msgid "fatal: " +msgstr "致命的:" + +#: ../../../src/common/logging.c:266 +#, c-format +msgid "error: " +msgstr "错误: " + +#: ../../../src/common/logging.c:273 +#, c-format +msgid "warning: " +msgstr "警告: " + +#: ../../common/exec.c:136 ../../common/exec.c:253 ../../common/exec.c:299 +#, c-format +msgid "could not identify current directory: %m" +msgstr "无法确认当前目录: %m" + +#: ../../common/exec.c:155 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "无效的二进制码 \"%s\"" + +#: ../../common/exec.c:205 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "无法读取二进制码 \"%s\"" + +#: ../../common/exec.c:213 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "未能找到一个 \"%s\" 来执行" + +#: ../../common/exec.c:269 ../../common/exec.c:308 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "无法跳转到目录 \"%s\" 中: %m" + +#: ../../common/exec.c:286 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "无法读取符号链接 \"%s\": %m" + +#: ../../common/exec.c:409 +msgid "%s() failed: %m" +msgstr "%s()失败: %m" + +#: ../../common/exec.c:522 ../../common/exec.c:567 ../../common/exec.c:659 +#: command.c:1315 command.c:3246 command.c:3295 command.c:3412 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:565 +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/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: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:3401 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "无效的输出格式 (内部错误): %d" + +#: ../../fe_utils/psqlscan.l:697 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"" +msgstr "跳过变量 \"%s\"的递归扩展" + +#: command.c:230 +#, c-format +msgid "invalid command \\%s" +msgstr "无效的命令 \\%s" + +#: command.c:232 +#, c-format +msgid "Try \\? for help." +msgstr "使用\\?获取帮助." + +#: command.c:250 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored" +msgstr "\\%s:忽略多余的参数 \"%s\"" + +#: command.c:302 +#, c-format +msgid "\\%s command ignored; use \\endif or Ctrl-C to exit current \\if block" +msgstr "忽略\\%s命令;使用\\endif或Ctrl-C退出当前\\if块" + +#: command.c:563 +#, c-format +msgid "could not get home directory for user ID %ld: %s" +msgstr "无法获取用户ID %ld: %s对应的home 目录" + +#: command.c:581 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %m" +msgstr "\\%s: 无法切换目录至 \"%s\": %m" + +#: command.c:606 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "你目前没有连接到数据库.\n" + +#: command.c:616 +#, 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:619 +#, 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:625 +#, 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:628 +#, 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:1012 command.c:1121 command.c:2602 +#, c-format +msgid "no query buffer" +msgstr "没有查询缓存区" + +#: command.c:1045 command.c:5304 +#, c-format +msgid "invalid line number: %s" +msgstr "行号无效: %s" + +#: command.c:1112 +#, c-format +msgid "The server (version %s) does not support editing function source." +msgstr "服务器(版本%s)不支持编辑函数源码." + +#: command.c:1115 +#, c-format +msgid "The server (version %s) does not support editing view definitions." +msgstr "服务器(版本%s)不支持编辑视图定义." + +#: command.c:1197 +msgid "No changes" +msgstr "没有发生更改" + +#: command.c:1276 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found" +msgstr "%s:无效的编码名称或找不到转换程序" + +#: command.c:1311 command.c:2052 command.c:3242 command.c:3434 command.c:5406 +#: common.c:174 common.c:223 common.c:392 common.c:1248 common.c:1276 +#: common.c:1385 common.c:1492 common.c:1530 copy.c:488 copy.c:709 help.c:62 +#: large_obj.c:157 large_obj.c:192 large_obj.c:254 startup.c:298 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1318 +msgid "There is no previous error." +msgstr "没有之前的错误。" + +#: command.c:1431 +msgid "\\%s: missing right parenthesis" +msgstr "\\%s:缺少一个右括弧" + +#: command.c:1608 command.c:1913 command.c:1927 command.c:1944 command.c:2106 +#: command.c:2342 command.c:2569 command.c:2609 +#, c-format +msgid "\\%s: missing required argument" +msgstr "\\%s:缺少所需参数" + +#: command.c:1739 +#, c-format +msgid "\\elif: cannot occur after \\else" +msgstr "\\elif:不能出现在\\else之后" + +#: command.c:1744 +#, c-format +msgid "\\elif: no matching \\if" +msgstr "\\elif: 不匹配\\if" + +#: command.c:1808 +#, c-format +msgid "\\else: cannot occur after \\else" +msgstr "\\else: 不能出现在 \\else" + +#: command.c:1813 +#, c-format +msgid "\\else: no matching \\if" +msgstr "\\else: 不匹配\\if" + +#: command.c:1853 +#, c-format +msgid "\\endif: no matching \\if" +msgstr "\\endif:不匹配\\if" + +#: command.c:2008 +msgid "Query buffer is empty." +msgstr "查询缓存区是空的." + +#: command.c:2030 +msgid "Enter new password: " +msgstr "输入新的密码:" + +#: command.c:2031 +msgid "Enter it again: " +msgstr "再输入一遍:" + +#: command.c:2035 +#, c-format +msgid "Passwords didn't match." +msgstr "口令不匹配." + +#: command.c:2135 +#, c-format +msgid "\\%s: could not read value for variable" +msgstr "\\%s:无法读取变量的值" + +#: command.c:2238 +msgid "Query buffer reset (cleared)." +msgstr "查询缓存区重置(已清空)." + +#: command.c:2260 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "写入历史记录到文件 \"%s\".\n" + +#: command.c:2347 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"" +msgstr "\\%s: 环境变量不能包含 \"=\"" + +#: command.c:2399 +#, c-format +msgid "The server (version %s) does not support showing function source." +msgstr "服务器(版本%s)不支持显示函数源码." + +#: command.c:2402 +#, c-format +msgid "The server (version %s) does not support showing view definitions." +msgstr "服务器(版本%s)不支持显示视图定义." + +#: command.c:2409 +#, c-format +msgid "function name is required" +msgstr "需要函数名" + +#: command.c:2411 +#, c-format +msgid "view name is required" +msgstr "需要视图名" + +#: command.c:2541 +msgid "Timing is on." +msgstr "启用计时功能." + +#: command.c:2543 +msgid "Timing is off." +msgstr "停止计时功能." + +#: command.c:2628 command.c:2656 command.c:3873 command.c:3876 command.c:3879 +#: command.c:3885 command.c:3887 command.c:3913 command.c:3923 command.c:3935 +#: command.c:3949 command.c:3976 command.c:4034 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:3047 startup.c:237 startup.c:287 +msgid "Password: " +msgstr "口令: " + +#: command.c:3052 startup.c:284 +#, c-format +msgid "Password for user %s: " +msgstr "用户 %s 的口令:" + +#: command.c:3104 +#, c-format +msgid "Do not give user, host, or port separately when using a connection string" +msgstr "使用连接字符串时,不要单独提供用户、主机或端口" + +#: command.c:3139 +#, c-format +msgid "No database connection exists to re-use parameters from" +msgstr "不存在可从中重复使用参数的数据库连接" + +#: command.c:3440 +#, c-format +msgid "Previous connection kept" +msgstr "保留上一次连接" + +#: command.c:3446 +#, c-format +msgid "\\connect: %s" +msgstr "\\连接:%s" + +#: command.c:3502 +#, 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:3505 +#, 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:3511 +#, 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:3514 +#, 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:3519 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "您现在已经连接到数据库 \"%s\",用户 \"%s\".\n" + +#: command.c:3559 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, 服务器 %s)\n" + +#: command.c:3567 +#, 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:3606 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" +msgstr "SSL 连接(协议:%s,密码:%s,密钥位:%s,压缩:%s)\n" + +#: command.c:3607 command.c:3608 command.c:3609 +msgid "unknown" +msgstr "未知" + +#: command.c:3610 help.c:45 +msgid "off" +msgstr "关闭" + +#: command.c:3610 help.c:45 +msgid "on" +msgstr "开启" + +#: command.c:3624 +msgid "GSSAPI-encrypted connection\n" +msgstr "GSSAPI加密连接\n" + +#: command.c:3644 +#, 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:3749 +#, c-format +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number" +msgstr "必须设置环境变量 PSQL_EDITOR_LINENUMBER_ARG,用于指定行号" + +#: command.c:3778 +#, c-format +msgid "could not start editor \"%s\"" +msgstr "无法启动编辑器 \"%s\"" + +#: command.c:3780 +#, c-format +msgid "could not start /bin/sh" +msgstr "无法启动 /bin/sh" + +#: command.c:3830 +#, c-format +msgid "could not locate temporary directory: %s" +msgstr "找不到临时目录:%s" + +#: command.c:3857 +#, c-format +msgid "could not open temporary file \"%s\": %m" +msgstr "无法打开临时文件 \"%s\": %m" + +#: command.c:4193 +#, c-format +msgid "\\pset: ambiguous abbreviation \"%s\" matches both \"%s\" and \"%s\"" +msgstr "\\pset:模糊的缩写\"%s\"同时匹配\"%s\"和\"%s\"" + +#: command.c:4213 +#, 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:4232 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode" +msgstr "\\pset: 所允许使用的文本风格是ascii, old-ascii, unicode" + +#: command.c:4247 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double" +msgstr "\\pset:允许的 Unicode 边界线型是 single 和 double" + +#: command.c:4262 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double" +msgstr "\\pset:允许的 Unicode 列线型是 single 和 double" + +#: command.c:4277 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double" +msgstr "\\pset:允许的 Unicode 页眉线型是 single 和 double" + +#: command.c:4320 +#, c-format +msgid "\\pset: csv_fieldsep must be a single one-byte character" +msgstr "\\pset: csv_fieldsep必须是单字节字符" + +#: command.c:4325 +#, c-format +msgid "\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return" +msgstr "\\pset: csv_fieldsep不能是双引号、换行符或回车符" + +#: command.c:4462 command.c:4650 +#, c-format +msgid "\\pset: unknown option: %s" +msgstr "\\pset: 不明选项: %s" + +#: command.c:4482 +#, c-format +msgid "Border style is %d.\n" +msgstr "边缘风格是 %d.\n" + +#: command.c:4488 +#, c-format +msgid "Target width is unset.\n" +msgstr "目标宽度未设置.\n" + +#: command.c:4490 +#, c-format +msgid "Target width is %d.\n" +msgstr "目标宽度为 %d.\n" + +#: command.c:4497 +#, c-format +msgid "Expanded display is on.\n" +msgstr "扩展显示已打开.\n" + +#: command.c:4499 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "扩展显示已自动打开.\n" + +#: command.c:4501 +#, c-format +msgid "Expanded display is off.\n" +msgstr "扩展显示已关闭.\n" + +#: command.c:4507 +#, c-format +msgid "Field separator for CSV is \"%s\".\n" +msgstr "CSV的字段分隔符是\"%s\".\n" + +#: command.c:4515 command.c:4523 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "栏位分隔符号是0字节\n" + +#: command.c:4517 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "栏位分隔符号是 \"%s\".\n" + +#: command.c:4530 +#, c-format +msgid "Default footer is on.\n" +msgstr "打开默认步进器.\n" + +#: command.c:4532 +#, c-format +msgid "Default footer is off.\n" +msgstr "关闭默认步进器.\n" + +#: command.c:4538 +#, c-format +msgid "Output format is %s.\n" +msgstr "输出格式是 %s.\n" + +#: command.c:4544 +#, c-format +msgid "Line style is %s.\n" +msgstr "文本的风格是%s. \n" + +#: command.c:4551 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr " \"%s\" 是空值显示.\n" + +#: command.c:4559 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "启动语言环境调整后的数值输出.\n" + +#: command.c:4561 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "关闭语言环境调整后的数值输出.\n" + +#: command.c:4568 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "显示大量数据时使用分页器.\n" + +#: command.c:4570 +#, c-format +msgid "Pager is always used.\n" +msgstr "总是使用分页器.\n" + +#: command.c:4572 +#, c-format +msgid "Pager usage is off.\n" +msgstr "不使用分页器.\n" + +#: command.c:4578 +#, 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:4588 command.c:4598 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "记录分隔符号是 0字节.\n" + +#: command.c:4590 +#, c-format +msgid "Record separator is .\n" +msgstr "记录分隔符号是 .\n" + +#: command.c:4592 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "记录分隔符号是 \"%s\".\n" + +#: command.c:4605 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "表属性是 \"%s\".\n" + +#: command.c:4608 +#, c-format +msgid "Table attributes unset.\n" +msgstr "未设置数据表属性.\n" + +#: command.c:4615 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "标题是 \"%s\".\n" + +#: command.c:4617 +#, c-format +msgid "Title is unset.\n" +msgstr "无标题.\n" + +#: command.c:4624 +#, c-format +msgid "Tuples only is on.\n" +msgstr "开启只显示元组.\n" + +#: command.c:4626 +#, c-format +msgid "Tuples only is off.\n" +msgstr "关闭只显示元组.\n" + +#: command.c:4632 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Unicode 边界线型是 \"%s\".\n" + +#: command.c:4638 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Unicode 列线型是 \"%s\".\n" + +#: command.c:4644 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Unicode 页眉线型是 \"%s\".\n" + +#: command.c:4877 +#, c-format +msgid "\\!: failed" +msgstr "\\!:失败" + +#: command.c:4902 common.c:652 +#, c-format +msgid "\\watch cannot be used with an empty query" +msgstr "\\watch命令不能用于空查询" + +#: command.c:4943 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (每 %gs)\n" + +#: command.c:4946 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (每 %gs)\n" + +#: command.c:5000 command.c:5007 common.c:552 common.c:559 common.c:1231 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* 查询 **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:5199 +#, c-format +msgid "\"%s.%s\" is not a view" +msgstr "\"%s.%s\"不是一个视图" + +#: command.c:5215 +#, 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 "shell命令参数包含换行符或回车符: \"%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:330 +#, c-format +msgid "Succeeded.\n" +msgstr "完成。\n" + +#: common.c:382 common.c:949 common.c:1166 +#, c-format +msgid "unexpected PQresultStatus: %d" +msgstr "意外的 PQresultStatus: %d" + +#: common.c:491 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "时间:%.3f ms\n" + +#: common.c:506 +#, c-format +msgid "Time: %.3f ms (%02d:%06.3f)\n" +msgstr "时间:%.3f ms (%02d:%06.3f)\n" + +#: common.c:515 +#, c-format +msgid "Time: %.3f ms (%02d:%02d:%06.3f)\n" +msgstr "时间: %.3f ms (%02d:%02d:%06.3f)\n" + +#: common.c:522 +#, 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:546 common.c:604 common.c:1202 +#, c-format +msgid "You are currently not connected to a database." +msgstr "你目前没有连接到数据库." + +#: common.c:659 +#, c-format +msgid "\\watch cannot be used with COPY" +msgstr "\\watch不能用于COPY命令中" + +#: common.c:664 +#, c-format +msgid "unexpected result status for \\watch" +msgstr "\\Watch出现意外的结果状态" + +#: common.c:694 +#, 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:697 +#, c-format +msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "收到来自服务器 \"%s\" 进程 PID %d 非同步通知。\n" + +#: common.c:730 common.c:747 +msgid "could not print result table: %m" +msgstr "无法打印结果表: %m" + +#: common.c:768 +#, c-format +msgid "no rows returned for \\gset" +msgstr "\\gset没有记录行返回" + +#: common.c:773 +#, c-format +msgid "more than one row returned for \\gset" +msgstr "\\gset返回超过1个记录行" + +#: common.c:791 +msgid "attempt to \\gset into specially treated variable \"%s\" ignored" +msgstr "试图\\gset为经过特殊处理的变量\"%s\"已忽略" + +#: common.c:1211 +#, 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:1266 +#, c-format +msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK." +msgstr "服务器(版本 %s)不支持保存点(Savepoint)ON_ERROR_ROLLBACK." + +#: common.c:1329 +#, c-format +msgid "STATEMENT: %s" +msgstr "语句: %s" + +#: common.c:1373 +#, c-format +msgid "unexpected transaction status (%d)" +msgstr "意外的事务状态值 (%d)" + +#: common.c:1514 describe.c:2179 +msgid "Column" +msgstr "栏位" + +#: common.c:1515 describe.c:178 describe.c:396 describe.c:414 describe.c:459 +#: describe.c:476 describe.c:1128 describe.c:1292 describe.c:1878 +#: describe.c:1902 describe.c:2180 describe.c:4048 describe.c:4271 +#: describe.c:4496 describe.c:5794 +msgid "Type" +msgstr "类型" + +#: common.c:1564 +#, 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:671 +msgid "aborted because of read failure" +msgstr "因读取失败已被中止" + +#: copy.c:705 +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:76 describe.c:376 describe.c:728 describe.c:924 describe.c:1120 +#: describe.c:1281 describe.c:1353 describe.c:4036 describe.c:4258 +#: describe.c:4494 describe.c:4585 describe.c:4731 describe.c:4944 +#: describe.c:5104 describe.c:5345 describe.c:5420 describe.c:5431 +#: describe.c:5493 describe.c:5918 describe.c:6001 +msgid "Schema" +msgstr "架构模式" + +#: describe.c:77 describe.c:175 describe.c:243 describe.c:251 describe.c:377 +#: describe.c:729 describe.c:925 describe.c:1038 describe.c:1121 +#: describe.c:1354 describe.c:4037 describe.c:4259 describe.c:4417 +#: describe.c:4495 describe.c:4586 describe.c:4665 describe.c:4732 +#: describe.c:4945 describe.c:5029 describe.c:5105 describe.c:5346 +#: describe.c:5421 describe.c:5432 describe.c:5494 describe.c:5691 +#: describe.c:5775 describe.c:5999 describe.c:6171 describe.c:6411 +msgid "Name" +msgstr "名称" + +#: describe.c:78 describe.c:389 describe.c:407 describe.c:453 describe.c:470 +msgid "Result data type" +msgstr "结果数据类型" + +#: describe.c:86 describe.c:99 describe.c:103 describe.c:390 describe.c:408 +#: describe.c:454 describe.c:471 +msgid "Argument data types" +msgstr "参数数据类型" + +#: describe.c:111 describe.c:118 describe.c:186 describe.c:274 describe.c:523 +#: describe.c:777 describe.c:940 describe.c:1063 describe.c:1356 +#: describe.c:2200 describe.c:3823 describe.c:4108 describe.c:4305 +#: describe.c:4448 describe.c:4522 describe.c:4595 describe.c:4678 +#: describe.c:4853 describe.c:4972 describe.c:5038 describe.c:5106 +#: describe.c:5247 describe.c:5289 describe.c:5362 describe.c:5424 +#: describe.c:5433 describe.c:5495 describe.c:5717 describe.c:5797 +#: describe.c:5932 describe.c:6002 large_obj.c:290 large_obj.c:300 +msgid "Description" +msgstr "描述" + +#: describe.c:136 +msgid "List of aggregate functions" +msgstr "聚集函数列表" + +#: describe.c:161 +#, c-format +msgid "The server (version %s) does not support access methods." +msgstr "服务器(版本%s) 不支持访问方法." + +#: describe.c:176 +msgid "Index" +msgstr "索引" + +#: describe.c:177 describe.c:4056 describe.c:4284 describe.c:5919 +msgid "Table" +msgstr "数据表" + +#: describe.c:185 describe.c:5696 +msgid "Handler" +msgstr "处理函数" + +#: describe.c:204 +msgid "List of access methods" +msgstr "访问方法列表" + +#: describe.c:230 +#, c-format +msgid "The server (version %s) does not support tablespaces." +msgstr "服务器(版本%s) 不支持使用表空间." + +#: describe.c:244 describe.c:252 describe.c:504 describe.c:767 describe.c:1039 +#: describe.c:1280 describe.c:4049 describe.c:4260 describe.c:4421 +#: describe.c:4667 describe.c:5030 describe.c:5692 describe.c:5776 +#: describe.c:6172 describe.c:6309 describe.c:6412 describe.c:6535 +#: describe.c:6613 large_obj.c:289 +msgid "Owner" +msgstr "拥有者" + +#: describe.c:245 describe.c:253 +msgid "Location" +msgstr "所在地" + +#: describe.c:264 describe.c:3639 +msgid "Options" +msgstr "选项" + +#: describe.c:269 describe.c:740 describe.c:1055 describe.c:4100 +#: describe.c:4104 +msgid "Size" +msgstr "大小" + +#: describe.c:291 +msgid "List of tablespaces" +msgstr "表空间列表" + +#: describe.c:336 +#, c-format +msgid "\\df only takes [anptwS+] as options" +msgstr "\\df 只能将 [anptwS+]作为选项" + +#: describe.c:344 describe.c:355 +#, 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:392 describe.c:410 describe.c:456 describe.c:473 +msgid "agg" +msgstr "agg" + +#: describe.c:393 describe.c:411 +msgid "window" +msgstr "窗口" + +#: describe.c:394 +msgid "proc" +msgstr "proc" + +#: describe.c:395 describe.c:413 describe.c:458 describe.c:475 +msgid "func" +msgstr "函数" + +#: describe.c:412 describe.c:457 describe.c:474 describe.c:1490 +msgid "trigger" +msgstr "触发器" + +#: describe.c:486 +msgid "immutable" +msgstr "不可更改" + +#: describe.c:487 +msgid "stable" +msgstr "稳定" + +#: describe.c:488 +msgid "volatile" +msgstr "不稳定性" + +#: describe.c:489 +msgid "Volatility" +msgstr "挥发性" + +#: describe.c:497 +msgid "restricted" +msgstr "受限制的" + +#: describe.c:498 +msgid "safe" +msgstr "安全的" + +#: describe.c:499 +msgid "unsafe" +msgstr "不安全的" + +#: describe.c:500 +msgid "Parallel" +msgstr "平行" + +#: describe.c:505 +msgid "definer" +msgstr "定义者" + +#: describe.c:506 +msgid "invoker" +msgstr "调用者" + +#: describe.c:507 +msgid "Security" +msgstr "安全" + +#: describe.c:512 +msgid "Language" +msgstr "程序语言" + +#: describe.c:516 describe.c:520 +msgid "Source code" +msgstr "原始程式" + +#: describe.c:691 +msgid "List of functions" +msgstr "函数列表" + +#: describe.c:739 +msgid "Internal name" +msgstr "内部名称" + +#: describe.c:761 +msgid "Elements" +msgstr "成员" + +#: describe.c:822 +msgid "List of data types" +msgstr "数据类型列表" + +#: describe.c:926 +msgid "Left arg type" +msgstr "左参数类型" + +#: describe.c:927 +msgid "Right arg type" +msgstr "右参数类型" + +#: describe.c:928 +msgid "Result type" +msgstr "结果类型" + +#: describe.c:933 describe.c:4673 describe.c:4830 describe.c:4836 +#: describe.c:5246 describe.c:6784 describe.c:6788 +msgid "Function" +msgstr "函数" + +#: describe.c:1010 +msgid "List of operators" +msgstr "运算子列表" + +#: describe.c:1040 +msgid "Encoding" +msgstr "字元编码" + +#: describe.c:1045 describe.c:4946 +msgid "Collate" +msgstr "校对规则" + +#: describe.c:1046 describe.c:4947 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:1059 +msgid "Tablespace" +msgstr "表空间" + +#: describe.c:1081 +msgid "List of databases" +msgstr "数据库列表" + +#: describe.c:1122 describe.c:1283 describe.c:4038 +msgid "table" +msgstr "数据表" + +#: describe.c:1123 describe.c:4039 +msgid "view" +msgstr "视图" + +#: describe.c:1124 describe.c:4040 +msgid "materialized view" +msgstr "物化视图" + +#: describe.c:1125 describe.c:1285 describe.c:4042 +msgid "sequence" +msgstr "序列数" + +#: describe.c:1126 describe.c:4045 +msgid "foreign table" +msgstr "所引用的外表" + +#: describe.c:1127 describe.c:4046 describe.c:4269 +msgid "partitioned table" +msgstr "分区表" + +#: describe.c:1139 +msgid "Column privileges" +msgstr "列特权" + +#: describe.c:1170 describe.c:1204 +msgid "Policies" +msgstr "策略" + +#: describe.c:1236 describe.c:6476 describe.c:6480 +msgid "Access privileges" +msgstr "存取权限" + +#: describe.c:1267 +#, c-format +msgid "The server (version %s) does not support altering default privileges." +msgstr "服务器(版本%s)不支持修改默认权限." + +#: describe.c:1287 +msgid "function" +msgstr "函数" + +#: describe.c:1289 +msgid "type" +msgstr "类型Ctype" + +#: describe.c:1291 +msgid "schema" +msgstr "架构模式" + +#: describe.c:1315 +msgid "Default access privileges" +msgstr "默认的访问权限" + +#: describe.c:1355 +msgid "Object" +msgstr "对象" + +#: describe.c:1369 +msgid "table constraint" +msgstr "表约束" + +#: describe.c:1391 +msgid "domain constraint" +msgstr "域约束" + +#: describe.c:1419 +msgid "operator class" +msgstr "操作符类" + +#: describe.c:1448 +msgid "operator family" +msgstr "操作符家族" + +#: describe.c:1470 +msgid "rule" +msgstr "规则" + +#: describe.c:1512 +msgid "Object descriptions" +msgstr "对象描述" + +#: describe.c:1568 describe.c:4175 +#, c-format +msgid "Did not find any relation named \"%s\"." +msgstr "没有找到任何名称为 \"%s\" 的关联." + +#: describe.c:1571 describe.c:4178 +#, c-format +msgid "Did not find any relations." +msgstr "没有找到任何关系." + +#: describe.c:1827 +#, c-format +msgid "Did not find any relation with OID %s." +msgstr "没有找到任何OID为 %s 的关联." + +#: describe.c:1879 describe.c:1903 +msgid "Start" +msgstr "起始值" + +#: describe.c:1880 describe.c:1904 +msgid "Minimum" +msgstr "最小值" + +#: describe.c:1881 describe.c:1905 +msgid "Maximum" +msgstr "最大值" + +#: describe.c:1882 describe.c:1906 +msgid "Increment" +msgstr "增量" + +#: describe.c:1883 describe.c:1907 describe.c:2038 describe.c:4589 +#: describe.c:4847 describe.c:4961 describe.c:4966 describe.c:6523 +msgid "yes" +msgstr "是" + +#: describe.c:1884 describe.c:1908 describe.c:2039 describe.c:4589 +#: describe.c:4844 describe.c:4961 describe.c:6524 +msgid "no" +msgstr "否" + +#: describe.c:1885 describe.c:1909 +msgid "Cycles?" +msgstr "循环?" + +#: describe.c:1886 describe.c:1910 +msgid "Cache" +msgstr "缓存" + +#: describe.c:1953 +#, c-format +msgid "Owned by: %s" +msgstr "属于: %s" + +#: describe.c:1957 +#, c-format +msgid "Sequence for identity column: %s" +msgstr "标识列的序列: %s" + +#: describe.c:1964 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "序列数 \"%s.%s\"" + +#: describe.c:2111 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "不记录日志的表 \"%s.%s\"" + +#: describe.c:2114 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "数据表 \"%s.%s\"" + +#: describe.c:2118 +#, c-format +msgid "View \"%s.%s\"" +msgstr "视图 \"%s.%s\"" + +#: describe.c:2123 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "不记录日志的物化视图 \"%s.%s\"" + +#: describe.c:2126 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "物化视图 \"%s.%s\"" + +#: describe.c:2131 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "不记录日志的索引 \"%s.%s\"" + +#: describe.c:2134 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "索引 \"%s.%s\"" + +#: describe.c:2139 +#, c-format +msgid "Unlogged partitioned index \"%s.%s\"" +msgstr "不记录日志的分区索引 \"%s.%s\"" + +#: describe.c:2142 +#, c-format +msgid "Partitioned index \"%s.%s\"" +msgstr "分区索引 \"%s.%s\"" + +#: describe.c:2147 +#, c-format +msgid "Special relation \"%s.%s\"" +msgstr "特殊关联 \"%s.%s\"" + +#: describe.c:2151 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST 数据表 \"%s.%s\"" + +#: describe.c:2155 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "合成类型 \"%s.%s\"" + +#: describe.c:2159 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "引用的外部表 \"%s.%s\"" + +#: describe.c:2164 +#, c-format +msgid "Unlogged partitioned table \"%s.%s\"" +msgstr "不记录日志的分区表 \"%s.%s\"" + +#: describe.c:2167 +#, c-format +msgid "Partitioned table \"%s.%s\"" +msgstr "分区表 \"%s.%s\"" + +#: describe.c:2183 describe.c:4502 +msgid "Collation" +msgstr "校对规则" + +#: describe.c:2184 describe.c:4509 +msgid "Nullable" +msgstr "可空的" + +#: describe.c:2185 describe.c:4510 +msgid "Default" +msgstr "预设" + +#: describe.c:2188 +msgid "Key?" +msgstr "键值?" + +#: describe.c:2190 describe.c:4739 describe.c:4750 +msgid "Definition" +msgstr "定义" + +#: describe.c:2192 describe.c:5712 describe.c:5796 describe.c:5867 +#: describe.c:5931 +msgid "FDW options" +msgstr "FDW选项" + +#: describe.c:2194 +msgid "Storage" +msgstr "存储" + +#: describe.c:2196 +msgid "Compression" +msgstr "压缩" + +#: describe.c:2198 +msgid "Stats target" +msgstr "统计目标" + +#: describe.c:2334 +msgid "Partition of: %s %s%s" +msgstr "分区: %s %s%s" + +#: describe.c:2347 +msgid "No partition constraint" +msgstr "无分区约束" + +#: describe.c:2349 +#, c-format +msgid "Partition constraint: %s" +msgstr "分区约束: %s" + +#: describe.c:2373 +#, c-format +msgid "Partition key: %s" +msgstr "分区键值: %s" + +#: describe.c:2399 +msgid "Owning table: \"%s.%s\"" +msgstr "拥有表: \"%s.%s\"" + +#: describe.c:2470 +msgid "primary key, " +msgstr "主键(PK)," + +#: describe.c:2472 +msgid "unique, " +msgstr "唯一的," + +#: describe.c:2478 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "给数据表 \"%s.%s\"" + +#: describe.c:2482 +#, c-format +msgid ", predicate (%s)" +msgstr ", 叙述 (%s)" + +#: describe.c:2485 +msgid ", clustered" +msgstr ", 已丛集" + +#: describe.c:2488 +msgid ", invalid" +msgstr ", 无效的" + +#: describe.c:2491 +msgid ", deferrable" +msgstr ",可延迟" + +#: describe.c:2494 +msgid ", initially deferred" +msgstr ",开始被延迟" + +#: describe.c:2497 +msgid ", replica identity" +msgstr ",复制标识" + +#: describe.c:2564 +msgid "Indexes:" +msgstr "索引:" + +#: describe.c:2648 +msgid "Check constraints:" +msgstr "检查约束限制" + +#: describe.c:2716 +msgid "Foreign-key constraints:" +msgstr "外部键(FK)限制:" + +#: describe.c:2779 +msgid "Referenced by:" +msgstr "由引用:" + +#: describe.c:2829 +msgid "Policies:" +msgstr "策略:" + +#: describe.c:2832 +msgid "Policies (forced row security enabled):" +msgstr "策略(强制行安全性启用):" + +#: describe.c:2835 +msgid "Policies (row security enabled): (none)" +msgstr "策略(行安全性启用):(无)" + +#: describe.c:2838 +msgid "Policies (forced row security enabled): (none)" +msgstr "策略(强制行安全性启用):(无)" + +#: describe.c:2841 +msgid "Policies (row security disabled):" +msgstr "策略(行安全性禁用):" + +#: describe.c:2902 describe.c:3006 +msgid "Statistics objects:" +msgstr "统计信息对象:" + +#: describe.c:3120 describe.c:3224 +msgid "Rules:" +msgstr "规则:" + +#: describe.c:3123 +msgid "Disabled rules:" +msgstr "已停用规则:" + +#: describe.c:3126 +msgid "Rules firing always:" +msgstr "永远触发规则" + +#: describe.c:3129 +msgid "Rules firing on replica only:" +msgstr "只有在复制时触发规则:" + +#: describe.c:3169 +msgid "Publications:" +msgstr "发布:" + +#: describe.c:3207 +msgid "View definition:" +msgstr "视图定义:" + +#: describe.c:3354 +msgid "Triggers:" +msgstr "触发器:" + +#: describe.c:3358 +msgid "Disabled user triggers:" +msgstr "禁用用户触发器:" + +#: describe.c:3360 +msgid "Disabled triggers:" +msgstr "停用触发器:" + +#: describe.c:3363 +msgid "Disabled internal triggers:" +msgstr "禁用内部触发器:" + +#: describe.c:3366 +msgid "Triggers firing always:" +msgstr "永远激活触发器" + +#: describe.c:3369 +msgid "Triggers firing on replica only:" +msgstr "只有在复制时激活触发器" + +#: describe.c:3441 +#, c-format +msgid "Server: %s" +msgstr "服务器 %s" + +#: describe.c:3449 +#, c-format +msgid "FDW options: (%s)" +msgstr "FDW选项: (%s)" + +#: describe.c:3470 +msgid "Inherits" +msgstr "继承" + +#: describe.c:3543 +#, c-format +msgid "Number of partitions: %d" +msgstr "分区数: %d" + +#: describe.c:3552 +#, c-format +msgid "Number of partitions: %d (Use \\d+ to list them.)" +msgstr "分区的数量:%d(可以使用 \\d+ 来列出它们)" + +#: describe.c:3554 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "子表的数量:%d(可以使用 \\d+ 来列出它们)" + +#: describe.c:3561 +msgid "Child tables" +msgstr "子表" + +#: describe.c:3561 +msgid "Partitions" +msgstr "分区" + +#: describe.c:3592 +#, c-format +msgid "Typed table of type: %s" +msgstr "类型的已确定类型表(typed table):%s" + +#: describe.c:3608 +msgid "Replica Identity" +msgstr "复制标识" + +#: describe.c:3621 +msgid "Has OIDs: yes" +msgstr "有 OIDs:yes" + +#: describe.c:3630 +#, c-format +msgid "Access method: %s" +msgstr "访问方法 %s" + +#: describe.c:3710 +#, 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:3722 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", 表空间 \"%s\"" + +#: describe.c:3815 +msgid "List of roles" +msgstr "角色列表" + +#: describe.c:3817 +msgid "Role name" +msgstr "角色名称" + +#: describe.c:3818 +msgid "Attributes" +msgstr "属性" + +#: describe.c:3820 +msgid "Member of" +msgstr "成员属于" + +#: describe.c:3831 +msgid "Superuser" +msgstr "超级用户" + +#: describe.c:3834 +msgid "No inheritance" +msgstr "没有继承" + +#: describe.c:3837 +msgid "Create role" +msgstr "建立角色" + +#: describe.c:3840 +msgid "Create DB" +msgstr "建立 DB" + +#: describe.c:3843 +msgid "Cannot login" +msgstr "无法登录" + +#: describe.c:3847 +msgid "Replication" +msgstr "复制" + +#: describe.c:3851 +msgid "Bypass RLS" +msgstr "绕过RLS" + +#: describe.c:3860 +msgid "No connections" +msgstr "没有连接" + +#: describe.c:3862 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d个连接" + +#: describe.c:3872 +msgid "Password valid until " +msgstr "密码有效直至" + +#: describe.c:3922 +#, c-format +msgid "The server (version %s) does not support per-database role settings." +msgstr "服务器(版本%s) 每个数据库角色设置." + +#: describe.c:3935 +msgid "Role" +msgstr "角色" + +#: describe.c:3936 +msgid "Database" +msgstr "数据库" + +#: describe.c:3937 +msgid "Settings" +msgstr "设置" + +#: describe.c:3958 +#, c-format +msgid "Did not find any settings for role \"%s\" and database \"%s\"." +msgstr "找不到角色\"%s\"和数据库\"%s\"的任何设置." + +#: describe.c:3961 +#, c-format +msgid "Did not find any settings for role \"%s\"." +msgstr "找不到角色\"%s\"的任何设置." + +#: describe.c:3964 +#, c-format +msgid "Did not find any settings." +msgstr "找不到任何设置." + +#: describe.c:3969 +msgid "List of settings" +msgstr "设置的列表" + +#: describe.c:4041 +msgid "index" +msgstr "索引" + +#: describe.c:4043 +msgid "special" +msgstr "特殊" + +#: describe.c:4044 +msgid "TOAST table" +msgstr "TOAST 表" + +#: describe.c:4047 describe.c:4270 +msgid "partitioned index" +msgstr "分区索引" + +#: describe.c:4071 +msgid "permanent" +msgstr "永久的" + +#: describe.c:4072 +msgid "temporary" +msgstr "临时的" + +#: describe.c:4073 +msgid "unlogged" +msgstr "未记录" + +#: describe.c:4074 +msgid "Persistence" +msgstr "持续的" + +#: describe.c:4091 +msgid "Access method" +msgstr "访问方法" + +#: describe.c:4183 +msgid "List of relations" +msgstr "关联列表" + +#: describe.c:4231 +#, c-format +msgid "The server (version %s) does not support declarative table partitioning." +msgstr "服务器(版本%s)不支持声明性表分区." + +#: describe.c:4242 +msgid "List of partitioned indexes" +msgstr "分区索引列表" + +#: describe.c:4244 +msgid "List of partitioned tables" +msgstr "分区表列表" + +#: describe.c:4248 +msgid "List of partitioned relations" +msgstr "分区关系列表" + +#: describe.c:4279 +msgid "Parent name" +msgstr "父名" + +#: describe.c:4292 +msgid "Leaf partition size" +msgstr "叶子分区大小" + +#: describe.c:4295 describe.c:4301 +msgid "Total size" +msgstr "总大小" + +#: describe.c:4425 +msgid "Trusted" +msgstr "信任" + +#: describe.c:4433 +msgid "Internal language" +msgstr "内部语言" + +#: describe.c:4434 +msgid "Call handler" +msgstr "调用函数" + +#: describe.c:4435 describe.c:5699 +msgid "Validator" +msgstr "验证" + +#: describe.c:4438 +msgid "Inline handler" +msgstr "内联函数" + +#: describe.c:4466 +msgid "List of languages" +msgstr "语言列表" + +#: describe.c:4511 +msgid "Check" +msgstr "检查" + +#: describe.c:4553 +msgid "List of domains" +msgstr "共同值域列表" + +#: describe.c:4587 +msgid "Source" +msgstr "来源" + +#: describe.c:4588 +msgid "Destination" +msgstr "目的地" + +#: describe.c:4590 describe.c:6525 +msgid "Default?" +msgstr "预设?" + +#: describe.c:4627 +msgid "List of conversions" +msgstr "字元编码转换列表" + +#: describe.c:4666 +msgid "Event" +msgstr "Event" + +#: describe.c:4668 +msgid "enabled" +msgstr "启用" + +#: describe.c:4669 +msgid "replica" +msgstr "replica" + +#: describe.c:4670 +msgid "always" +msgstr "经常" + +#: describe.c:4671 +msgid "disabled" +msgstr "禁用" + +#: describe.c:4672 describe.c:6413 +msgid "Enabled" +msgstr "使能" + +#: describe.c:4674 +msgid "Tags" +msgstr "标签" + +#: describe.c:4693 +msgid "List of event triggers" +msgstr "事件触发器列表" + +#: describe.c:4720 +msgid "The server (version %s) does not support extended statistics." +msgstr "服务器(版本%s) 不支持使用扩展统计." + +#: describe.c:4757 +msgid "Ndistinct" +msgstr "禁止" + +#: describe.c:4758 +msgid "Dependencies" +msgstr "依赖关系" + +#: describe.c:4768 +msgid "MCV" +msgstr "MCV" + +#: describe.c:4787 +msgid "List of extended statistics" +msgstr "扩展统计表" + +#: describe.c:4814 +msgid "Source type" +msgstr "来源类型" + +#: describe.c:4815 +msgid "Target type" +msgstr "目标类型" + +#: describe.c:4846 +msgid "in assignment" +msgstr "在指派中" + +#: describe.c:4848 +msgid "Implicit?" +msgstr "隐含的?" + +#: describe.c:4903 +msgid "List of casts" +msgstr "类型转换列表" + +#: describe.c:4931 +#, c-format +msgid "The server (version %s) does not support collations." +msgstr "服务器(版本%s)不支持排序校对." + +#: describe.c:4952 describe.c:4956 +msgid "Provider" +msgstr "提供者" + +#: describe.c:4962 describe.c:4967 +msgid "Deterministic?" +msgstr "确定性?" + +#: describe.c:5002 +msgid "List of collations" +msgstr "校对列表" + +#: describe.c:5061 +msgid "List of schemas" +msgstr "架构模式列表" + +#: describe.c:5086 describe.c:5333 describe.c:5404 describe.c:5475 +#, c-format +msgid "The server (version %s) does not support full text search." +msgstr "服务器(版本%s)不支持使用全文搜索." + +#: describe.c:5121 +msgid "List of text search parsers" +msgstr "文本剖析器列表" + +#: describe.c:5166 +#, c-format +msgid "Did not find any text search parser named \"%s\"." +msgstr "没有找到任何命名为 \"%s\" 的文本剖析器." + +#: describe.c:5169 +#, c-format +msgid "Did not find any text search parsers." +msgstr "找不到任何文本搜索解析器." + +#: describe.c:5244 +msgid "Start parse" +msgstr "开始剖析" + +#: describe.c:5245 +msgid "Method" +msgstr "方法" + +#: describe.c:5249 +msgid "Get next token" +msgstr "取得下一个标志符" + +#: describe.c:5251 +msgid "End parse" +msgstr "结束剖析" + +#: describe.c:5253 +msgid "Get headline" +msgstr "取得首行" + +#: describe.c:5255 +msgid "Get token types" +msgstr "取得标志符类型" + +#: describe.c:5266 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "文本搜索剖析器 \"%s.%s\"" + +#: describe.c:5269 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "文本搜索剖析器 \"%s\"" + +#: describe.c:5288 +msgid "Token name" +msgstr "标志名称" + +#: describe.c:5299 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "标志符别型给剖析器 \"%s.%s\"" + +#: describe.c:5302 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "标志符类型给剖析器 \"%s\"" + +#: describe.c:5356 +msgid "Template" +msgstr "模版" + +#: describe.c:5357 +msgid "Init options" +msgstr "初始选项" + +#: describe.c:5379 +msgid "List of text search dictionaries" +msgstr "文本搜索字典列表" + +#: describe.c:5422 +msgid "Init" +msgstr "初始化" + +#: describe.c:5423 +msgid "Lexize" +msgstr "词汇" + +#: describe.c:5450 +msgid "List of text search templates" +msgstr "文本搜索样式列表" + +#: describe.c:5510 +msgid "List of text search configurations" +msgstr "文本搜索组态列表" + +#: describe.c:5556 +#, c-format +msgid "Did not find any text search configuration named \"%s\"." +msgstr "没有找到任何命名为 \"%s\" 的文本搜索组态." + +#: describe.c:5559 +#, c-format +msgid "Did not find any text search configurations." +msgstr "未找到任何文本搜索配置." + +#: describe.c:5625 +msgid "Token" +msgstr "标志符" + +#: describe.c:5626 +msgid "Dictionaries" +msgstr "字典" + +#: describe.c:5637 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "文本搜索组态 \"%s.%s\"" + +#: describe.c:5640 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "文本搜索组态 \"%s\"" + +#: describe.c:5644 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"剖析器:\"%s.%s\"" + +#: describe.c:5647 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"剖析器:\"%s\"" + +#: describe.c:5681 +#, c-format +msgid "The server (version %s) does not support foreign-data wrappers." +msgstr "服务器(版本%s)不支持使用外部数据封装器." + +#: describe.c:5739 +msgid "List of foreign-data wrappers" +msgstr "外部数据封装器列表" + +#: describe.c:5764 +#, c-format +msgid "The server (version %s) does not support foreign servers." +msgstr "服务器(版本%s)不支持使用外部服务器." + +#: describe.c:5777 +msgid "Foreign-data wrapper" +msgstr "外部数据封装器" + +#: describe.c:5795 describe.c:6000 +msgid "Version" +msgstr "版本" + +#: describe.c:5821 +msgid "List of foreign servers" +msgstr "外部服务器列表" + +#: describe.c:5846 +#, c-format +msgid "The server (version %s) does not support user mappings." +msgstr "服务器(版本%s)不支持使用用户映射." + +#: describe.c:5856 describe.c:5920 +msgid "Server" +msgstr "服务器" + +#: describe.c:5857 +msgid "User name" +msgstr "用户名: " + +#: describe.c:5882 +msgid "List of user mappings" +msgstr "列出用户映射" + +#: describe.c:5907 +#, c-format +msgid "The server (version %s) does not support foreign tables." +msgstr "服务器(版本%s)不支持使用引用表." + +#: describe.c:5960 +msgid "List of foreign tables" +msgstr "引用表列表" + +#: describe.c:5985 describe.c:6042 +#, c-format +msgid "The server (version %s) does not support extensions." +msgstr "服务器(版本%s) 不支持使用扩展." + +#: describe.c:6017 +msgid "List of installed extensions" +msgstr "已安装扩展列表" + +#: describe.c:6070 +#, c-format +msgid "Did not find any extension named \"%s\"." +msgstr "没有找到任何名称为 \"%s\" 的扩展." + +#: describe.c:6073 +#, c-format +msgid "Did not find any extensions." +msgstr "没有找到任何扩展." + +#: describe.c:6117 +msgid "Object description" +msgstr "对象描述" + +#: describe.c:6127 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "对象用于扩展 \"%s\"" + +#: describe.c:6156 describe.c:6232 +#, c-format +msgid "The server (version %s) does not support publications." +msgstr "服务器(版本%s)不支持发布." + +#: describe.c:6173 describe.c:6310 +msgid "All tables" +msgstr "所有表" + +#: describe.c:6174 describe.c:6311 +msgid "Inserts" +msgstr "插入" + +#: describe.c:6175 describe.c:6312 +msgid "Updates" +msgstr "更新" + +#: describe.c:6176 describe.c:6313 +msgid "Deletes" +msgstr "删除" + +#: describe.c:6180 describe.c:6315 +msgid "Truncates" +msgstr "截断" + +#: describe.c:6184 describe.c:6317 +msgid "Via root" +msgstr "Via root" + +#: describe.c:6201 +msgid "List of publications" +msgstr "发布列表" + +#: describe.c:6274 +#, c-format +msgid "Did not find any publication named \"%s\"." +msgstr "没有找到任何名称为 \"%s\" 的发布." + +#: describe.c:6277 +#, c-format +msgid "Did not find any publications." +msgstr "没有找到任何发布." + +#: describe.c:6306 +#, c-format +msgid "Publication %s" +msgstr "发布 %s" + +#: describe.c:6354 +msgid "Tables:" +msgstr "数据表" + +#: describe.c:6398 +#, c-format +msgid "The server (version %s) does not support subscriptions." +msgstr "服务器(版本%s)不支持订阅." + +#: describe.c:6414 +msgid "Publication" +msgstr "发布" + +#: describe.c:6423 +msgid "Binary" +msgstr "二进制" + +#: describe.c:6424 +msgid "Streaming" +msgstr "流" + +#: describe.c:6429 +msgid "Synchronous commit" +msgstr "同步提交" + +#: describe.c:6430 +msgid "Conninfo" +msgstr "连接信息" + +#: describe.c:6452 +msgid "List of subscriptions" +msgstr "订阅列表" + +#: describe.c:6519 describe.c:6607 describe.c:6692 describe.c:6775 +msgid "AM" +msgstr "AM" + +#: describe.c:6520 +msgid "Input type" +msgstr "输入类型" + +#: describe.c:6521 +msgid "Storage type" +msgstr "存储类型" + +#: describe.c:6522 +msgid "Operator class" +msgstr "操作符类" + +#: describe.c:6534 describe.c:6608 describe.c:6693 describe.c:6776 +msgid "Operator family" +msgstr "操作符家族" + +#: describe.c:6566 +msgid "List of operator classes" +msgstr "运算子列表" + +#: describe.c:6609 +msgid "Applicable types" +msgstr "适用类型" + +#: describe.c:6647 +msgid "List of operator families" +msgstr "运算子系列列表" + +#: describe.c:6694 +msgid "Operator" +msgstr "运算子" + +#: describe.c:6695 +msgid "Strategy" +msgstr "策略" + +#: describe.c:6696 +msgid "ordering" +msgstr "排序" + +#: describe.c:6697 +msgid "search" +msgstr "搜索" + +#: describe.c:6698 +msgid "Purpose" +msgstr "目的" + +#: describe.c:6703 +msgid "Sort opfamily" +msgstr "排序操作符家族" + +#: describe.c:6734 +msgid "List of operators of operator families" +msgstr "操作符集合的列表" + +#: describe.c:6777 +msgid "Registered left type" +msgstr "注册左型" + +#: describe.c:6778 +msgid "Registered right type" +msgstr "注册右型" + +#: describe.c:6779 +msgid "Number" +msgstr "数" + +#: describe.c:6815 +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" + +#: help.c:74 help.c:355 help.c:433 help.c:476 +#, c-format +msgid "Usage:\n" +msgstr "使用方法:\n" + +#: help.c:75 +#, c-format +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr " psql [选项]... [数据库名称 [用户名称]]\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=文件名 从文件中执行命令然后退出\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 列出反斜线命令,然后退出\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=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" +" 为字段设置分隔符,用于不整齐的输出(默认:\"%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=变量[=参数] 设置将变量打印到参数的选项(查阅 \\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" +" 为不整齐的输出设置字录的分隔符(默认:换行符号)\n" + +#: help.c:119 +#, c-format +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only 只打印记录i\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 表格标记属性(例如,宽度,边界)\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=主机名 数据库服务器主机或socket目录(默认:\"%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:137 +#, c-format +msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" +msgstr " -U, --username=用户名 指定数据库用户名(默认:\"%s\")\n" + +#: help.c:138 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password 永远不提示输入口令\n" + +#: help.c:139 +#, c-format +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password 强制口令提示 (自动)\n" + +#: help.c:141 +#, 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:144 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "臭虫报告至<%s>.\n" + +#: help.c:145 +#, c-format +msgid "%s home page: <%s>\n" +msgstr "%s 主页: <%s>\n" + +#: help.c:171 +#, c-format +msgid "General\n" +msgstr "一般性\n" + +#: help.c:172 +#, c-format +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright 显示PostgreSQL的使用和发行许可条款\n" + +#: help.c:173 +#, c-format +msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n" +msgstr " \\crosstabview [COLUMNS] 执行查询并且以交叉表显示结果\n" + +#: help.c:174 +#, c-format +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose 以最冗长的形式显示最近的错误消息\n" + +#: help.c:175 +#, c-format +#: help.c:175 +#, 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:177 +#, c-format +msgid " \\gdesc describe result of query, without executing it\n" +msgstr " \\gdesc 描述查询结果,而不执行它\n" + +#: help.c:178 +#, c-format +msgid " \\gexec execute query, then execute each value in its result\n" +msgstr " \\gexec 执行策略,然后执行其结果中的每个值\n" + +#: help.c:179 +#, c-format +msgid " \\gset [PREFIX] execute query and store results in psql variables\n" +msgstr " \\gset [PREFIX] 执行查询并把结果存到psql变量中\n" + +#: help.c:180 +msgid " \\gx [(OPTIONS)] [FILE] as \\g, but forces expanded output mode\n" +msgstr " \\gx [(OPTIONS)] [FILE] 就像\\g,但强制扩展输出模式\n" + +#: help.c:181 +#, c-format +msgid " \\q quit psql\n" +msgstr " \\q 退出 psql\n" + +#: help.c:182 +#, c-format +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] 每隔SEC秒执行一次查询\n" + +#: help.c:185 +#, c-format +msgid "Help\n" +msgstr "帮助\n" + +#: help.c:187 +#, c-format +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] 显示反斜线命令的帮助\n" + +#: help.c:188 +#, c-format +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options 显示 psql 命令行选项的帮助\n" + +#: help.c:189 +#, c-format +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables 显示特殊变量的帮助\n" + +#: help.c:190 +#, c-format +msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" +msgstr " \\h [NAME] SQL命令语法上的说明,用*显示全部命令的语法说明\n" + +#: help.c:193 +#, c-format +msgid "Query Buffer\n" +msgstr "查询缓存区\n" + +#: help.c:194 +#, c-format +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" +msgstr " \\e [FILE] [LINE] 使用外部编辑器编辑查询缓存区(或文件)\n" + +#: help.c:195 +#, c-format +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义\n" + +#: help.c:196 +#, c-format +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [VIEWNAME [LINE]] 用外部编辑器编辑视图定义\n" + +#: help.c:197 +#, c-format +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p 显示查询缓存区的内容\n" + +#: help.c:198 +#, c-format +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r 重置(清除)查询缓存区\n" + +#: help.c:200 +#, c-format +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [文件] 显示历史记录或将历史记录保存在文件中\n" + +#: help.c:202 +#, c-format +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w 文件 将查询缓存区的内容写入文件\n" + +#: help.c:205 +#, c-format +msgid "Input/Output\n" +msgstr "输入/输出\n" + +#: help.c:206 +#, c-format +msgid " \\copy ... perform SQL COPY with data stream to the client host\n" +msgstr " \\copy ... 执行 SQL COPY,将数据流发送到客户端主机\n" + +#: help.c:207 +msgid " \\echo [-n] [STRING] write string to standard output (-n for no newline)\n" +msgstr " \\echo [-n] [STRING] 将字符串写到标准输出(-n表示没有换行符)\n" + +#: help.c:208 +#, c-format +msgid " \\i FILE execute commands from file\n" +msgstr " \\i 文件 从文件中执行命令\n" + +#: help.c:209 +#, c-format +msgid " \\ir FILE as \\i, but relative to location of current script\n" +msgstr " \\ir FILE 与 \\i类似, 但是相对于当前脚本的位置\n" + +#: help.c:210 +#, c-format +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [文件] 将全部查询结果写入文件或 |管道\n" + +#: help.c:211 +msgid " \\qecho [-n] [STRING] write string to \\o output stream (-n for no newline)\n" +msgstr " \\qecho [-n] [STRING] 将字符串写入\\o输出流(-n表示无换行)\n" + +#: help.c:212 +msgid " \\warn [-n] [STRING] write string to standard error (-n for no newline)\n" +msgstr " \\warn [-n] [STRING] 将字符串写入标准错误(-n 表示无换行)\n" + +#: help.c:215 +#, c-format +msgid "Conditional\n" +msgstr "条件\n" + +#: help.c:216 +#, c-format +msgid " \\if EXPR begin conditional block\n" +msgstr " \\if EXPR 开始条件块\n" + +#: help.c:217 +#, c-format +msgid " \\elif EXPR alternative within current conditional block\n" +msgstr " \\elif EXPR 当前条件块内的备选方案\n" + +#: help.c:218 +#, c-format +msgid " \\else final alternative within current conditional block\n" +msgstr " \\else 当前条件块内的最终备选方案\n" + +#: help.c:219 +#, c-format +msgid " \\endif end conditional block\n" +msgstr " \\endif 条件块的结尾\n" + +#: help.c:222 +#, c-format +msgid "Informational\n" +msgstr "资讯性\n" + +#: help.c:223 +#, c-format +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (选项: S = 显示系统对象, + = 其余的详细信息)\n" + +#: help.c:224 +#, c-format +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] 列出表,视图和序列\n" + +#: help.c:225 +#, c-format +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] 名称 描述表,视图,序列,或索引\n" + +#: help.c:226 +#, c-format +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [模式] 列出聚合函数\n" + +#: help.c:227 +#, c-format +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [模式] 列出访问方法\n" + +#: help.c:228 +msgid " \\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\n" +msgstr " \\dAc[+] [AMPTRN [TYPEPTRN]] 列出运算符\n" + +#: help.c:229 +msgid " \\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\n" +msgstr " \\dAf[+] [AMPTRN [TYPEPTRN]] 列出运算符集合\n" + +#: help.c:230 +msgid " \\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\n" +msgstr " \\dAo[+] [AMPTRN [OPFPTRN]] 列出运算符集合\n" + +#: help.c:231 +#, c-format +msgid " \\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\n" +msgstr " \\dAp[+] [AMPTRN [OPFPTRN]] 列出运算符集合所支持的功能\n" + +#: help.c:232 +#, c-format +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [模式] 列出表空间\n" + +#: help.c:233 +#, c-format +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [模式] 列表转换\n" + +#: help.c:234 +#, c-format +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [模式] 列出类型强制转换\n" + +#: help.c:235 +#, c-format +msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr " \\dd[S] [模式] 显示没有在别处显示的对象描述\n" + +#: help.c:236 +#, c-format +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [模式] 列出共同值域\n" + +#: help.c:237 +#, c-format +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [模式] 列出默认权限\n" + +#: help.c:238 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [模式] 列出引用表\n" + +#: help.c:239 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [模式] 列出引用表\n" + +#: help.c:240 +#, c-format +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [模式] 列出外部服务器\n" + +#: help.c:241 +#, c-format +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [模式] 列出用户映射\n" + +#: help.c:242 +#, c-format +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [模式] 列出外部数据封装器\n" + +#: help.c:243 +msgid "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" list [only agg/normal/procedure/trigger/window] functions\n" +msgstr "" +" \\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]\n" +" 列出 [only agg/normal/procedure/trigger/window] 函数\n" + +#: help.c:245 +#, c-format +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [模式] 列出文本搜索配置\n" + +#: help.c:246 +#, c-format +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [模式] 列出文本搜索字典\n" + +#: help.c:247 +#, c-format +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [模式] 列出文本搜索解析器\n" + +#: help.c:248 +#, c-format +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [模式] 列出文本搜索模版\n" + +#: help.c:249 +#, c-format +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [模式] 列出角色\n" + +#: help.c:250 +#, c-format +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [模式] 列出索引\n" + +#: help.c:251 +#, c-format +msgid " \\dl list large objects, same as \\lo_list\n" +msgstr " \\dl 列出大对象, 功能与\\lo_list相同\n" + +#: help.c:252 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [模式] 列出所有过程语言\n" + +#: help.c:253 +#, c-format +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [模式] 列出所有物化视图\n" + +#: help.c:254 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [模式] 列出所有模式\n" + +#: help.c:255 +msgid "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" list operators\n" +msgstr "" +" \\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]\n" +" 列出运算符\n" + +#: help.c:257 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [模式] 列出所有校对规则\n" + +#: help.c:258 +#, c-format +msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr " \\dp [模式] 列出表,视图和序列的访问权限\n" + +#: help.c:259 +msgid " \\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\n" +msgstr " \\dP[itn+] [PATTERN] 列出[仅表/索引]分区关系[n=nested]\n" + +#: help.c:260 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr " \\drds [模式1 [模式2]] 列出每个数据库的角色设置\n" + +#: help.c:261 +#, c-format +msgid " \\dRp[+] [PATTERN] list replication publications\n" +msgstr " \\dRp[+] [模式] 列出复制发布\n" + +#: help.c:262 +#, c-format +msgid " \\dRs[+] [PATTERN] list replication subscriptions\n" +msgstr " \\dRs[+] [模式] 列出复制订阅\n" + +#: help.c:263 +#, c-format +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [模式] 列出序列\n" + +#: help.c:264 +#, c-format +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [模式] 列出表\n" + +#: help.c:265 +#, c-format +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [模式] 列出数据类型\n" + +#: help.c:266 +#, c-format +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [模式] 列出角色\n" + +#: help.c:267 +#, c-format +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [模式] 列出视图\n" + +#: help.c:268 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [模式] 列出扩展\n" + +#: help.c:269 +msgid " \\dX [PATTERN] list extended statistics\n" +msgstr " \\dX [PATTERN] 列出扩展统计信息\n" + +#: help.c:270 +msgid " \\dy[+] [PATTERN] list event triggers\n" +msgstr " \\dy[+] [PATTERN] l列出所有事件触发器\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[+] 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 [模式] 和\\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" + +#: 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 [开|关] 只显示记录 (目前是%s)\n" + +#: help.c:292 +#, c-format +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [字符串] 设置HTML <表格>标签属性, 或者如果没有的话取消设置\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 [编码名称] 显示或设定客户端编码\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 [目录] 更改目前的工作目录\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 [开|关] 切换命令计时开关 (目前是%s)\n" + +#: help.c:315 +#, c-format +msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" +msgstr " \\! [命令] 在 shell中执行命令或启动一个交互式shell\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=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" +" 如果被设置,显示反斜线命令执行的内部命令;\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 "" +" 错误\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 +msgid "" +" HIDE_TOAST_COMPRESSION\n" +" if set, compression methods are not displayed\n" +msgstr "" +" HIDE_TOAST_COMPRESSION\n" +" 如果设置,不显示压缩方法\n" + +#: help.c:381 +#, c-format +msgid "" +" HISTCONTROL\n" +" controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr "" +" HISTCONTROL\n" +" 控制命令历史 [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:383 +#, c-format +msgid "" +" HISTFILE\n" +" file name used to store the command history\n" +msgstr "" +" HISTFILE\n" +" 用来存储命令历史的文件名\n" + +#: help.c:385 +#, c-format +msgid "" +" HISTSIZE\n" +" maximum number of commands to store in the command history\n" +msgstr "" +" HISTSIZE\n" +" 保存在命令历史中的最大命令数\n" + +#: help.c:387 +#, c-format +msgid "" +" HOST\n" +" the currently connected database server host\n" +msgstr "" +" HOST\n" +" 当前连接的数据库服务器主机\n" + +#: help.c:389 +#, c-format +msgid "" +" IGNOREEOF\n" +" number of EOFs needed to terminate an interactive session\n" +msgstr "" +" IGNOREEOF\n" +" 终止交互式会话所需的EOF数\n" + +#: help.c:391 +#, c-format +msgid "" +" LASTOID\n" +" value of the last affected OID\n" +msgstr "" +" LASTOID\n" +" 最后一个受影响的 OID 的值\n" + +#: help.c:393 +#, 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:396 +#, 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:398 +#, c-format +msgid "" +" ON_ERROR_STOP\n" +" stop batch execution after error\n" +msgstr "" +" ON_ERROR_STOP\n" +" 发生错误后停止批量执行\n" + +#: help.c:400 +#, c-format +msgid "" +" PORT\n" +" server port of the current connection\n" +msgstr "" +" PORT\n" +" 当前连接的服务器端口\n" + +#: help.c:402 +#, c-format +msgid "" +" PROMPT1\n" +" specifies the standard psql prompt\n" +msgstr "" +" PROMPT1\n" +" 指定标准的 psql 提示符\n" + +#: help.c:404 +#, c-format +msgid "" +" PROMPT2\n" +" specifies the prompt used when a statement continues from a previous line\n" +msgstr "" +" PROMPT2\n" +" 指定在语句跨行时使用的提示符\n" + +#: help.c:406 +#, c-format +msgid "" +" PROMPT3\n" +" specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3\n" +" 指定 COPY ... FROM STDIN 期间使用的提示符\n" + +#: help.c:408 +#, c-format +msgid "" +" QUIET\n" +" run quietly (same as -q option)\n" +msgstr "" +" QUIET\n" +" 静默地运行(和-q选项相同)\n" + +#: help.c:410 +#, 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:412 +#, 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:415 +#, 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:417 +#, 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:419 +#, c-format +msgid "" +" SINGLESTEP\n" +" single-step mode (same as -s option)\n" +msgstr "" +" SINGLESTEP\n" +" 单步模式(与-s选项相同)\n" + +#: help.c:421 +#, c-format +msgid "" +" SQLSTATE\n" +" SQLSTATE of last query, or \"00000\" if no error\n" +msgstr "" +" SQLSTATE\n" +" 上次查询的SQL状态,如果没有错误,则为\"00000\"\n" + +#: help.c:423 +#, c-format +msgid "" +" USER\n" +" the currently connected database user\n" +msgstr "" +" USER\n" +" 当前连接上的数据库用户\n" + +#: help.c:425 +#, 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:427 +#, 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:432 +#, c-format +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"显示设置:\n" + +#: help.c:434 +#, 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:436 +#, c-format +msgid "" +" border\n" +" border style (number)\n" +msgstr "" +" border\n" +" 边界样式(数字)\n" + +#: help.c:438 +#, c-format +msgid "" +" columns\n" +" target width for the wrapped format\n" +msgstr "" +" columns\n" +" 用于回卷格式的目标宽度\n" + +#: help.c:440 +#, c-format +msgid "" +" expanded (or x)\n" +" expanded output [on, off, auto]\n" +msgstr "" +" expanded (or x)\n" +" 扩展输出 [on, off, auto]\n" + +#: help.c:442 +#, c-format +msgid "" +" fieldsep\n" +" field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep\n" +" 用于非对齐输出的域分隔符(默认是 \"%s\")\n" + +#: help.c:445 +#, c-format +msgid "" +" fieldsep_zero\n" +" set field separator for unaligned output to a zero byte\n" +msgstr "" +" fieldsep_zero\n" +" 将用于非对齐模式中的域分隔符设置为零字节\n" + +#: help.c:447 +#, c-format +msgid "" +" footer\n" +" enable or disable display of the table footer [on, off]\n" +msgstr "" +" footer\n" +" 启用或禁用表格页脚的显示 [on, off]\n" + +#: help.c:449 +#, 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:451 +#, 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:453 +#, c-format +msgid "" +" null\n" +" set the string to be printed in place of a null value\n" +msgstr "" +" null\n" +" 设置代替空值被打印的字符串\n" + +#: help.c:455 +#, c-format +msgid "" +" numericlocale\n" +" enable display of a locale-specific character to separate groups of digits\n" +msgstr "" +" numericlocale\n" +" 允许显示特定于区域设置的字符以分隔数字组\n" + +#: help.c:457 +#, 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:459 +#, c-format +msgid "" +" recordsep\n" +" record (line) separator for unaligned output\n" +msgstr "" +" recordsep\n" +" 用于非对齐输出中的记录(行)分隔符\n" + +#: help.c:461 +#, c-format +msgid "" +" recordsep_zero\n" +" set record separator for unaligned output to a zero byte\n" +msgstr "" +" recordsep_zero\n" +" 将用于非对齐输出中的记录分隔符设置为零字节\n" + +#: help.c:463 +#, 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:466 +#, c-format +msgid "" +" title\n" +" set the table title for subsequently printed tables\n" +msgstr "" +" title\n" +" 为任何后续被打印的表设置表标题\n" + +#: help.c:468 +#, c-format +msgid "" +" tuples_only\n" +" if set, only actual table data is shown\n" +msgstr "" +" tuples_only\n" +" 如果被设置,只有真实的表数据会被显示\n" + +#: help.c:470 +#, 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:475 +#, c-format +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"环境变量:\n" + +#: help.c:479 +#, 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:481 +#, 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:484 +#, c-format +msgid "" +" COLUMNS\n" +" number of columns for wrapped format\n" +msgstr "" +" COLUMNS\n" +" 回卷格式的列数\n" + +#: help.c:486 +#, c-format +msgid "" +" PGAPPNAME\n" +" same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME\n" +" 和application_name连接参数相同\n" + +#: help.c:488 +#, c-format +msgid "" +" PGDATABASE\n" +" same as the dbname connection parameter\n" +msgstr "" +" PGDATABASE\n" +" 和dbname连接参数相同\n" + +#: help.c:490 +#, c-format +msgid "" +" PGHOST\n" +" same as the host connection parameter\n" +msgstr "" +" PGHOST\n" +" 与主机连接参数相同\n" + +#: help.c:492 +#, c-format +msgid "" +" PGPASSFILE\n" +" password file name\n" +msgstr "" +" PGPASSFILE\n" +" 口令文件名\n" + +#: help.c:494 +#, c-format +msgid "" +" PGPASSWORD\n" +" connection password (not recommended)\n" +msgstr "" +" PGPASSWORD\n" +" 连接口令(不推荐)\n" + +#: help.c:496 +#, c-format +msgid "" +" PGPORT\n" +" same as the port connection parameter\n" +msgstr "" +" PGPORT\n" +" 与端口连接参数相同\n" + +#: help.c:498 +#, c-format +msgid "" +" PGUSER\n" +" same as the user connection parameter\n" +msgstr "" +" PGUSER\n" +" 与用户连接参数相同\n" + +#: help.c:500 +#, 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:502 +#, 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:504 +#, c-format +msgid "" +" PSQL_HISTORY\n" +" alternative location for the command history file\n" +msgstr "" +" PSQL_HISTORY\n" +" 命令历史文件的可选位置\n" + +#: help.c:506 +#, c-format +msgid "" +" PSQL_PAGER, PAGER\n" +" name of external pager program\n" +msgstr "" +" PSQL_PAGER, PAGER\n" +" 外部分页程序的名称\n" + +#: help.c:508 +#, c-format +msgid "" +" PSQLRC\n" +" alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC\n" +" 用户的.psqlrc文件的可选位置\n" + +#: help.c:510 +#, c-format +msgid "" +" SHELL\n" +" shell used by the \\! command\n" +msgstr "" +" SHELL\n" +" \\! 命令使用的shell\n" + +#: help.c:512 +#, c-format +msgid "" +" TMPDIR\n" +" directory for temporary files\n" +msgstr "" +" TMPDIR\n" +" 临时文件的目录\n" + +#: help.c:557 +msgid "Available help:\n" +msgstr "可用的说明:\n" + +#: help.c:652 +#, 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:675 +#, 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 "您正在使用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" +" \\? 显示 pgsql 命令的说明\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 "已到达EOF,但未找到结束符\\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:516 sql_help.c:521 sql_help.c:526 +#: sql_help.c:531 sql_help.c:536 sql_help.c:590 sql_help.c:592 sql_help.c:594 +#: sql_help.c:596 sql_help.c:598 sql_help.c:601 sql_help.c:603 sql_help.c:606 +#: sql_help.c:617 sql_help.c:619 sql_help.c:661 sql_help.c:663 sql_help.c:665 +#: sql_help.c:668 sql_help.c:670 sql_help.c:672 sql_help.c:707 sql_help.c:711 +#: sql_help.c:715 sql_help.c:734 sql_help.c:737 sql_help.c:740 sql_help.c:769 +#: sql_help.c:781 sql_help.c:789 sql_help.c:792 sql_help.c:795 sql_help.c:810 +#: sql_help.c:813 sql_help.c:842 sql_help.c:847 sql_help.c:852 sql_help.c:857 +#: sql_help.c:862 sql_help.c:884 sql_help.c:886 sql_help.c:888 sql_help.c:890 +#: sql_help.c:893 sql_help.c:895 sql_help.c:937 sql_help.c:982 sql_help.c:987 +#: sql_help.c:992 sql_help.c:997 sql_help.c:1002 sql_help.c:1021 +#: sql_help.c:1032 sql_help.c:1034 sql_help.c:1053 sql_help.c:1063 +#: sql_help.c:1065 sql_help.c:1067 sql_help.c:1079 sql_help.c:1083 +#: sql_help.c:1085 sql_help.c:1097 sql_help.c:1099 sql_help.c:1101 +#: sql_help.c:1103 sql_help.c:1121 sql_help.c:1123 sql_help.c:1127 +#: sql_help.c:1131 sql_help.c:1135 sql_help.c:1138 sql_help.c:1139 +#: sql_help.c:1140 sql_help.c:1143 sql_help.c:1145 sql_help.c:1280 +#: sql_help.c:1282 sql_help.c:1285 sql_help.c:1288 sql_help.c:1290 +#: sql_help.c:1292 sql_help.c:1295 sql_help.c:1298 sql_help.c:1411 +#: sql_help.c:1413 sql_help.c:1415 sql_help.c:1418 sql_help.c:1439 +#: sql_help.c:1442 sql_help.c:1445 sql_help.c:1448 sql_help.c:1452 +#: sql_help.c:1454 sql_help.c:1456 sql_help.c:1458 sql_help.c:1472 +#: sql_help.c:1475 sql_help.c:1477 sql_help.c:1479 sql_help.c:1489 +#: sql_help.c:1491 sql_help.c:1501 sql_help.c:1503 sql_help.c:1513 +#: sql_help.c:1516 sql_help.c:1539 sql_help.c:1541 sql_help.c:1543 +#: sql_help.c:1545 sql_help.c:1548 sql_help.c:1550 sql_help.c:1553 +#: sql_help.c:1556 sql_help.c:1607 sql_help.c:1650 sql_help.c:1653 +#: sql_help.c:1655 sql_help.c:1657 sql_help.c:1660 sql_help.c:1662 +#: sql_help.c:1664 sql_help.c:1667 sql_help.c:1717 sql_help.c:1733 +#: sql_help.c:1964 sql_help.c:2033 sql_help.c:2052 sql_help.c:2065 +#: sql_help.c:2122 sql_help.c:2129 sql_help.c:2139 sql_help.c:2160 +#: sql_help.c:2186 sql_help.c:2204 sql_help.c:2231 sql_help.c:2328 +#: sql_help.c:2374 sql_help.c:2398 sql_help.c:2421 sql_help.c:2425 +#: sql_help.c:2459 sql_help.c:2479 sql_help.c:2501 sql_help.c:2515 +#: sql_help.c:2536 sql_help.c:2560 sql_help.c:2590 sql_help.c:2615 +#: sql_help.c:2662 sql_help.c:2950 sql_help.c:2963 sql_help.c:2980 +#: sql_help.c:2996 sql_help.c:3036 sql_help.c:3090 sql_help.c:3094 +#: sql_help.c:3096 sql_help.c:3103 sql_help.c:3122 sql_help.c:3149 +#: sql_help.c:3184 sql_help.c:3196 sql_help.c:3205 sql_help.c:3249 +#: sql_help.c:3263 sql_help.c:3291 sql_help.c:3299 sql_help.c:3311 +#: sql_help.c:3321 sql_help.c:3329 sql_help.c:3337 sql_help.c:3345 +#: sql_help.c:3353 sql_help.c:3362 sql_help.c:3373 sql_help.c:3381 +#: sql_help.c:3389 sql_help.c:3397 sql_help.c:3405 sql_help.c:3415 +#: sql_help.c:3424 sql_help.c:3433 sql_help.c:3441 sql_help.c:3451 +#: sql_help.c:3462 sql_help.c:3470 sql_help.c:3479 sql_help.c:3490 +#: sql_help.c:3499 sql_help.c:3507 sql_help.c:3515 sql_help.c:3523 +#: sql_help.c:3531 sql_help.c:3539 sql_help.c:3547 sql_help.c:3555 +#: sql_help.c:3563 sql_help.c:3571 sql_help.c:3579 sql_help.c:3596 +#: sql_help.c:3605 sql_help.c:3613 sql_help.c:3630 sql_help.c:3645 +#: sql_help.c:3947 sql_help.c:3998 sql_help.c:4027 sql_help.c:4042 +#: sql_help.c:4527 sql_help.c:4575 sql_help.c:4726 +msgid "name" +msgstr "名称" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:327 sql_help.c:1814 +#: sql_help.c:3264 sql_help.c:4303 +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:525 sql_help.c:573 +#: sql_help.c:591 sql_help.c:618 sql_help.c:669 sql_help.c:736 sql_help.c:791 +#: sql_help.c:812 sql_help.c:851 sql_help.c:896 sql_help.c:938 sql_help.c:991 +#: sql_help.c:1023 sql_help.c:1033 sql_help.c:1066 sql_help.c:1086 +#: sql_help.c:1100 sql_help.c:1146 sql_help.c:1289 sql_help.c:1412 +#: sql_help.c:1455 sql_help.c:1476 sql_help.c:1490 sql_help.c:1502 +#: sql_help.c:1515 sql_help.c:1542 sql_help.c:1608 sql_help.c:1661 +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:530 sql_help.c:620 +#: sql_help.c:629 sql_help.c:690 sql_help.c:710 sql_help.c:739 sql_help.c:794 +#: sql_help.c:856 sql_help.c:894 sql_help.c:996 sql_help.c:1035 sql_help.c:1064 +#: sql_help.c:1084 sql_help.c:1098 sql_help.c:1144 sql_help.c:1352 +#: sql_help.c:1414 sql_help.c:1457 sql_help.c:1478 sql_help.c:1540 +#: sql_help.c:1656 sql_help.c:2936 +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:535 sql_help.c:671 sql_help.c:714 sql_help.c:742 +#: sql_help.c:797 sql_help.c:861 sql_help.c:1001 sql_help.c:1068 +#: sql_help.c:1102 sql_help.c:1291 sql_help.c:1459 sql_help.c:1480 +#: sql_help.c:1492 sql_help.c:1504 sql_help.c:1544 sql_help.c:1663 +msgid "new_schema" +msgstr "新的模式" + +#: sql_help.c:44 sql_help.c:1878 sql_help.c:3265 sql_help.c:4332 +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:517 +#: sql_help.c:522 sql_help.c:527 sql_help.c:532 sql_help.c:537 sql_help.c:843 +#: sql_help.c:848 sql_help.c:853 sql_help.c:858 sql_help.c:863 sql_help.c:983 +#: sql_help.c:988 sql_help.c:993 sql_help.c:998 sql_help.c:1003 sql_help.c:1832 +#: sql_help.c:1849 sql_help.c:1855 sql_help.c:1879 sql_help.c:1882 +#: sql_help.c:1885 sql_help.c:2034 sql_help.c:2053 sql_help.c:2056 +#: sql_help.c:2329 sql_help.c:2537 sql_help.c:3266 sql_help.c:3269 +#: sql_help.c:3272 sql_help.c:3363 sql_help.c:3452 sql_help.c:3480 +#: sql_help.c:3825 sql_help.c:4205 sql_help.c:4309 sql_help.c:4316 +#: sql_help.c:4322 sql_help.c:4333 sql_help.c:4336 sql_help.c:4339 +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:518 +#: sql_help.c:523 sql_help.c:528 sql_help.c:533 sql_help.c:538 sql_help.c:844 +#: sql_help.c:849 sql_help.c:854 sql_help.c:859 sql_help.c:864 sql_help.c:984 +#: sql_help.c:989 sql_help.c:994 sql_help.c:999 sql_help.c:1004 sql_help.c:1833 +#: sql_help.c:1850 sql_help.c:1856 sql_help.c:1880 sql_help.c:1883 +#: sql_help.c:1886 sql_help.c:2035 sql_help.c:2054 sql_help.c:2057 +#: sql_help.c:2330 sql_help.c:2538 sql_help.c:3267 sql_help.c:3270 +#: sql_help.c:3273 sql_help.c:3364 sql_help.c:3453 sql_help.c:3481 +#: sql_help.c:4310 sql_help.c:4317 sql_help.c:4323 sql_help.c:4334 +#: sql_help.c:4337 sql_help.c:4340 +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:519 +#: sql_help.c:524 sql_help.c:529 sql_help.c:534 sql_help.c:539 sql_help.c:845 +#: sql_help.c:850 sql_help.c:855 sql_help.c:860 sql_help.c:865 sql_help.c:985 +#: sql_help.c:990 sql_help.c:995 sql_help.c:1000 sql_help.c:1005 +#: sql_help.c:1834 sql_help.c:1851 sql_help.c:1857 sql_help.c:1881 +#: sql_help.c:1884 sql_help.c:1887 sql_help.c:2331 sql_help.c:2539 +#: sql_help.c:3268 sql_help.c:3271 sql_help.c:3274 sql_help.c:3365 +#: sql_help.c:3454 sql_help.c:3482 sql_help.c:4311 sql_help.c:4318 +#: sql_help.c:4324 sql_help.c:4335 sql_help.c:4338 sql_help.c:4341 +msgid "argtype" +msgstr "参数类型" + +#: sql_help.c:112 sql_help.c:394 sql_help.c:471 sql_help.c:483 sql_help.c:932 +#: sql_help.c:1081 sql_help.c:1473 sql_help.c:1602 sql_help.c:1634 +#: sql_help.c:1686 sql_help.c:1749 sql_help.c:1935 sql_help.c:1942 +#: sql_help.c:2234 sql_help.c:2276 sql_help.c:2283 sql_help.c:2292 +#: sql_help.c:2375 sql_help.c:2591 sql_help.c:2684 sql_help.c:2965 +#: sql_help.c:3150 sql_help.c:3172 sql_help.c:3312 sql_help.c:3667 +#: sql_help.c:3866 sql_help.c:4041 sql_help.c:4789 +msgid "option" +msgstr "选项" + +#: sql_help.c:113 sql_help.c:933 sql_help.c:1603 sql_help.c:2376 +#: sql_help.c:2592 sql_help.c:3151 sql_help.c:3313 +msgid "where option can be:" +msgstr "选项可以是" + +#: sql_help.c:114 sql_help.c:2168 +msgid "allowconn" +msgstr "allowconn" + +#: sql_help.c:115 sql_help.c:934 sql_help.c:1604 sql_help.c:2169 +#: sql_help.c:2377 sql_help.c:2593 sql_help.c:3152 +msgid "connlimit" +msgstr "连接限制" + +#: sql_help.c:116 sql_help.c:2170 +msgid "istemplate" +msgstr "istemplate" + +#: sql_help.c:122 sql_help.c:608 sql_help.c:674 sql_help.c:1294 sql_help.c:1345 +#: sql_help.c:4045 +msgid "new_tablespace" +msgstr "新的表空间" + +#: 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:868 sql_help.c:870 sql_help.c:871 sql_help.c:941 +#: sql_help.c:945 sql_help.c:948 sql_help.c:1010 sql_help.c:1012 +#: sql_help.c:1013 sql_help.c:1157 sql_help.c:1160 sql_help.c:1611 +#: sql_help.c:1615 sql_help.c:1618 sql_help.c:2341 sql_help.c:2543 +#: sql_help.c:4063 sql_help.c:4516 +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:546 sql_help.c:600 sql_help.c:680 sql_help.c:688 sql_help.c:869 +#: sql_help.c:892 sql_help.c:942 sql_help.c:1011 sql_help.c:1082 +#: sql_help.c:1126 sql_help.c:1130 sql_help.c:1134 sql_help.c:1137 +#: sql_help.c:1142 sql_help.c:1158 sql_help.c:1159 sql_help.c:1325 +#: sql_help.c:1347 sql_help.c:1395 sql_help.c:1417 sql_help.c:1474 +#: sql_help.c:1558 sql_help.c:1612 sql_help.c:1635 sql_help.c:2235 +#: sql_help.c:2277 sql_help.c:2284 sql_help.c:2293 sql_help.c:2342 +#: sql_help.c:2343 sql_help.c:2406 sql_help.c:2409 sql_help.c:2443 +#: sql_help.c:2544 sql_help.c:2545 sql_help.c:2563 sql_help.c:2685 +#: sql_help.c:2724 sql_help.c:2830 sql_help.c:2843 sql_help.c:2857 +#: sql_help.c:2898 sql_help.c:2922 sql_help.c:2939 sql_help.c:2966 +#: sql_help.c:3173 sql_help.c:3867 sql_help.c:4517 sql_help.c:4518 +msgid "value" +msgstr "值" + +#: sql_help.c:197 +msgid "target_role" +msgstr "目标角色" + +#: sql_help.c:198 sql_help.c:2219 sql_help.c:2640 sql_help.c:2645 +#: sql_help.c:3800 sql_help.c:3809 sql_help.c:3828 sql_help.c:3837 +#: sql_help.c:4180 sql_help.c:4189 sql_help.c:4208 sql_help.c:4217 +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:571 sql_help.c:607 sql_help.c:673 sql_help.c:815 sql_help.c:952 +#: sql_help.c:1293 sql_help.c:1622 sql_help.c:2380 sql_help.c:2381 +#: sql_help.c:2382 sql_help.c:2383 sql_help.c:2384 sql_help.c:2517 +#: sql_help.c:2596 sql_help.c:2597 sql_help.c:2598 sql_help.c:2599 +#: sql_help.c:2600 sql_help.c:3155 sql_help.c:3156 sql_help.c:3157 +#: sql_help.c:3158 sql_help.c:3159 sql_help.c:3846 sql_help.c:3850 +#: sql_help.c:4226 sql_help.c:4230 sql_help.c:4537 +msgid "role_name" +msgstr "角色名称" + +#: sql_help.c:236 sql_help.c:459 sql_help.c:1309 sql_help.c:1311 +#: sql_help.c:1362 sql_help.c:1374 sql_help.c:1399 sql_help.c:1652 +#: sql_help.c:2189 sql_help.c:2193 sql_help.c:2296 sql_help.c:2301 +#: sql_help.c:2402 sql_help.c:2701 sql_help.c:2706 sql_help.c:2708 +#: sql_help.c:2825 sql_help.c:2838 sql_help.c:2852 sql_help.c:2861 +#: sql_help.c:2873 sql_help.c:2902 sql_help.c:3898 sql_help.c:3913 +#: sql_help.c:3915 sql_help.c:4394 sql_help.c:4395 sql_help.c:4404 +#: sql_help.c:4446 sql_help.c:4447 sql_help.c:4448 sql_help.c:4449 +#: sql_help.c:4450 sql_help.c:4451 sql_help.c:4491 sql_help.c:4492 +#: sql_help.c:4497 sql_help.c:4502 sql_help.c:4643 sql_help.c:4644 +#: sql_help.c:4653 sql_help.c:4695 sql_help.c:4696 sql_help.c:4697 +#: sql_help.c:4698 sql_help.c:4699 sql_help.c:4700 sql_help.c:4754 +#: sql_help.c:4756 sql_help.c:4816 sql_help.c:4874 sql_help.c:4875 +#: sql_help.c:4884 sql_help.c:4926 sql_help.c:4927 sql_help.c:4928 +#: sql_help.c:4929 sql_help.c:4930 sql_help.c:4931 +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:1286 sql_help.c:1333 sql_help.c:1334 sql_help.c:1335 +#: sql_help.c:1361 sql_help.c:1373 sql_help.c:1390 sql_help.c:1820 +#: sql_help.c:1822 sql_help.c:2192 sql_help.c:2295 sql_help.c:2300 +#: sql_help.c:2860 sql_help.c:2872 sql_help.c:3910 +msgid "constraint_name" +msgstr "约束名称" + +#: sql_help.c:244 sql_help.c:1287 +msgid "new_constraint_name" +msgstr "new_constraint_name(新约束名)" + +#: sql_help.c:317 sql_help.c:1080 +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:1812 sql_help.c:1817 sql_help.c:1824 +#: sql_help.c:1825 sql_help.c:1826 sql_help.c:1827 sql_help.c:1828 +#: sql_help.c:1829 sql_help.c:1830 sql_help.c:1835 sql_help.c:1837 +#: sql_help.c:1841 sql_help.c:1843 sql_help.c:1847 sql_help.c:1852 +#: sql_help.c:1853 sql_help.c:1860 sql_help.c:1861 sql_help.c:1862 +#: sql_help.c:1863 sql_help.c:1864 sql_help.c:1865 sql_help.c:1866 +#: sql_help.c:1867 sql_help.c:1868 sql_help.c:1869 sql_help.c:1870 +#: sql_help.c:1875 sql_help.c:1876 sql_help.c:4299 sql_help.c:4304 +#: sql_help.c:4305 sql_help.c:4306 sql_help.c:4307 sql_help.c:4313 +#: sql_help.c:4314 sql_help.c:4319 sql_help.c:4320 sql_help.c:4325 +#: sql_help.c:4326 sql_help.c:4327 sql_help.c:4328 sql_help.c:4329 +#: sql_help.c:4330 +msgid "object_name" +msgstr "对象_名称" + +#: sql_help.c:326 sql_help.c:1813 sql_help.c:4302 +msgid "aggregate_name" +msgstr "aggregate_name" + +#: sql_help.c:328 sql_help.c:1815 sql_help.c:2099 sql_help.c:2103 +#: sql_help.c:2105 sql_help.c:3282 +msgid "source_type" +msgstr "类型指派中的源数据类型" + +#: sql_help.c:329 sql_help.c:1816 sql_help.c:2100 sql_help.c:2104 +#: sql_help.c:2106 sql_help.c:3283 +msgid "target_type" +msgstr "类型指派中的目标数据类型" + +#: sql_help.c:336 sql_help.c:779 sql_help.c:1831 sql_help.c:2101 +#: sql_help.c:2142 sql_help.c:2207 sql_help.c:2460 sql_help.c:2491 +#: sql_help.c:3042 sql_help.c:4204 sql_help.c:4308 sql_help.c:4423 +#: sql_help.c:4427 sql_help.c:4431 sql_help.c:4434 sql_help.c:4672 +#: sql_help.c:4676 sql_help.c:4680 sql_help.c:4683 sql_help.c:4903 +#: sql_help.c:4907 sql_help.c:4911 sql_help.c:4914 +msgid "function_name" +msgstr "函数名称" + +#: sql_help.c:341 sql_help.c:772 sql_help.c:1838 sql_help.c:2484 +msgid "operator_name" +msgstr "操作符名称" + +#: sql_help.c:342 sql_help.c:708 sql_help.c:712 sql_help.c:716 sql_help.c:1839 +#: sql_help.c:2461 sql_help.c:3406 +msgid "left_type" +msgstr "操作符左边操作数的类型" + +#: sql_help.c:343 sql_help.c:709 sql_help.c:713 sql_help.c:717 sql_help.c:1840 +#: sql_help.c:2462 sql_help.c:3407 +msgid "right_type" +msgstr "操作符右边操作数的类型" + +#: sql_help.c:345 sql_help.c:347 sql_help.c:735 sql_help.c:738 sql_help.c:741 +#: sql_help.c:770 sql_help.c:782 sql_help.c:790 sql_help.c:793 sql_help.c:796 +#: sql_help.c:1379 sql_help.c:1842 sql_help.c:1844 sql_help.c:2481 +#: sql_help.c:2502 sql_help.c:2878 sql_help.c:3416 sql_help.c:3425 +msgid "index_method" +msgstr "访问索引的方法" + +#: sql_help.c:349 sql_help.c:1848 sql_help.c:4315 +msgid "procedure_name" +msgstr "程序名称 " + +#: sql_help.c:353 sql_help.c:1854 sql_help.c:3824 sql_help.c:4321 +msgid "routine_name" +msgstr "程序名称" + +#: sql_help.c:365 sql_help.c:1351 sql_help.c:1871 sql_help.c:2337 +#: sql_help.c:2542 sql_help.c:2833 sql_help.c:3009 sql_help.c:3587 +#: sql_help.c:3843 sql_help.c:4223 +msgid "type_name" +msgstr "类型名称" + +#: sql_help.c:366 sql_help.c:1872 sql_help.c:2336 sql_help.c:2541 +#: sql_help.c:3010 sql_help.c:3240 sql_help.c:3588 sql_help.c:3831 +#: sql_help.c:4211 +msgid "lang_name" +msgstr "语言名称" + +#: sql_help.c:369 +msgid "and aggregate_signature is:" +msgstr "aggregate_signature指的是:" + +#: sql_help.c:392 sql_help.c:1966 sql_help.c:2232 +msgid "handler_function" +msgstr "handler_function(处理_函数)" + +#: sql_help.c:393 sql_help.c:2233 +msgid "validator_function" +msgstr "validator_function(验证_函数)" + +#: sql_help.c:441 sql_help.c:520 sql_help.c:662 sql_help.c:846 sql_help.c:986 +#: sql_help.c:1281 sql_help.c:1549 +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:666 sql_help.c:676 sql_help.c:678 +#: sql_help.c:681 sql_help.c:683 sql_help.c:684 sql_help.c:1062 sql_help.c:1283 +#: sql_help.c:1301 sql_help.c:1305 sql_help.c:1306 sql_help.c:1310 +#: sql_help.c:1312 sql_help.c:1313 sql_help.c:1314 sql_help.c:1315 +#: sql_help.c:1317 sql_help.c:1320 sql_help.c:1321 sql_help.c:1323 +#: sql_help.c:1326 sql_help.c:1328 sql_help.c:1329 sql_help.c:1375 +#: sql_help.c:1377 sql_help.c:1384 sql_help.c:1393 sql_help.c:1398 +#: sql_help.c:1651 sql_help.c:1654 sql_help.c:1658 sql_help.c:1694 +#: sql_help.c:1819 sql_help.c:1932 sql_help.c:1938 sql_help.c:1951 +#: sql_help.c:1952 sql_help.c:1953 sql_help.c:2274 sql_help.c:2287 +#: sql_help.c:2334 sql_help.c:2401 sql_help.c:2407 sql_help.c:2440 +#: sql_help.c:2670 sql_help.c:2705 sql_help.c:2707 sql_help.c:2815 +#: sql_help.c:2824 sql_help.c:2834 sql_help.c:2837 sql_help.c:2847 +#: sql_help.c:2851 sql_help.c:2874 sql_help.c:2876 sql_help.c:2883 +#: sql_help.c:2896 sql_help.c:2901 sql_help.c:2919 sql_help.c:3045 +#: sql_help.c:3185 sql_help.c:3803 sql_help.c:3804 sql_help.c:3897 +#: sql_help.c:3912 sql_help.c:3914 sql_help.c:3916 sql_help.c:4183 +#: sql_help.c:4184 sql_help.c:4301 sql_help.c:4455 sql_help.c:4461 +#: sql_help.c:4463 sql_help.c:4704 sql_help.c:4710 sql_help.c:4712 +#: sql_help.c:4753 sql_help.c:4755 sql_help.c:4757 sql_help.c:4804 +#: sql_help.c:4935 sql_help.c:4941 sql_help.c:4943 +msgid "column_name" +msgstr "列名称" + +#: sql_help.c:444 sql_help.c:667 sql_help.c:1284 sql_help.c:1659 +msgid "new_column_name" +msgstr "new_column_name(新列名)" + +#: sql_help.c:449 sql_help.c:541 sql_help.c:675 sql_help.c:867 sql_help.c:1007 +#: sql_help.c:1300 sql_help.c:1559 +msgid "where action is one of:" +msgstr "操作可以是下列选项之一" + +#: sql_help.c:451 sql_help.c:456 sql_help.c:1054 sql_help.c:1302 +#: sql_help.c:1307 sql_help.c:1561 sql_help.c:1565 sql_help.c:2187 +#: sql_help.c:2275 sql_help.c:2480 sql_help.c:2663 sql_help.c:2816 +#: sql_help.c:3092 sql_help.c:3999 +msgid "data_type" +msgstr "数据_类型" + +#: sql_help.c:452 sql_help.c:457 sql_help.c:1303 sql_help.c:1308 +#: sql_help.c:1562 sql_help.c:1566 sql_help.c:2188 sql_help.c:2278 +#: sql_help.c:2403 sql_help.c:2818 sql_help.c:2826 sql_help.c:2839 +#: sql_help.c:2853 sql_help.c:3093 sql_help.c:3099 sql_help.c:3907 +msgid "collation" +msgstr "校对规则" + +#: sql_help.c:453 sql_help.c:1304 sql_help.c:2279 sql_help.c:2288 +#: sql_help.c:2819 sql_help.c:2835 sql_help.c:2848 +msgid "column_constraint" +msgstr "列约束" + +#: sql_help.c:463 sql_help.c:605 sql_help.c:677 sql_help.c:1322 sql_help.c:4801 +msgid "integer" +msgstr "整数" + +#: sql_help.c:465 sql_help.c:468 sql_help.c:679 sql_help.c:682 sql_help.c:1324 +#: sql_help.c:1327 +msgid "attribute_option" +msgstr "属性选项" + +#: sql_help.c:473 sql_help.c:1331 sql_help.c:2280 sql_help.c:2289 +#: sql_help.c:2820 sql_help.c:2836 sql_help.c:2849 +msgid "table_constraint" +msgstr "表约束" + +#: sql_help.c:476 sql_help.c:477 sql_help.c:478 sql_help.c:479 sql_help.c:1336 +#: sql_help.c:1337 sql_help.c:1338 sql_help.c:1339 sql_help.c:1873 +msgid "trigger_name" +msgstr "触发器_名称" + +#: sql_help.c:480 sql_help.c:481 sql_help.c:1349 sql_help.c:1350 +#: sql_help.c:2281 sql_help.c:2286 sql_help.c:2823 sql_help.c:2846 +msgid "parent_table" +msgstr "父表" + +#: sql_help.c:540 sql_help.c:597 sql_help.c:664 sql_help.c:866 sql_help.c:1006 +#: sql_help.c:1518 sql_help.c:2218 +msgid "extension_name" +msgstr "extension_name(扩展名)" + +#: sql_help.c:542 sql_help.c:1008 sql_help.c:2338 +msgid "execution_cost" +msgstr "执行函数的开销" + +#: sql_help.c:543 sql_help.c:1009 sql_help.c:2339 +msgid "result_rows" +msgstr "返回记录的数量" + +#: sql_help.c:544 sql_help.c:2340 +msgid "support_function" +msgstr "支持_函数" + +#: sql_help.c:566 sql_help.c:568 sql_help.c:931 sql_help.c:939 sql_help.c:943 +#: sql_help.c:946 sql_help.c:949 sql_help.c:1601 sql_help.c:1609 +#: sql_help.c:1613 sql_help.c:1616 sql_help.c:1619 sql_help.c:2641 +#: sql_help.c:2643 sql_help.c:2646 sql_help.c:2647 sql_help.c:3801 +#: sql_help.c:3802 sql_help.c:3806 sql_help.c:3807 sql_help.c:3810 +#: sql_help.c:3811 sql_help.c:3813 sql_help.c:3814 sql_help.c:3816 +#: sql_help.c:3817 sql_help.c:3819 sql_help.c:3820 sql_help.c:3822 +#: sql_help.c:3823 sql_help.c:3829 sql_help.c:3830 sql_help.c:3832 +#: sql_help.c:3833 sql_help.c:3835 sql_help.c:3836 sql_help.c:3838 +#: sql_help.c:3839 sql_help.c:3841 sql_help.c:3842 sql_help.c:3844 +#: sql_help.c:3845 sql_help.c:3847 sql_help.c:3848 sql_help.c:4181 +#: sql_help.c:4182 sql_help.c:4186 sql_help.c:4187 sql_help.c:4190 +#: sql_help.c:4191 sql_help.c:4193 sql_help.c:4194 sql_help.c:4196 +#: sql_help.c:4197 sql_help.c:4199 sql_help.c:4200 sql_help.c:4202 +#: sql_help.c:4203 sql_help.c:4209 sql_help.c:4210 sql_help.c:4212 +#: sql_help.c:4213 sql_help.c:4215 sql_help.c:4216 sql_help.c:4218 +#: sql_help.c:4219 sql_help.c:4221 sql_help.c:4222 sql_help.c:4224 +#: sql_help.c:4225 sql_help.c:4227 sql_help.c:4228 +msgid "role_specification" +msgstr "role_specification" + +#: sql_help.c:567 sql_help.c:569 sql_help.c:1632 sql_help.c:2161 +#: sql_help.c:2649 sql_help.c:3170 sql_help.c:3621 sql_help.c:4547 +msgid "user_name" +msgstr "用户名" + +#: sql_help.c:570 sql_help.c:951 sql_help.c:1621 sql_help.c:2648 +#: sql_help.c:3849 sql_help.c:4229 +msgid "where role_specification can be:" +msgstr "这里role_specification可以是:" + +#: sql_help.c:572 +msgid "group_name" +msgstr "组名称" + +#: sql_help.c:593 sql_help.c:1396 sql_help.c:2167 sql_help.c:2410 +#: sql_help.c:2444 sql_help.c:2831 sql_help.c:2844 sql_help.c:2858 +#: sql_help.c:2899 sql_help.c:2923 sql_help.c:2935 sql_help.c:3840 +#: sql_help.c:4220 +msgid "tablespace_name" +msgstr "表空间的名称" + +#: sql_help.c:595 sql_help.c:686 sql_help.c:1344 sql_help.c:1353 +#: sql_help.c:1391 sql_help.c:1748 sql_help.c:1751 +msgid "index_name" +msgstr "索引名称" + +#: sql_help.c:599 sql_help.c:602 sql_help.c:687 sql_help.c:689 sql_help.c:1346 +#: sql_help.c:1348 sql_help.c:1394 sql_help.c:2408 sql_help.c:2442 +#: sql_help.c:2829 sql_help.c:2842 sql_help.c:2856 sql_help.c:2897 +#: sql_help.c:2921 +msgid "storage_parameter" +msgstr "存储参数" + +#: sql_help.c:604 +msgid "column_number" +msgstr "列数" + +#: sql_help.c:628 sql_help.c:1836 sql_help.c:4312 +msgid "large_object_oid" +msgstr "大对象的OID" + +#: sql_help.c:685 sql_help.c:1330 sql_help.c:2817 +msgid "compression_method" +msgstr "压缩方法" + +#: sql_help.c:718 sql_help.c:2465 +msgid "res_proc" +msgstr "限制选择性估算函数" + +#: sql_help.c:719 sql_help.c:2466 +msgid "join_proc" +msgstr "连接选择性估算函数" + +#: sql_help.c:771 sql_help.c:783 sql_help.c:2483 +msgid "strategy_number" +msgstr "访问索引所用方法的编号" + +#: sql_help.c:773 sql_help.c:774 sql_help.c:777 sql_help.c:778 sql_help.c:784 +#: sql_help.c:785 sql_help.c:787 sql_help.c:788 sql_help.c:2485 sql_help.c:2486 +#: sql_help.c:2489 sql_help.c:2490 +msgid "op_type" +msgstr "操作数类型" + +#: sql_help.c:775 sql_help.c:2487 +msgid "sort_family_name" +msgstr "sort_family_name(排序家族名)" + +#: sql_help.c:776 sql_help.c:786 sql_help.c:2488 +msgid "support_number" +msgstr "访问索引所使用函数的编号" + +#: sql_help.c:780 sql_help.c:2102 sql_help.c:2492 sql_help.c:3012 +#: sql_help.c:3014 +msgid "argument_type" +msgstr "参数类型" + +#: sql_help.c:811 sql_help.c:814 sql_help.c:885 sql_help.c:887 sql_help.c:889 +#: sql_help.c:1022 sql_help.c:1061 sql_help.c:1514 sql_help.c:1517 +#: sql_help.c:1693 sql_help.c:1747 sql_help.c:1750 sql_help.c:1821 +#: sql_help.c:1846 sql_help.c:1859 sql_help.c:1874 sql_help.c:1931 +#: sql_help.c:1937 sql_help.c:2273 sql_help.c:2285 sql_help.c:2399 +#: sql_help.c:2439 sql_help.c:2516 sql_help.c:2561 sql_help.c:2617 +#: sql_help.c:2669 sql_help.c:2702 sql_help.c:2709 sql_help.c:2814 +#: sql_help.c:2832 sql_help.c:2845 sql_help.c:2918 sql_help.c:3038 +#: sql_help.c:3219 sql_help.c:3442 sql_help.c:3491 sql_help.c:3597 +#: sql_help.c:3799 sql_help.c:3805 sql_help.c:3863 sql_help.c:3895 +#: sql_help.c:4179 sql_help.c:4185 sql_help.c:4300 sql_help.c:4409 +#: sql_help.c:4411 sql_help.c:4468 sql_help.c:4507 sql_help.c:4658 +#: sql_help.c:4660 sql_help.c:4717 sql_help.c:4751 sql_help.c:4803 +#: sql_help.c:4889 sql_help.c:4891 sql_help.c:4948 +msgid "table_name" +msgstr "表名" + +#: sql_help.c:816 sql_help.c:2518 +msgid "using_expression" +msgstr "使用表达式" + +#: sql_help.c:817 sql_help.c:2519 +msgid "check_expression" +msgstr "检查表达式" + +#: sql_help.c:891 sql_help.c:2562 +msgid "publication_parameter" +msgstr "发布参数" + +#: sql_help.c:935 sql_help.c:1605 sql_help.c:2378 sql_help.c:2594 +#: sql_help.c:3153 +msgid "password" +msgstr "口令" + +#: sql_help.c:936 sql_help.c:1606 sql_help.c:2379 sql_help.c:2595 +#: sql_help.c:3154 +msgid "timestamp" +msgstr "时间戳" + +#: sql_help.c:940 sql_help.c:944 sql_help.c:947 sql_help.c:950 sql_help.c:1610 +#: sql_help.c:1614 sql_help.c:1617 sql_help.c:1620 sql_help.c:3812 +#: sql_help.c:4192 +msgid "database_name" +msgstr "数据库名称" + +#: sql_help.c:1055 sql_help.c:2664 +msgid "increment" +msgstr "增量" + +#: sql_help.c:1056 sql_help.c:2665 +msgid "minvalue" +msgstr "最小值" + +#: sql_help.c:1057 sql_help.c:2666 +msgid "maxvalue" +msgstr "最大值" + +#: sql_help.c:1058 sql_help.c:2667 sql_help.c:4407 sql_help.c:4505 +#: sql_help.c:4656 sql_help.c:4820 sql_help.c:4887 +msgid "start" +msgstr "起始值" + +#: sql_help.c:1059 sql_help.c:1319 +msgid "restart" +msgstr "重新启动后的序列值" + +#: sql_help.c:1060 sql_help.c:2668 +msgid "cache" +msgstr "缓存" + +#: sql_help.c:1104 +msgid "new_target" +msgstr "新目标" + +#: sql_help.c:1122 sql_help.c:2721 +msgid "conninfo" +msgstr "连接信息" + +#: sql_help.c:1124 sql_help.c:1128 sql_help.c:1132 sql_help.c:2722 +msgid "publication_name" +msgstr "发布名" + +#: sql_help.c:1125 sql_help.c:1129 sql_help.c:1133 +msgid "publication_option" +msgstr "发布选项" + +#: sql_help.c:1136 +msgid "refresh_option" +msgstr "refresh选项" + +#: sql_help.c:1141 sql_help.c:2723 +msgid "subscription_parameter" +msgstr "订阅参数" + +#: sql_help.c:1296 sql_help.c:1299 +msgid "partition_name" +msgstr "分区名" + +#: sql_help.c:1297 sql_help.c:2290 sql_help.c:2850 +msgid "partition_bound_spec" +msgstr "分区绑定规范" + +#: sql_help.c:1316 sql_help.c:1365 sql_help.c:2864 +msgid "sequence_options" +msgstr "序列选项" + +#: sql_help.c:1318 +msgid "sequence_option" +msgstr "序列选项" + +#: sql_help.c:1332 +msgid "table_constraint_using_index" +msgstr "table_constraint_using_index(表约束使用索引)" + +#: sql_help.c:1340 sql_help.c:1341 sql_help.c:1342 sql_help.c:1343 +msgid "rewrite_rule_name" +msgstr "重写规则名称" + +#: sql_help.c:1354 sql_help.c:2889 +msgid "and partition_bound_spec is:" +msgstr "并且分区绑定的规范是:" + +#: sql_help.c:1355 sql_help.c:1356 sql_help.c:1357 sql_help.c:2890 +#: sql_help.c:2891 sql_help.c:2892 +msgid "partition_bound_expr" +msgstr "分区_绑定_表达式" + +#: sql_help.c:1358 sql_help.c:1359 sql_help.c:2893 sql_help.c:2894 +msgid "numeric_literal" +msgstr "数字_文字" + +#: sql_help.c:1360 +msgid "and column_constraint is:" +msgstr "并且列的约束是:" + +#: sql_help.c:1363 sql_help.c:2297 sql_help.c:2332 sql_help.c:2540 +#: sql_help.c:2862 +msgid "default_expr" +msgstr "默认_表达式" + +#: sql_help.c:1364 sql_help.c:2298 sql_help.c:2863 +msgid "generation_expr" +msgstr "生成表_达式" + +#: sql_help.c:1366 sql_help.c:1367 sql_help.c:1376 sql_help.c:1378 +#: sql_help.c:1382 sql_help.c:2865 sql_help.c:2866 sql_help.c:2875 +#: sql_help.c:2877 sql_help.c:2881 +msgid "index_parameters" +msgstr "索引参数" + +#: sql_help.c:1368 sql_help.c:1385 sql_help.c:2867 sql_help.c:2884 +msgid "reftable" +msgstr "所引用的表" + +#: sql_help.c:1369 sql_help.c:1386 sql_help.c:2868 sql_help.c:2885 +msgid "refcolumn" +msgstr "所引用的列" + +#: sql_help.c:1370 sql_help.c:1371 sql_help.c:1387 sql_help.c:1388 +#: sql_help.c:2869 sql_help.c:2870 sql_help.c:2886 sql_help.c:2887 +msgid "referential_action" +msgstr "参考_行动" + +#: sql_help.c:1372 sql_help.c:2299 sql_help.c:2871 +msgid "and table_constraint is:" +msgstr "表约束是:" + +#: sql_help.c:1380 sql_help.c:2879 +msgid "exclude_element" +msgstr "排除项" + +#: sql_help.c:1381 sql_help.c:2880 sql_help.c:4405 sql_help.c:4503 +#: sql_help.c:4654 sql_help.c:4818 sql_help.c:4885 +msgid "operator" +msgstr "运算子" + +#: sql_help.c:1383 sql_help.c:2411 sql_help.c:2882 +msgid "predicate" +msgstr "述词" + +#: sql_help.c:1389 +msgid "and table_constraint_using_index is:" +msgstr "table_constraint_using_index 是:" + +#: sql_help.c:1392 sql_help.c:2895 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "在UNIQUE, PRIMARY KEY和EXCLUDE中的索引参数是:" + +#: sql_help.c:1397 sql_help.c:2900 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "在EXCLUDE约束中的排除项是:" + +#: sql_help.c:1400 sql_help.c:2404 sql_help.c:2827 sql_help.c:2840 +#: sql_help.c:2854 sql_help.c:2903 sql_help.c:3908 +msgid "opclass" +msgstr "操作符类型的名称" + +#: sql_help.c:1416 sql_help.c:1419 sql_help.c:2938 +msgid "tablespace_option" +msgstr "表空间_选项" + +#: sql_help.c:1440 sql_help.c:1443 sql_help.c:1449 sql_help.c:1453 +msgid "token_type" +msgstr "符号类型" + +#: sql_help.c:1441 sql_help.c:1444 +msgid "dictionary_name" +msgstr "字典名称" + +#: sql_help.c:1446 sql_help.c:1450 +msgid "old_dictionary" +msgstr "旧的字典" + +#: sql_help.c:1447 sql_help.c:1451 +msgid "new_dictionary" +msgstr "新的字典" + +#: sql_help.c:1546 sql_help.c:1560 sql_help.c:1563 sql_help.c:1564 +#: sql_help.c:3091 +msgid "attribute_name" +msgstr "属性_名称" + +#: sql_help.c:1547 +msgid "new_attribute_name" +msgstr "new_attribute_name(新属性名)" + +#: sql_help.c:1551 sql_help.c:1555 +msgid "new_enum_value" +msgstr "new_enum_value(新枚举名)" + +#: sql_help.c:1552 +msgid "neighbor_enum_value" +msgstr "相邻的枚举值" + +#: sql_help.c:1554 +msgid "existing_enum_value" +msgstr "现有枚举值" + +#: sql_help.c:1557 +msgid "property" +msgstr "属性" + +#: sql_help.c:1633 sql_help.c:2282 sql_help.c:2291 sql_help.c:2680 +#: sql_help.c:3171 sql_help.c:3622 sql_help.c:3821 sql_help.c:3864 +#: sql_help.c:4201 +msgid "server_name" +msgstr "服务器名称" + +#: sql_help.c:1665 sql_help.c:1668 sql_help.c:3186 +msgid "view_option_name" +msgstr "view_option_name(视图选项名)" + +#: sql_help.c:1666 sql_help.c:3187 +msgid "view_option_value" +msgstr "view_option_value(视图选项值)" + +#: sql_help.c:1687 sql_help.c:1688 sql_help.c:4790 sql_help.c:4791 +msgid "table_and_columns" +msgstr "表和列" + +#: sql_help.c:1689 sql_help.c:1752 sql_help.c:1943 sql_help.c:3670 +#: sql_help.c:4043 sql_help.c:4792 +msgid "where option can be one of:" +msgstr "选项可以是下列内容之一:" + +#: sql_help.c:1690 sql_help.c:1691 sql_help.c:1753 sql_help.c:1945 +#: sql_help.c:1948 sql_help.c:2127 sql_help.c:3671 sql_help.c:3672 +#: sql_help.c:3673 sql_help.c:3674 sql_help.c:3675 sql_help.c:3676 +#: sql_help.c:3677 sql_help.c:3678 sql_help.c:4044 sql_help.c:4046 +#: sql_help.c:4793 sql_help.c:4794 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 "boolean" +msgstr "布尔" + +#: sql_help.c:1692 sql_help.c:4802 +msgid "and table_and_columns is:" +msgstr "并且表和列:" + +#: sql_help.c:1708 sql_help.c:4563 sql_help.c:4565 sql_help.c:4589 +msgid "transaction_mode" +msgstr "事务模式" + +#: sql_help.c:1709 sql_help.c:4566 sql_help.c:4590 +msgid "where transaction_mode is one of:" +msgstr "事务模式可以是下列选项之一:" + +#: sql_help.c:1718 sql_help.c:4415 sql_help.c:4424 sql_help.c:4428 +#: sql_help.c:4432 sql_help.c:4435 sql_help.c:4664 sql_help.c:4673 +#: sql_help.c:4677 sql_help.c:4681 sql_help.c:4684 sql_help.c:4895 +#: sql_help.c:4904 sql_help.c:4908 sql_help.c:4912 sql_help.c:4915 +msgid "argument" +msgstr "参数" + +#: sql_help.c:1818 +msgid "relation_name" +msgstr "relation_name(关系名)" + +#: sql_help.c:1823 sql_help.c:3815 sql_help.c:4195 +msgid "domain_name" +msgstr "域_名称" + +#: sql_help.c:1845 +msgid "policy_name" +msgstr "policy_name" + +#: sql_help.c:1858 +msgid "rule_name" +msgstr "规则_名称" + +#: sql_help.c:1877 +msgid "text" +msgstr "文本" + +#: sql_help.c:1902 sql_help.c:4008 sql_help.c:4245 +msgid "transaction_id" +msgstr "事务_ID" + +#: sql_help.c:1933 sql_help.c:1940 sql_help.c:3934 +msgid "filename" +msgstr "文件名" + +#: sql_help.c:1934 sql_help.c:1941 sql_help.c:2619 sql_help.c:2620 +#: sql_help.c:2621 +msgid "command" +msgstr "命令" + +#: sql_help.c:1936 sql_help.c:2618 sql_help.c:3041 sql_help.c:3222 +#: sql_help.c:3918 sql_help.c:4398 sql_help.c:4400 sql_help.c:4496 +#: sql_help.c:4498 sql_help.c:4647 sql_help.c:4649 sql_help.c:4760 +#: sql_help.c:4878 sql_help.c:4880 +msgid "condition" +msgstr "条件" + +#: sql_help.c:1939 sql_help.c:2445 sql_help.c:2924 sql_help.c:3188 +#: sql_help.c:3206 sql_help.c:3899 +msgid "query" +msgstr "查询" + +#: sql_help.c:1944 +msgid "format_name" +msgstr "格式_名称" + +#: sql_help.c:1946 +msgid "delimiter_character" +msgstr "分隔字符" + +#: sql_help.c:1947 +msgid "null_string" +msgstr "空字符串" + +#: sql_help.c:1949 +msgid "quote_character" +msgstr "引用字符" + +#: sql_help.c:1950 +msgid "escape_character" +msgstr "转义字符" + +#: sql_help.c:1954 +msgid "encoding_name" +msgstr "encoding_name(编码名)" + +#: sql_help.c:1965 +msgid "access_method_type" +msgstr "access_method_type" + +#: sql_help.c:2036 sql_help.c:2055 sql_help.c:2058 +msgid "arg_data_type" +msgstr "arg_data_type" + +#: sql_help.c:2037 sql_help.c:2059 sql_help.c:2067 +msgid "sfunc" +msgstr "状态转换函数名称" + +#: sql_help.c:2038 sql_help.c:2060 sql_help.c:2068 +msgid "state_data_type" +msgstr "状态值的数据类型" + +#: sql_help.c:2039 sql_help.c:2061 sql_help.c:2069 +msgid "state_data_size" +msgstr "state_data_size" + +#: sql_help.c:2040 sql_help.c:2062 sql_help.c:2070 +msgid "ffunc" +msgstr "计算最终结果集的函数名称" + +#: sql_help.c:2041 sql_help.c:2071 +msgid "combinefunc" +msgstr "combinefunc" + +#: sql_help.c:2042 sql_help.c:2072 +msgid "serialfunc" +msgstr "serialfunc" + +#: sql_help.c:2043 sql_help.c:2073 +msgid "deserialfunc" +msgstr "deserialfunc" + +#: sql_help.c:2044 sql_help.c:2063 sql_help.c:2074 +msgid "initial_condition" +msgstr "初始条件" + +#: sql_help.c:2045 sql_help.c:2075 +msgid "msfunc" +msgstr "msfunc" + +#: sql_help.c:2046 sql_help.c:2076 +msgid "minvfunc" +msgstr "minvfunc" + +#: sql_help.c:2047 sql_help.c:2077 +msgid "mstate_data_type" +msgstr "mstate_data_type" + +#: sql_help.c:2048 sql_help.c:2078 +msgid "mstate_data_size" +msgstr "mstate_data_size" + +#: sql_help.c:2049 sql_help.c:2079 +msgid "mffunc" +msgstr "mffunc" + +#: sql_help.c:2050 sql_help.c:2080 +msgid "minitial_condition" +msgstr "minitial_condition" + +#: sql_help.c:2051 sql_help.c:2081 +msgid "sort_operator" +msgstr "排序_操作符" + +#: sql_help.c:2064 +msgid "or the old syntax" +msgstr "或者是旧的语法" + +#: sql_help.c:2066 +msgid "base_type" +msgstr "基础_类型" + +#: sql_help.c:2123 sql_help.c:2164 +msgid "locale" +msgstr "本地化语言" + +#: sql_help.c:2124 sql_help.c:2165 +msgid "lc_collate" +msgstr "排序规则" + +#: sql_help.c:2125 sql_help.c:2166 +msgid "lc_ctype" +msgstr "字符分类" + +#: sql_help.c:2126 sql_help.c:4298 +msgid "provider" +msgstr "provider(提供者)" + +#: sql_help.c:2128 sql_help.c:2220 +msgid "version" +msgstr "version(版本)" + +#: sql_help.c:2130 +msgid "existing_collation" +msgstr "existing_collation(当前的本地化语言)" + +#: sql_help.c:2140 +msgid "source_encoding" +msgstr "源_编码" + +#: sql_help.c:2141 +msgid "dest_encoding" +msgstr "目的_编码" + +#: sql_help.c:2162 sql_help.c:2964 +msgid "template" +msgstr "模版" + +#: sql_help.c:2163 +msgid "encoding" +msgstr "字符集编码" + +#: sql_help.c:2190 +msgid "constraint" +msgstr "约束" + +#: sql_help.c:2191 +msgid "where constraint is:" +msgstr "约束是:" + +#: sql_help.c:2205 sql_help.c:2616 sql_help.c:3037 +msgid "event" +msgstr "事件" + +#: sql_help.c:2206 +msgid "filter_variable" +msgstr "过滤器变量" + +#: sql_help.c:2294 sql_help.c:2859 +msgid "where column_constraint is:" +msgstr "列的约束是:" + +#: sql_help.c:2333 +msgid "rettype" +msgstr "返回类型" + +#: sql_help.c:2335 +msgid "column_type" +msgstr "列的类型" + +#: sql_help.c:2344 sql_help.c:2546 +msgid "definition" +msgstr "定义" + +#: sql_help.c:2345 sql_help.c:2547 +msgid "obj_file" +msgstr "目标文件" + +#: sql_help.c:2346 sql_help.c:2548 +msgid "link_symbol" +msgstr "链接_符号" + +#: sql_help.c:2347 sql_help.c:2549 +msgid "sql_body" +msgstr "sql_body" + +#: sql_help.c:2385 sql_help.c:2601 sql_help.c:3160 +msgid "uid" +msgstr "uid" + +#: sql_help.c:2400 sql_help.c:2441 sql_help.c:2828 sql_help.c:2841 +#: sql_help.c:2855 sql_help.c:2920 +msgid "method" +msgstr "方法" + +#: sql_help.c:2405 +msgid "opclass_parameter" +msgstr "opclass_parameter" + +#: sql_help.c:2422 +msgid "call_handler" +msgstr "调用函数" + +#: sql_help.c:2423 +msgid "inline_handler" +msgstr "匿名代码块" + +#: sql_help.c:2424 +msgid "valfunction" +msgstr "验证函数" + +#: sql_help.c:2463 +msgid "com_op" +msgstr "交换操作符" + +#: sql_help.c:2464 +msgid "neg_op" +msgstr "取负操作符" + +#: sql_help.c:2482 +msgid "family_name" +msgstr "操作符群的名称" + +#: sql_help.c:2493 +msgid "storage_type" +msgstr "存储类型" + +#: sql_help.c:2622 sql_help.c:3044 +msgid "where event can be one of:" +msgstr "事件可以下述之一:" + +#: sql_help.c:2642 sql_help.c:2644 +msgid "schema_element" +msgstr "模式中对象" + +#: sql_help.c:2681 +msgid "server_type" +msgstr "服务器类型" + +#: sql_help.c:2682 +msgid "server_version" +msgstr "服务器版本" + +#: sql_help.c:2683 sql_help.c:3818 sql_help.c:4198 +msgid "fdw_name" +msgstr "外部数据封装器的名称" + +#: sql_help.c:2700 sql_help.c:2703 +msgid "statistics_name" +msgstr "统计信息_名称" + +#: sql_help.c:2704 +msgid "statistics_kind" +msgstr "统计信息_方式" + +#: sql_help.c:2720 +msgid "subscription_name" +msgstr "订阅_名称" + +#: sql_help.c:2821 +msgid "source_table" +msgstr "源表" + +#: sql_help.c:2822 +msgid "like_option" +msgstr "like选项" + +#: sql_help.c:2888 +msgid "and like_option is:" +msgstr "like_选项是" + +#: sql_help.c:2937 +msgid "directory" +msgstr "目录" + +#: sql_help.c:2951 +msgid "parser_name" +msgstr "解析器名称 " + +#: sql_help.c:2952 +msgid "source_config" +msgstr "已存在的文本搜索配置名称" + +#: sql_help.c:2981 +msgid "start_function" +msgstr "启动_函数" + +#: sql_help.c:2982 +msgid "gettoken_function" +msgstr "获取下一个符号函数的名称" + +#: sql_help.c:2983 +msgid "end_function" +msgstr "结束_函数" + +#: sql_help.c:2984 +msgid "lextypes_function" +msgstr "语义类型_函数" + +#: sql_help.c:2985 +msgid "headline_function" +msgstr "标题_函数" + +#: sql_help.c:2997 +msgid "init_function" +msgstr "初始化_函数" + +#: sql_help.c:2998 +msgid "lexize_function" +msgstr "LEXIZE函数" + +#: sql_help.c:3011 +msgid "from_sql_function_name" +msgstr "from_sql_function_name" + +#: sql_help.c:3013 +msgid "to_sql_function_name" +msgstr "to_sql_function_name" + +#: sql_help.c:3039 +msgid "referenced_table_name" +msgstr "被引用表的名称" + +#: sql_help.c:3040 +msgid "transition_relation_name" +msgstr "transition_relation_name(转换关系名)" + +#: sql_help.c:3043 +msgid "arguments" +msgstr "参数" + +#: sql_help.c:3095 sql_help.c:4331 +msgid "label" +msgstr "标签" + +#: sql_help.c:3097 +msgid "subtype" +msgstr "子类型" + +#: sql_help.c:3098 +msgid "subtype_operator_class" +msgstr "subtype_operator_class(子类型_操作符_类)" + +#: sql_help.c:3100 +msgid "canonical_function" +msgstr "标准_函数" + +#: sql_help.c:3101 +msgid "subtype_diff_function" +msgstr "subtype_diff_function(子类型_区分_函数)" + +#: sql_help.c:3102 +msgid "multirange_type_name" +msgstr "multirange_type_name" + +#: sql_help.c:3104 +msgid "input_function" +msgstr "输入_函数" + +#: sql_help.c:3105 +msgid "output_function" +msgstr "输出_函数" + +#: sql_help.c:3106 +msgid "receive_function" +msgstr "接收_函数" + +#: sql_help.c:3107 +msgid "send_function" +msgstr "发送_函数" + +#: sql_help.c:3108 +msgid "type_modifier_input_function" +msgstr "类型修改器数组输入函数名称" + +#: sql_help.c:3109 +msgid "type_modifier_output_function" +msgstr "类型修改器输出函数名称" + +#: sql_help.c:3110 +msgid "analyze_function" +msgstr "分析_函数" + +#: sql_help.c:3111 +msgid "subscript_function" +msgstr "subscript_function" + +#: sql_help.c:3112 +msgid "internallength" +msgstr "内部长度" + +#: sql_help.c:3113 +msgid "alignment" +msgstr "顺序排列(alignment)" + +#: sql_help.c:3114 +msgid "storage" +msgstr "存储" + +#: sql_help.c:3115 +msgid "like_type" +msgstr "LIKE类型(like_type)" + +#: sql_help.c:3116 +msgid "category" +msgstr "类型" + +#: sql_help.c:3117 +msgid "preferred" +msgstr "优先" + +#: sql_help.c:3118 +msgid "default" +msgstr "默认" + +#: sql_help.c:3119 +msgid "element" +msgstr "成员项" + +#: sql_help.c:3120 +msgid "delimiter" +msgstr "分隔符" + +#: sql_help.c:3121 +msgid "collatable" +msgstr "要校对的" + +#: sql_help.c:3218 sql_help.c:3894 sql_help.c:4393 sql_help.c:4490 +#: sql_help.c:4642 sql_help.c:4750 sql_help.c:4873 +msgid "with_query" +msgstr "with查询语句(with_query)" + +#: sql_help.c:3220 sql_help.c:3896 sql_help.c:4412 sql_help.c:4418 +#: sql_help.c:4421 sql_help.c:4425 sql_help.c:4429 sql_help.c:4437 +#: sql_help.c:4661 sql_help.c:4667 sql_help.c:4670 sql_help.c:4674 +#: sql_help.c:4678 sql_help.c:4686 sql_help.c:4752 sql_help.c:4892 +#: sql_help.c:4898 sql_help.c:4901 sql_help.c:4905 sql_help.c:4909 +#: sql_help.c:4917 +msgid "alias" +msgstr "别名" + +#: sql_help.c:3221 sql_help.c:4397 sql_help.c:4439 sql_help.c:4441 +#: sql_help.c:4495 sql_help.c:4646 sql_help.c:4688 sql_help.c:4690 +#: sql_help.c:4759 sql_help.c:4877 sql_help.c:4919 sql_help.c:4921 +msgid "from_item" +msgstr "from列表中项" + +#: sql_help.c:3223 sql_help.c:3704 sql_help.c:3975 sql_help.c:4761 +msgid "cursor_name" +msgstr "游标名称" + +#: sql_help.c:3224 sql_help.c:3902 sql_help.c:4762 +msgid "output_expression" +msgstr "输出表达式" + +#: sql_help.c:3225 sql_help.c:3903 sql_help.c:4396 sql_help.c:4493 +#: sql_help.c:4645 sql_help.c:4763 sql_help.c:4876 +msgid "output_name" +msgstr "输出名称" + +#: sql_help.c:3241 +msgid "code" +msgstr "编码" + +#: sql_help.c:3646 +msgid "parameter" +msgstr "参数" + +#: sql_help.c:3668 sql_help.c:3669 sql_help.c:4000 +msgid "statement" +msgstr "语句" + +#: sql_help.c:3703 sql_help.c:3974 +msgid "direction" +msgstr "方向" + +#: sql_help.c:3705 sql_help.c:3976 +msgid "where direction can be empty or one of:" +msgstr "方向可以为空或者是下列选项之一:" + +#: sql_help.c:3706 sql_help.c:3707 sql_help.c:3708 sql_help.c:3709 +#: sql_help.c:3710 sql_help.c:3977 sql_help.c:3978 sql_help.c:3979 +#: sql_help.c:3980 sql_help.c:3981 sql_help.c:4406 sql_help.c:4408 +#: sql_help.c:4504 sql_help.c:4506 sql_help.c:4655 sql_help.c:4657 +#: sql_help.c:4819 sql_help.c:4821 sql_help.c:4886 sql_help.c:4888 +msgid "count" +msgstr "计数" + +#: sql_help.c:3808 sql_help.c:4188 +msgid "sequence_name" +msgstr "序列名称" + +#: sql_help.c:3826 sql_help.c:4206 +msgid "arg_name" +msgstr "参数名称" + +#: sql_help.c:3827 sql_help.c:4207 +msgid "arg_type" +msgstr "参数类型" + +#: sql_help.c:3834 sql_help.c:4214 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3862 +msgid "remote_schema" +msgstr "remote_schema" + +#: sql_help.c:3865 +msgid "local_schema" +msgstr "local_schema" + +#: sql_help.c:3900 +msgid "conflict_target" +msgstr "冲突目标" + +#: sql_help.c:3901 +msgid "conflict_action" +msgstr "冲突行动" + +#: sql_help.c:3904 +msgid "where conflict_target can be one of:" +msgstr "这里conflict_target可以是下列之一:" + +#: sql_help.c:3905 +msgid "index_column_name" +msgstr "索引列名称" + +#: sql_help.c:3906 +msgid "index_expression" +msgstr "索引表达式" + +#: sql_help.c:3909 +msgid "index_predicate" +msgstr "index_predicate" + +#: sql_help.c:3911 +msgid "and conflict_action is one of:" +msgstr "并且conflict_action是下列之一:" + +#: sql_help.c:3917 sql_help.c:4758 +msgid "sub-SELECT" +msgstr "sub-SELECT" + +#: sql_help.c:3926 sql_help.c:3989 sql_help.c:4734 +msgid "channel" +msgstr "通道" + +#: sql_help.c:3948 +msgid "lockmode" +msgstr "锁模式" + +#: sql_help.c:3949 +msgid "where lockmode is one of:" +msgstr "锁模式可以是下列选项之一:" + +#: sql_help.c:3990 +msgid "payload" +msgstr "消息中负载流量(payload)" + +#: sql_help.c:4017 +msgid "old_role" +msgstr "旧的角色" + +#: sql_help.c:4018 +msgid "new_role" +msgstr "新的角色" + +#: sql_help.c:4054 sql_help.c:4253 sql_help.c:4261 +msgid "savepoint_name" +msgstr "保存点名称" + +#: sql_help.c:4399 sql_help.c:4452 sql_help.c:4648 sql_help.c:4701 +#: sql_help.c:4879 sql_help.c:4932 +msgid "grouping_element" +msgstr "grouping_element" + +#: sql_help.c:4401 sql_help.c:4499 sql_help.c:4650 sql_help.c:4881 +msgid "window_name" +msgstr "窗口名称" + +#: sql_help.c:4402 sql_help.c:4500 sql_help.c:4651 sql_help.c:4882 +msgid "window_definition" +msgstr "窗口定义" + +#: sql_help.c:4403 sql_help.c:4417 sql_help.c:4456 sql_help.c:4501 +#: sql_help.c:4652 sql_help.c:4666 sql_help.c:4705 sql_help.c:4883 +#: sql_help.c:4897 sql_help.c:4936 +msgid "select" +msgstr "查询" + +#: sql_help.c:4410 sql_help.c:4659 sql_help.c:4890 +msgid "where from_item can be one of:" +msgstr "from 列表中的项可以是下列内容之一" + +#: sql_help.c:4413 sql_help.c:4419 sql_help.c:4422 sql_help.c:4426 +#: sql_help.c:4438 sql_help.c:4662 sql_help.c:4668 sql_help.c:4671 +#: sql_help.c:4675 sql_help.c:4687 sql_help.c:4893 sql_help.c:4899 +#: sql_help.c:4902 sql_help.c:4906 sql_help.c:4918 +msgid "column_alias" +msgstr "列的别名" + +#: sql_help.c:4414 sql_help.c:4663 sql_help.c:4894 +msgid "sampling_method" +msgstr "sampling_method" + +#: sql_help.c:4416 sql_help.c:4665 sql_help.c:4896 +msgid "seed" +msgstr "种子" + +#: sql_help.c:4420 sql_help.c:4454 sql_help.c:4669 sql_help.c:4703 +#: sql_help.c:4900 sql_help.c:4934 +msgid "with_query_name" +msgstr "WITH查询语句名称(with_query_name)" + +#: sql_help.c:4430 sql_help.c:4433 sql_help.c:4436 sql_help.c:4679 +#: sql_help.c:4682 sql_help.c:4685 sql_help.c:4910 sql_help.c:4913 +#: sql_help.c:4916 +msgid "column_definition" +msgstr "列定义" + +#: sql_help.c:4440 sql_help.c:4689 sql_help.c:4920 +msgid "join_type" +msgstr "连接操作的类型" + +#: sql_help.c:4442 sql_help.c:4691 sql_help.c:4922 +msgid "join_condition" +msgstr "用连接操作的条件" + +#: sql_help.c:4443 sql_help.c:4692 sql_help.c:4923 +msgid "join_column" +msgstr "用于连接操作的列" + +#: sql_help.c:4444 sql_help.c:4693 sql_help.c:4924 +msgid "join_using_alias" +msgstr "join_using_alia" + +#: sql_help.c:4445 sql_help.c:4694 sql_help.c:4925 +msgid "and grouping_element can be one of:" +msgstr "并且grouping_element可以是下列之一:" + +#: sql_help.c:4453 sql_help.c:4702 sql_help.c:4933 +msgid "and with_query is:" +msgstr "with查询语句是:" + +#: sql_help.c:4457 sql_help.c:4706 sql_help.c:4937 +msgid "values" +msgstr "值" + +#: sql_help.c:4458 sql_help.c:4707 sql_help.c:4938 +msgid "insert" +msgstr "insert" + +#: sql_help.c:4459 sql_help.c:4708 sql_help.c:4939 +msgid "update" +msgstr "update" + +#: sql_help.c:4460 sql_help.c:4709 sql_help.c:4940 +msgid "delete" +msgstr "delete" + +#: sql_help.c:4462 sql_help.c:4711 sql_help.c:4942 +msgid "search_seq_col_name" +msgstr "search_seq_col_name" + +#: sql_help.c:4464 sql_help.c:4713 sql_help.c:4944 +msgid "cycle_mark_col_name" +msgstr "cycle_mark_col_name" + +#: sql_help.c:4465 sql_help.c:4714 sql_help.c:4945 +msgid "cycle_mark_value" +msgstr "cycle_mark_value" + +#: sql_help.c:4466 sql_help.c:4715 sql_help.c:4946 +msgid "cycle_mark_default" +msgstr "cycle_mark_default" + +#: sql_help.c:4467 sql_help.c:4716 sql_help.c:4947 +msgid "cycle_path_col_name" +msgstr "cycle_path_col_name" + +#: sql_help.c:4494 +msgid "new_table" +msgstr "新的表" + +#: sql_help.c:4519 +msgid "timezone" +msgstr "时区" + +#: sql_help.c:4564 +msgid "snapshot_id" +msgstr "快照id" + +#: sql_help.c:4817 +msgid "sort_expression" +msgstr "排序表达式" + +#: sql_help.c:4954 sql_help.c:5932 +msgid "abort the current transaction" +msgstr "中止目前的事务" + +#: sql_help.c:4960 +msgid "change the definition of an aggregate function" +msgstr "更改聚集函数的定义" + +#: sql_help.c:4966 +msgid "change the definition of a collation" +msgstr "更改校对规则的定义" + +#: sql_help.c:4972 +msgid "change the definition of a conversion" +msgstr "更改一个字符编码转换的定义" + +#: sql_help.c:4978 +msgid "change a database" +msgstr "更改一个数据库" + +#: sql_help.c:4984 +msgid "define default access privileges" +msgstr "定义默认的访问权限" + +#: sql_help.c:4990 +msgid "change the definition of a domain" +msgstr "更改共同值域的定义" + +#: sql_help.c:4996 +msgid "change the definition of an event trigger" +msgstr "更改事件触发器的定义" + +#: sql_help.c:5002 +msgid "change the definition of an extension" +msgstr "更改扩展的定义" + +#: sql_help.c:5008 +msgid "change the definition of a foreign-data wrapper" +msgstr "更改外部数据封装器的定义" + +#: sql_help.c:5014 +msgid "change the definition of a foreign table" +msgstr "更改外部表的定义" + +#: sql_help.c:5020 +msgid "change the definition of a function" +msgstr "更改函数的定义" + +#: sql_help.c:5026 +msgid "change role name or membership" +msgstr "更改角色名称或成员状态" + +#: sql_help.c:5032 +msgid "change the definition of an index" +msgstr "更改索引的定义" + +#: sql_help.c:5038 +msgid "change the definition of a procedural language" +msgstr "更改程序语言的定义" + +#: sql_help.c:5044 +msgid "change the definition of a large object" +msgstr "更改大对象的定义" + +#: sql_help.c:5050 +msgid "change the definition of a materialized view" +msgstr "更改物化视图的定义" + +#: sql_help.c:5056 +msgid "change the definition of an operator" +msgstr "更改运算子的定义" + +#: sql_help.c:5062 +msgid "change the definition of an operator class" +msgstr "更改运算子类别的定义" + +#: sql_help.c:5068 +msgid "change the definition of an operator family" +msgstr "更改一个运算子家族的识别" + +#: sql_help.c:5074 +msgid "change the definition of a row-level security policy" +msgstr "更改一条行级安全性策略的定义" + +#: sql_help.c:5080 +msgid "change the definition of a procedure" +msgstr "更改程序的定义" + +#: sql_help.c:5086 +msgid "change the definition of a publication" +msgstr "更改发布的定义" + +#: sql_help.c:5092 sql_help.c:5194 +msgid "change a database role" +msgstr "更改数据库角色" + +#: sql_help.c:5098 +msgid "change the definition of a routine" +msgstr "更改程序的定义" + +#: sql_help.c:5104 +msgid "change the definition of a rule" +msgstr "更改规则的定义" + +#: sql_help.c:5110 +msgid "change the definition of a schema" +msgstr "更改架构模式的定义" + +#: sql_help.c:5116 +msgid "change the definition of a sequence generator" +msgstr "更改序列数产生器的定义" + +#: sql_help.c:5122 +msgid "change the definition of a foreign server" +msgstr "更改外部服务器的定义" + +#: sql_help.c:5128 +msgid "change the definition of an extended statistics object" +msgstr "更改扩展统计信息对象的定义" + +#: sql_help.c:5134 +msgid "change the definition of a subscription" +msgstr "更改订阅的定义" + +#: sql_help.c:5140 +msgid "change a server configuration parameter" +msgstr "更改服务器的配置参数" + +#: sql_help.c:5146 +msgid "change the definition of a table" +msgstr "更改数据表的定义" + +#: sql_help.c:5152 +msgid "change the definition of a tablespace" +msgstr "更改表空间的定义" + +#: sql_help.c:5158 +msgid "change the definition of a text search configuration" +msgstr "更改一个文本搜索组态的定义" + +#: sql_help.c:5164 +msgid "change the definition of a text search dictionary" +msgstr "更改一个文本搜索字典的定义" + +#: sql_help.c:5170 +msgid "change the definition of a text search parser" +msgstr "更改一个文本搜索剖析器的定义" + +#: sql_help.c:5176 +msgid "change the definition of a text search template" +msgstr "更改一个文本搜索模版的定义" + +#: sql_help.c:5182 +msgid "change the definition of a trigger" +msgstr "更改触发器的定义" + +#: sql_help.c:5188 +msgid "change the definition of a type" +msgstr "更改数据类型的定义" + +#: sql_help.c:5200 +msgid "change the definition of a user mapping" +msgstr "更改用户映射的定义" + +#: sql_help.c:5206 +msgid "change the definition of a view" +msgstr "更改视图的定义" + +#: sql_help.c:5212 +msgid "collect statistics about a database" +msgstr "收集数据库的统计信息" + +#: sql_help.c:5218 sql_help.c:6010 +msgid "start a transaction block" +msgstr "开始一个事务区块" + +#: sql_help.c:5224 +msgid "invoke a procedure" +msgstr "调用过程" + +#: sql_help.c:5230 +msgid "force a write-ahead log checkpoint" +msgstr "强制一个预写日志检查点" + +#: sql_help.c:5236 +msgid "close a cursor" +msgstr "关闭游标" + +#: sql_help.c:5242 +msgid "cluster a table according to an index" +msgstr "按照索引进行表的聚集" + +#: sql_help.c:5248 +msgid "define or change the comment of an object" +msgstr "定义或更改一个对象的注解" + +#: sql_help.c:5254 sql_help.c:5812 +msgid "commit the current transaction" +msgstr "确认目前的事务" + +#: sql_help.c:5260 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "提交一项事务这是两阶段提交的先前准备" + +#: sql_help.c:5266 +msgid "copy data between a file and a table" +msgstr "在档案和数据表间复制数据" + +#: sql_help.c:5272 +msgid "define a new access method" +msgstr "定义新的访问方法" + +#: sql_help.c:5278 +msgid "define a new aggregate function" +msgstr "定义一个新的聚集函数" + +#: sql_help.c:5284 +msgid "define a new cast" +msgstr "建立新的类型转换" + +#: sql_help.c:5290 +msgid "define a new collation" +msgstr "建立新的校对规则" + +#: sql_help.c:5296 +msgid "define a new encoding conversion" +msgstr "定义一个新的字元编码转换" + +#: sql_help.c:5302 +msgid "create a new database" +msgstr "建立新的数据库" + +#: sql_help.c:5308 +msgid "define a new domain" +msgstr "建立新的共同值域" + +#: sql_help.c:5314 +msgid "define a new event trigger" +msgstr "定义新的事件触发器" + +#: sql_help.c:5320 +msgid "install an extension" +msgstr "安装一个扩展" + +#: sql_help.c:5326 +msgid "define a new foreign-data wrapper" +msgstr "定义一个新的外部数据封装器" + +#: sql_help.c:5332 +msgid "define a new foreign table" +msgstr "建立新的外部表" + +#: sql_help.c:5338 +msgid "define a new function" +msgstr "建立新的函数" + +#: sql_help.c:5344 sql_help.c:5404 sql_help.c:5506 +msgid "define a new database role" +msgstr "定义一个新数据库角色" + +#: sql_help.c:5350 +msgid "define a new index" +msgstr "建立新的索引" + +#: sql_help.c:5356 +msgid "define a new procedural language" +msgstr "建立新的程序语言" + +#: sql_help.c:5362 +msgid "define a new materialized view" +msgstr "建立新的物化视图" + +#: sql_help.c:5368 +msgid "define a new operator" +msgstr "建立新的运算子" + +#: sql_help.c:5374 +msgid "define a new operator class" +msgstr "建立新的运算子类别" + +#: sql_help.c:5380 +msgid "define a new operator family" +msgstr "定义一个新的运算子家族" + +#: sql_help.c:5386 +msgid "define a new row-level security policy for a table" +msgstr "为一个表定义一条新的行级安全性策略" + +#: sql_help.c:5392 +msgid "define a new procedure" +msgstr "建立新的程序" + +#: sql_help.c:5398 +msgid "define a new publication" +msgstr "建立新的发布" + +#: sql_help.c:5410 +msgid "define a new rewrite rule" +msgstr "建立新的重写规则" + +#: sql_help.c:5416 +msgid "define a new schema" +msgstr "建立新的架构模式" + +#: sql_help.c:5422 +msgid "define a new sequence generator" +msgstr "建立新的序列数产生器" + +#: sql_help.c:5428 +msgid "define a new foreign server" +msgstr "建立新的触发器" + +#: sql_help.c:5434 +msgid "define extended statistics" +msgstr "建立新的扩展统计" + +#: sql_help.c:5440 +msgid "define a new subscription" +msgstr "建立新的订阅" + +#: sql_help.c:5446 +msgid "define a new table" +msgstr "建立新的数据表" + +#: sql_help.c:5452 sql_help.c:5968 +msgid "define a new table from the results of a query" +msgstr "以查询结果建立新的数据表" + +#: sql_help.c:5458 +msgid "define a new tablespace" +msgstr "建立新的表空间" + +#: sql_help.c:5464 +msgid "define a new text search configuration" +msgstr "定义一个新文本搜索组态" + +#: sql_help.c:5470 +msgid "define a new text search dictionary" +msgstr "定义一个新文本搜索字典" + +#: sql_help.c:5476 +msgid "define a new text search parser" +msgstr "定义一个新文本搜索剖析器" + +#: sql_help.c:5482 +msgid "define a new text search template" +msgstr "定义一个新文本搜索模版" + +#: sql_help.c:5488 +msgid "define a new transform" +msgstr "定义一个新的转换" + +#: sql_help.c:5494 +msgid "define a new trigger" +msgstr "建立新的触发器" + +#: sql_help.c:5500 +msgid "define a new data type" +msgstr "建立新的数据类型" + +#: sql_help.c:5512 +msgid "define a new mapping of a user to a foreign server" +msgstr "将用户的新映射定义到一个外部服务器" + +#: sql_help.c:5518 +msgid "define a new view" +msgstr "建立新的视图" + +#: sql_help.c:5524 +msgid "deallocate a prepared statement" +msgstr "释放一个已预备好的叙述区块" + +#: sql_help.c:5530 +msgid "define a cursor" +msgstr "建立一个 cursor" + +#: sql_help.c:5536 +msgid "delete rows of a table" +msgstr "删除数据表中的数据列" + +#: sql_help.c:5542 +msgid "discard session state" +msgstr "抛弃 session 状态" + +#: sql_help.c:5548 +msgid "execute an anonymous code block" +msgstr "执行一个匿名代码块" + +#: sql_help.c:5554 +msgid "remove an access method" +msgstr "移除一种访问方法" + +#: sql_help.c:5560 +msgid "remove an aggregate function" +msgstr "移除一个聚集函数" + +#: sql_help.c:5566 +msgid "remove a cast" +msgstr "移除一个类型转换" + +#: sql_help.c:5572 +msgid "remove a collation" +msgstr "移除一个校对规则" + +#: sql_help.c:5578 +msgid "remove a conversion" +msgstr "移除一个字元编码转换" + +#: sql_help.c:5584 +msgid "remove a database" +msgstr "移除数据库" + +#: sql_help.c:5590 +msgid "remove a domain" +msgstr "移除一个共同值域" + +#: sql_help.c:5596 +msgid "remove an event trigger" +msgstr "移除事件触发器" + +#: sql_help.c:5602 +msgid "remove an extension" +msgstr "移除一个扩展" + +#: sql_help.c:5608 +msgid "remove a foreign-data wrapper" +msgstr "删除一个外部数据封装器" + +#: sql_help.c:5614 +msgid "remove a foreign table" +msgstr "移除外部引用表" + +#: sql_help.c:5620 +msgid "remove a function" +msgstr "移除函数" + +#: sql_help.c:5626 sql_help.c:5692 sql_help.c:5794 +msgid "remove a database role" +msgstr "移除一个数据库成员" + +#: sql_help.c:5632 +msgid "remove an index" +msgstr "移除一个索引" + +#: sql_help.c:5638 +msgid "remove a procedural language" +msgstr "移除一个程序语言" + +#: sql_help.c:5644 +msgid "remove a materialized view" +msgstr "移除一个物化视图" + +#: sql_help.c:5650 +msgid "remove an operator" +msgstr "移除运算子" + +#: sql_help.c:5656 +msgid "remove an operator class" +msgstr "移除一个运算子类别" + +#: sql_help.c:5662 +msgid "remove an operator family" +msgstr "移除一个运算子家族" + +#: sql_help.c:5668 +msgid "remove database objects owned by a database role" +msgstr "依照一个数据库角色拥有的数据库对象来移除" + +#: sql_help.c:5674 +msgid "remove a row-level security policy from a table" +msgstr "从一个表移除一条行级安全性策略" + +#: sql_help.c:5680 +msgid "remove a procedure" +msgstr "移除一个程序" + +#: sql_help.c:5686 +msgid "remove a publication" +msgstr "移除一个发布" + +#: sql_help.c:5698 +msgid "remove a routine" +msgstr "移除程序" + +#: sql_help.c:5704 +msgid "remove a rewrite rule" +msgstr "移除一个重写规则" + +#: sql_help.c:5710 +msgid "remove a schema" +msgstr "移除一个模式" + +#: sql_help.c:5716 +msgid "remove a sequence" +msgstr "移除序列" + +#: sql_help.c:5722 +msgid "remove a foreign server descriptor" +msgstr "删除一个外部服务器描述符" + +#: sql_help.c:5728 +msgid "remove extended statistics" +msgstr "移除一个扩展统计" + +#: sql_help.c:5734 +msgid "remove a subscription" +msgstr "移除一个订阅" + +#: sql_help.c:5740 +msgid "remove a table" +msgstr "移除数据表" + +#: sql_help.c:5746 +msgid "remove a tablespace" +msgstr "移除一个表空间" + +#: sql_help.c:5752 +msgid "remove a text search configuration" +msgstr "移除一个文本搜索配置" + +#: sql_help.c:5758 +msgid "remove a text search dictionary" +msgstr "移除一个文本搜索字典" + +#: sql_help.c:5764 +msgid "remove a text search parser" +msgstr "移除一个文本搜索剖析器" + +#: sql_help.c:5770 +msgid "remove a text search template" +msgstr "移除一个文本搜索模版" + +#: sql_help.c:5776 +msgid "remove a transform" +msgstr "移除一个转换" + +#: sql_help.c:5782 +msgid "remove a trigger" +msgstr "移除触发器" + +#: sql_help.c:5788 +msgid "remove a data type" +msgstr "移除数据类型" + +#: sql_help.c:5800 +msgid "remove a user mapping for a foreign server" +msgstr "为外部服务器删除用户映射" + +#: sql_help.c:5806 +msgid "remove a view" +msgstr "移除一个视图" + +#: sql_help.c:5818 +msgid "execute a prepared statement" +msgstr "执行一个已准备好的语句块" + +#: sql_help.c:5824 +msgid "show the execution plan of a statement" +msgstr "显示一个语句块的执行计划" + +#: sql_help.c:5830 +msgid "retrieve rows from a query using a cursor" +msgstr "从使用游标的查询读取数据" + +#: sql_help.c:5836 +msgid "define access privileges" +msgstr "定义存取权限" + +#: sql_help.c:5842 +msgid "import table definitions from a foreign server" +msgstr "从一个外部服务器导入表定义" + +#: sql_help.c:5848 +msgid "create new rows in a table" +msgstr "在表中创建新数据行" + +#: sql_help.c:5854 +msgid "listen for a notification" +msgstr "等待通知" + +#: sql_help.c:5860 +msgid "load a shared library file" +msgstr "加载一个共享库文件" + +#: sql_help.c:5866 +msgid "lock a table" +msgstr "锁定数据表" + +#: sql_help.c:5872 +msgid "position a cursor" +msgstr "移动游标位置" + +#: sql_help.c:5878 +msgid "generate a notification" +msgstr "产生通知" + +#: sql_help.c:5884 +msgid "prepare a statement for execution" +msgstr "预先编译语句以执行" + +#: sql_help.c:5890 +msgid "prepare the current transaction for two-phase commit" +msgstr "准备将当前事务进行二段式提交" + +#: sql_help.c:5896 +msgid "change the ownership of database objects owned by a database role" +msgstr "依照一个数据库角色拥有的的数据库对象来更变所有权" + +#: sql_help.c:5902 +msgid "replace the contents of a materialized view" +msgstr "替换物化视图的内容" + +#: sql_help.c:5908 +msgid "rebuild indexes" +msgstr "重新建构索引" + +#: sql_help.c:5914 +msgid "destroy a previously defined savepoint" +msgstr "删除先前建立的储存点(Savepoint)" + +#: sql_help.c:5920 +msgid "restore the value of a run-time parameter to the default value" +msgstr "将执行时期参数还原成预设值" + +#: sql_help.c:5926 +msgid "remove access privileges" +msgstr "移除存取权限" + +#: sql_help.c:5938 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "取消一个可以为两阶段提交容易配置的事务" + +#: sql_help.c:5944 +msgid "roll back to a savepoint" +msgstr "还原至一个储存点(Savepoint)" + +#: sql_help.c:5950 +msgid "define a new savepoint within the current transaction" +msgstr "在当前事务中建立新的储存点(Savepoint)" + +#: sql_help.c:5956 +msgid "define or change a security label applied to an object" +msgstr "定义或更改一个对象的安全标签" + +#: sql_help.c:5962 sql_help.c:6016 sql_help.c:6052 +msgid "retrieve rows from a table or view" +msgstr "从数据表或视图中读取数据" + +#: sql_help.c:5974 +msgid "change a run-time parameter" +msgstr "更改一个运行期参数" + +#: sql_help.c:5980 +msgid "set constraint check timing for the current transaction" +msgstr "为当前事务设定约束限制检查的时间模式" + +#: sql_help.c:5986 +msgid "set the current user identifier of the current session" +msgstr "为当前会话的当前用户的设置身份标识" + +#: sql_help.c:5992 +msgid "set the session user identifier and the current user identifier of the current session" +msgstr "为当前会话设置会话用户标识符和当前用户标识符" + +#: sql_help.c:5998 +msgid "set the characteristics of the current transaction" +msgstr "设定当前事务属性" + +#: sql_help.c:6004 +msgid "show the value of a run-time parameter" +msgstr "显示运行期的参数值" + +#: sql_help.c:6022 +msgid "empty a table or set of tables" +msgstr "空的数据表或数据表集合" + +#: sql_help.c:6028 +msgid "stop listening for a notification" +msgstr "停止监听通知" + +#: sql_help.c:6034 +msgid "update rows of a table" +msgstr "更新数据表中的数据列" + +#: sql_help.c:6040 +msgid "garbage-collect and optionally analyze a database" +msgstr "垃圾收集(GC)并选择地分析数据库" + +#: sql_help.c:6046 +msgid "compute a set of rows" +msgstr "计算一个数据列的集合" + +#: startup.c:213 +#, c-format +msgid "-1 can only be used in non-interactive mode" +msgstr "-1只能在非交互模式下使用" + +#: startup.c:326 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "无法打开事务日志文件 \"%s\": %m" + +#: startup.c:438 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"输入 \"help\" 来获取帮助信息.\n" +"\n" + +#: startup.c:591 +#, c-format +msgid "could not set printing parameter \"%s\"" +msgstr "无法设定列打印参数 \"%s\"" + +#: startup.c:699 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "请用 \"%s --help\" 获取更多的信息.\n" + +#: startup.c:716 +#, c-format +msgid "extra command-line argument \"%s\" ignored" +msgstr "忽略多余的命令行参数 \"%s\"" + +#: startup.c:765 +#, c-format +msgid "could not find own program executable" +msgstr "找不到可执行文件" + +#: tab-complete.c:4904 +#, 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 "\"%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 "" +"\"%2$s\"的不能识别的值\"%1$s\"\n" +"可用值为\"%3$s\"." diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c new file mode 100644 index 0000000..509e642 --- /dev/null +++ b/src/bin/psql/prompt.c @@ -0,0 +1,382 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/prompt.c + */ +#include "postgres_fe.h" + +#ifdef WIN32 +#include +#include +#endif + +#include "common.h" +#include "common/string.h" +#include "input.h" +#include "libpq/pqcomm.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_unixsock_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..eeb2140 --- /dev/null +++ b/src/bin/psql/prompt.h @@ -0,0 +1,17 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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..515f215 --- /dev/null +++ b/src/bin/psql/psqlscanslash.c @@ -0,0 +1,3485 @@ +#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-2022, 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 +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . 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 +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" + +/* + * 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 1197 "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 1213 "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 +#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 119 "psqlscanslash.l" + + + +#line 123 "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 1517 "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 142 "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 151 "psqlscanslash.l" +{ + yyless(0); + cur_state->start_state = YY_START; + return LEXRES_OK; + } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 157 "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 168 "psqlscanslash.l" +{ } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 170 "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 185 "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 201 "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 216 "psqlscanslash.l" +{ + *option_quote = '\''; + unquoted_option_chars = 0; + BEGIN(xslashquote); + } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 222 "psqlscanslash.l" +{ + backtick_start_offset = output_buf->len; + *option_quote = '`'; + unquoted_option_chars = 0; + BEGIN(xslashbackquote); + } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 229 "psqlscanslash.l" +{ + ECHO; + *option_quote = '"'; + unquoted_option_chars = 0; + BEGIN(xslashdquote); + } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 236 "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 273 "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 281 "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 288 "psqlscanslash.l" +{ + psqlscan_test_variable(cur_state, yytext, yyleng); + } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 292 "psqlscanslash.l" +{ + /* Throw back everything but the colon */ + yyless(1); + unquoted_option_chars++; + ECHO; + } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 299 "psqlscanslash.l" +{ + /* Throw back everything but the colon */ + yyless(1); + unquoted_option_chars++; + ECHO; + } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 306 "psqlscanslash.l" +{ + /* Throw back everything but the colon */ + yyless(1); + unquoted_option_chars++; + ECHO; + } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 313 "psqlscanslash.l" +{ + /* Throw back everything but the colon */ + yyless(1); + unquoted_option_chars++; + ECHO; + } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 320 "psqlscanslash.l" +{ + unquoted_option_chars++; + ECHO; + } + YY_BREAK + + +/* + * single-quoted text: copy literally except for '' and backslash + * sequences + */ +case 20: +YY_RULE_SETUP +#line 333 "psqlscanslash.l" +{ BEGIN(xslasharg); } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 335 "psqlscanslash.l" +{ appendPQExpBufferChar(output_buf, '\''); } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 337 "psqlscanslash.l" +{ appendPQExpBufferChar(output_buf, '\n'); } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 338 "psqlscanslash.l" +{ appendPQExpBufferChar(output_buf, '\t'); } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 339 "psqlscanslash.l" +{ appendPQExpBufferChar(output_buf, '\b'); } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 340 "psqlscanslash.l" +{ appendPQExpBufferChar(output_buf, '\r'); } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 341 "psqlscanslash.l" +{ appendPQExpBufferChar(output_buf, '\f'); } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 343 "psqlscanslash.l" +{ + /* octal case */ + appendPQExpBufferChar(output_buf, + (char) strtol(yytext + 1, NULL, 8)); + } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 349 "psqlscanslash.l" +{ + /* hex case */ + appendPQExpBufferChar(output_buf, + (char) strtol(yytext + 2, NULL, 16)); + } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 355 "psqlscanslash.l" +{ psqlscan_emit(cur_state, yytext + 1, 1); } + YY_BREAK +case 30: +/* rule 30 can match eol */ +YY_RULE_SETUP +#line 357 "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 367 "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 375 "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 402 "psqlscanslash.l" +{ + psqlscan_escape_variable(cur_state, yytext, yyleng, + PQUOTE_SHELL_ARG); + } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 407 "psqlscanslash.l" +{ + /* Throw back everything but the colon */ + yyless(1); + ECHO; + } + YY_BREAK +case 35: +/* rule 35 can match eol */ +YY_RULE_SETUP +#line 413 "psqlscanslash.l" +{ ECHO; } + YY_BREAK + + +/* double-quoted text: copy verbatim, including the double quotes */ +case 36: +YY_RULE_SETUP +#line 420 "psqlscanslash.l" +{ + ECHO; + BEGIN(xslasharg); + } + YY_BREAK +case 37: +/* rule 37 can match eol */ +YY_RULE_SETUP +#line 425 "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 433 "psqlscanslash.l" +{ + if (output_buf->len > 0) + ECHO; + } + YY_BREAK +case 39: +YY_RULE_SETUP +#line 438 "psqlscanslash.l" +{ ECHO; } + YY_BREAK + + +/* at end of command, eat a double backslash, but not anything else */ +case 40: +YY_RULE_SETUP +#line 445 "psqlscanslash.l" +{ + cur_state->start_state = YY_START; + return LEXRES_OK; + } + YY_BREAK +case 41: +/* rule 41 can match eol */ +YY_RULE_SETUP +#line 450 "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 458 "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 473 "psqlscanslash.l" +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK +#line 2011 "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 473 "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..95b2c29 --- /dev/null +++ b/src/bin/psql/psqlscanslash.h @@ -0,0 +1,40 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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..878da9f --- /dev/null +++ b/src/bin/psql/psqlscanslash.l @@ -0,0 +1,829 @@ +%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-2022, 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" + +/* + * 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 + */ + +{ + /* command name ends at whitespace or backslash; eat all else */ + +{space}|"\\" { + yyless(0); + cur_state->start_state = YY_START; + return LEXRES_OK; + } + +{other} { ECHO; } + +} + +{ + /* + * 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); + } + +} + +{ + /* + * 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; + } + +} + +{ + /* + * 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; } + +} + +{ + /* + * 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; } + +} + +{ + /* double-quoted text: copy verbatim, including the double quotes */ + +{dquote} { + ECHO; + BEGIN(xslasharg); + } + +{other}|\n { ECHO; } + +} + +{ + /* copy everything until end of input line */ + /* but suppress leading whitespace */ + +{space}+ { + if (output_buf->len > 0) + ECHO; + } + +{other} { ECHO; } + +} + +{ + /* 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; + } + +} + +<> { + 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..2399cff --- /dev/null +++ b/src/bin/psql/settings.h @@ -0,0 +1,170 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 result */ + bool gexec_flag; /* one-shot request to execute query result */ + bool crosstab_flag; /* one-shot request to crosstab result */ + 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 */ + + /* + * If we get a connection failure, the now-unusable PGconn is stashed here + * until we can successfully reconnect. Never attempt to do anything with + * this PGconn except extract parameters for a \connect attempt. + */ + PGconn *dead_conn; /* previous connection to backend */ + + /* + * 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_compression; + 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 */ + bool show_all_results; + 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..744afca --- /dev/null +++ b/src/bin/psql/sql_help.c @@ -0,0 +1,6239 @@ +/* + * *** 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_ROLE | 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_ROLE | 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_ROLE | 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_ROLE | CURRENT_USER | SESSION_USER }\n" + "\n" + "ALTER DATABASE %s SET TABLESPACE %s\n" + "\n" + "ALTER DATABASE %s REFRESH COLLATION VERSION\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"), + _("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_ROLE | 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_ROLE | 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_ROLE | 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_ROLE | 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_ROLE | 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_ROLE\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_ROLE | 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_ROLE | 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" + " ALTER [ COLUMN ] %s SET COMPRESSION %s\n" + " CLUSTER ON %s\n" + " SET WITHOUT CLUSTER\n" + " SET ACCESS METHOD %s\n" + " SET TABLESPACE %s\n" + " SET ( %s [= %s] [, ... ] )\n" + " RESET ( %s [, ... ] )\n" + " OWNER TO { %s | CURRENT_ROLE | 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"), + _("column_name"), + _("compression_method"), + _("index_name"), + _("new_access_method"), + _("new_tablespace"), + _("storage_parameter"), + _("value"), + _("storage_parameter"), + _("new_owner")); +} + +static void +sql_help_ALTER_OPERATOR(PQExpBuffer buf) +{ + appendPQExpBuffer(buf, + "ALTER OPERATOR %s ( { %s | NONE } , %s )\n" + " OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n" + "\n" + "ALTER OPERATOR %s ( { %s | NONE } , %s )\n" + " SET SCHEMA %s\n" + "\n" + "ALTER OPERATOR %s ( { %s | NONE } , %s )\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_ROLE | 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_ROLE | 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_ROLE | 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_ROLE | 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 %s [, ...]\n" + "ALTER PUBLICATION %s SET %s [, ...]\n" + "ALTER PUBLICATION %s DROP %s [, ...]\n" + "ALTER PUBLICATION %s SET ( %s [= %s] [, ... ] )\n" + "ALTER PUBLICATION %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n" + "ALTER PUBLICATION %s RENAME TO %s\n" + "\n" + "%s\n" + "\n" + " TABLE [ ONLY ] %s [ * ] [ ( %s [, ... ] ) ] [ WHERE ( %s ) ] [, ... ]\n" + " TABLES IN SCHEMA { %s | CURRENT_SCHEMA } [, ... ]", + _("name"), + _("publication_object"), + _("name"), + _("publication_object"), + _("name"), + _("publication_object"), + _("name"), + _("publication_parameter"), + _("value"), + _("name"), + _("new_owner"), + _("name"), + _("new_name"), + _("where publication_object is one of:"), + _("table_name"), + _("column_name"), + _("expression"), + _("schema_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_ROLE\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_ROLE | 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_ROLE | 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 SET { LOGGED | UNLOGGED }\n" + "ALTER SEQUENCE [ IF EXISTS ] %s OWNER TO { %s | CURRENT_ROLE | 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"), + _("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_ROLE | 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_ROLE | 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 ADD PUBLICATION %s [, ...] [ WITH ( %s [= %s] [, ... ] ) ]\n" + "ALTER SUBSCRIPTION %s DROP 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 SKIP ( %s = %s )\n" + "ALTER SUBSCRIPTION %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n" + "ALTER SUBSCRIPTION %s RENAME TO %s", + _("name"), + _("conninfo"), + _("name"), + _("publication_name"), + _("publication_option"), + _("value"), + _("name"), + _("publication_name"), + _("publication_option"), + _("value"), + _("name"), + _("publication_name"), + _("publication_option"), + _("value"), + _("name"), + _("refresh_option"), + _("value"), + _("name"), + _("name"), + _("name"), + _("subscription_parameter"), + _("value"), + _("name"), + _("skip_option"), + _("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 [ CONCURRENTLY | FINALIZE ]\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" + " ALTER [ COLUMN ] %s SET COMPRESSION %s\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 ACCESS METHOD %s\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_ROLE | 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 [ NULLS [ NOT ] DISTINCT ] %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 [ NULLS [ NOT ] DISTINCT ] ( %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 } ]\n" + "\n" + "%s\n" + "\n" + "{ NO ACTION | RESTRICT | CASCADE | SET NULL [ ( %s [, ... ] ) ] | SET DEFAULT [ ( %s [, ... ] ) ] }", + _("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"), + _("column_name"), + _("compression_method"), + _("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_access_method"), + _("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"), + _("referential_action in a FOREIGN KEY/REFERENCES constraint is:"), + _("column_name"), + _("column_name")); +} + +static void +sql_help_ALTER_TABLESPACE(PQExpBuffer buf) +{ + appendPQExpBuffer(buf, + "ALTER TABLESPACE %s RENAME TO %s\n" + "ALTER TABLESPACE %s OWNER TO { %s | CURRENT_ROLE | 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_ROLE | 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_ROLE | 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_ROLE | 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_ROLE\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_ROLE | 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_ROLE | 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 ( %s [, ...] ) %s [ USING %s ]\n" + "CLUSTER [VERBOSE]\n" + "\n" + "%s\n" + "\n" + " VERBOSE [ %s ]", + _("table_name"), + _("index_name"), + _("option"), + _("table_name"), + _("index_name"), + _("where option can be one of:"), + _("boolean")); +} + +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 | NULL }\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"), + _("string_literal"), + _("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 | MATCH ]\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" + " [ STRATEGY [=] %s ] ]\n" + " [ LOCALE [=] %s ]\n" + " [ LC_COLLATE [=] %s ]\n" + " [ LC_CTYPE [=] %s ]\n" + " [ ICU_LOCALE [=] %s ]\n" + " [ LOCALE_PROVIDER [=] %s ]\n" + " [ COLLATION_VERSION = %s ]\n" + " [ TABLESPACE [=] %s ]\n" + " [ ALLOW_CONNECTIONS [=] %s ]\n" + " [ CONNECTION LIMIT [=] %s ]\n" + " [ IS_TEMPLATE [=] %s ]\n" + " [ OID [=] %s ]", + _("name"), + _("user_name"), + _("template"), + _("encoding"), + _("strategy"), + _("locale"), + _("lc_collate"), + _("lc_ctype"), + _("icu_locale"), + _("locale_provider"), + _("collation_version"), + _("tablespace_name"), + _("allowconn"), + _("connlimit"), + _("istemplate"), + _("oid")); +} + +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 (%s [, ... ]) [ AND ... ] ]\n" + " EXECUTE { FUNCTION | PROCEDURE } %s()", + _("name"), + _("event"), + _("filter_variable"), + _("filter_value"), + _("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" + ") ]\n" + "{ FOR VALUES %s | DEFAULT }\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 ]\n" + "\n" + "%s\n" + "\n" + "IN ( %s [, ...] ) |\n" + "FROM ( { %s | MINVALUE | MAXVALUE } [, ...] )\n" + " TO ( { %s | MINVALUE | MAXVALUE } [, ...] ) |\n" + "WITH ( MODULUS %s, REMAINDER %s )", + _("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"), + _("and partition_bound_spec is:"), + _("partition_bound_expr"), + _("partition_bound_expr"), + _("partition_bound_expr"), + _("numeric_literal"), + _("numeric_literal")); +} + +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" + " | %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"), + _("sql_body")); +} + +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" + " [ NULLS [ NOT ] DISTINCT ]\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_ROLE | 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" + " | %s\n" + " } ...", + _("name"), + _("argmode"), + _("argname"), + _("argtype"), + _("default_expr"), + _("lang_name"), + _("type_name"), + _("configuration_parameter"), + _("value"), + _("value"), + _("definition"), + _("obj_file"), + _("link_symbol"), + _("sql_body")); +} + +static void +sql_help_CREATE_PUBLICATION(PQExpBuffer buf) +{ + appendPQExpBuffer(buf, + "CREATE PUBLICATION %s\n" + " [ FOR ALL TABLES\n" + " | FOR %s [, ... ] ]\n" + " [ WITH ( %s [= %s] [, ... ] ) ]\n" + "\n" + "%s\n" + "\n" + " TABLE [ ONLY ] %s [ * ] [ ( %s [, ... ] ) ] [ WHERE ( %s ) ] [, ... ]\n" + " TABLES IN SCHEMA { %s | CURRENT_SCHEMA } [, ... ]", + _("name"), + _("publication_object"), + _("publication_parameter"), + _("value"), + _("where publication_object is one of:"), + _("table_name"), + _("column_name"), + _("expression"), + _("schema_name")); +} + +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_ROLE\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 } | UNLOGGED ] 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" + " ON ( %s )\n" + " FROM %s\n" + "\n" + "CREATE STATISTICS [ IF NOT EXISTS ] %s\n" + " [ ( %s [, ... ] ) ]\n" + " ON { %s | ( %s ) }, { %s | ( %s ) } [, ...]\n" + " FROM %s", + _("statistics_name"), + _("expression"), + _("table_name"), + _("statistics_name"), + _("statistics_kind"), + _("column_name"), + _("expression"), + _("column_name"), + _("expression"), + _("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 [ COMPRESSION %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 [ NULLS [ NOT ] DISTINCT ] %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 [ NULLS [ NOT ] DISTINCT ] ( %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 | COMPRESSION | 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 } ]\n" + "\n" + "%s\n" + "\n" + "{ NO ACTION | RESTRICT | CASCADE | SET NULL [ ( %s [, ... ] ) ] | SET DEFAULT [ ( %s [, ... ] ) ] }", + _("table_name"), + _("column_name"), + _("data_type"), + _("compression_method"), + _("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"), + _("referential_action in a FOREIGN KEY/REFERENCES constraint is:"), + _("column_name"), + _("column_name")); +} + +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_ROLE | 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 [ OR REPLACE ] [ 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" + " [ , MULTIRANGE_TYPE_NAME = %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" + " [ , SUBSCRIPT = %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"), + _("multirange_type_name"), + _("name"), + _("input_function"), + _("output_function"), + _("receive_function"), + _("send_function"), + _("type_modifier_input_function"), + _("type_modifier_output_function"), + _("analyze_function"), + _("subscript_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_ROLE | 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 ] [ ASENSITIVE | 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 ) [, ...] [ 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_ROLE | 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_ROLE | 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 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" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n" + " [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n" + " ON [ TABLE ] %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\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" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n" + " ON DATABASE %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" + " ON DOMAIN %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" + " ON FOREIGN DATA WRAPPER %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" + " ON FOREIGN SERVER %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\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" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" + " ON LANGUAGE %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n" + " ON LARGE OBJECT %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { { SET | ALTER SYSTEM } [, ... ] | ALL [ PRIVILEGES ] }\n" + " ON PARAMETER %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n" + " ON SCHEMA %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" + " ON TABLESPACE %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\n" + "\n" + "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" + " ON TYPE %s [, ...]\n" + " TO %s [, ...] [ WITH GRANT OPTION ]\n" + " [ GRANTED BY %s ]\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_ROLE\n" + " | CURRENT_USER\n" + " | SESSION_USER", + _("table_name"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("column_name"), + _("column_name"), + _("table_name"), + _("role_specification"), + _("role_specification"), + _("sequence_name"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("database_name"), + _("role_specification"), + _("role_specification"), + _("domain_name"), + _("role_specification"), + _("role_specification"), + _("fdw_name"), + _("role_specification"), + _("role_specification"), + _("server_name"), + _("role_specification"), + _("role_specification"), + _("routine_name"), + _("argmode"), + _("arg_name"), + _("arg_type"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("lang_name"), + _("role_specification"), + _("role_specification"), + _("loid"), + _("role_specification"), + _("role_specification"), + _("configuration_parameter"), + _("role_specification"), + _("role_specification"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("tablespace_name"), + _("role_specification"), + _("role_specification"), + _("type_name"), + _("role_specification"), + _("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_MERGE(PQExpBuffer buf) +{ + appendPQExpBuffer(buf, + "[ WITH %s [, ...] ]\n" + "MERGE INTO [ ONLY ] %s [ * ] [ [ AS ] %s ]\n" + "USING %s ON %s\n" + "%s [...]\n" + "\n" + "%s\n" + "\n" + "{ [ ONLY ] %s [ * ] | ( %s ) } [ [ AS ] %s ]\n" + "\n" + "%s\n" + "\n" + "{ WHEN MATCHED [ AND %s ] THEN { %s | %s | DO NOTHING } |\n" + " WHEN NOT MATCHED [ AND %s ] THEN { %s | DO NOTHING } }\n" + "\n" + "%s\n" + "\n" + "INSERT [( %s [, ...] )]\n" + "[ OVERRIDING { SYSTEM | USER } VALUE ]\n" + "{ VALUES ( { %s | DEFAULT } [, ...] ) | DEFAULT VALUES }\n" + "\n" + "%s\n" + "\n" + "UPDATE SET { %s = { %s | DEFAULT } |\n" + " ( %s [, ...] ) = ( { %s | DEFAULT } [, ...] ) } [, ...]\n" + "\n" + "%s\n" + "\n" + "DELETE", + _("with_query"), + _("target_table_name"), + _("target_alias"), + _("data_source"), + _("join_condition"), + _("when_clause"), + _("where data_source is:"), + _("source_table_name"), + _("source_query"), + _("source_alias"), + _("and when_clause is:"), + _("condition"), + _("merge_update"), + _("merge_delete"), + _("condition"), + _("merge_insert"), + _("and merge_insert is:"), + _("column_name"), + _("expression"), + _("and merge_update is:"), + _("column_name"), + _("expression"), + _("column_name"), + _("expression"), + _("and merge_delete is:")); +} + +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 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_ROLE | CURRENT_USER | SESSION_USER } [, ...]\n" + " TO { %s | CURRENT_ROLE | 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" + " CONCURRENTLY [ %s ]\n" + " TABLESPACE %s\n" + " VERBOSE [ %s ]", + _("option"), + _("name"), + _("where option can be one of:"), + _("boolean"), + _("new_tablespace"), + _("boolean")); +} + +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" + " [ GRANTED BY %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" + " [ GRANTED BY %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" + " [ GRANTED BY %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" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { USAGE | ALL [ PRIVILEGES ] }\n" + " ON DOMAIN %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { USAGE | ALL [ PRIVILEGES ] }\n" + " ON FOREIGN DATA WRAPPER %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { USAGE | ALL [ PRIVILEGES ] }\n" + " ON FOREIGN SERVER %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %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" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { USAGE | ALL [ PRIVILEGES ] }\n" + " ON LANGUAGE %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n" + " ON LARGE OBJECT %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { { SET | ALTER SYSTEM } [, ...] | ALL [ PRIVILEGES ] }\n" + " ON PARAMETER %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n" + " ON SCHEMA %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { CREATE | ALL [ PRIVILEGES ] }\n" + " ON TABLESPACE %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %s ]\n" + " [ CASCADE | RESTRICT ]\n" + "\n" + "REVOKE [ GRANT OPTION FOR ]\n" + " { USAGE | ALL [ PRIVILEGES ] }\n" + " ON TYPE %s [, ...]\n" + " FROM %s [, ...]\n" + " [ GRANTED BY %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_ROLE\n" + " | CURRENT_USER\n" + " | SESSION_USER", + _("table_name"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("column_name"), + _("column_name"), + _("table_name"), + _("role_specification"), + _("role_specification"), + _("sequence_name"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("database_name"), + _("role_specification"), + _("role_specification"), + _("domain_name"), + _("role_specification"), + _("role_specification"), + _("fdw_name"), + _("role_specification"), + _("role_specification"), + _("server_name"), + _("role_specification"), + _("role_specification"), + _("function_name"), + _("argmode"), + _("arg_name"), + _("arg_type"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("lang_name"), + _("role_specification"), + _("role_specification"), + _("loid"), + _("role_specification"), + _("role_specification"), + _("configuration_parameter"), + _("role_specification"), + _("role_specification"), + _("schema_name"), + _("role_specification"), + _("role_specification"), + _("tablespace_name"), + _("role_specification"), + _("role_specification"), + _("type_name"), + _("role_specification"), + _("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 | NULL }\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"), + _("string_literal"), + _("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 [ ALL | DISTINCT ] %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 %s %s { ON %s | USING ( %s [, ...] ) [ AS %s ] }\n" + " %s NATURAL %s %s\n" + " %s CROSS JOIN %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" + " [ SEARCH { BREADTH | DEPTH } FIRST BY %s [, ...] SET %s ]\n" + " [ CYCLE %s [, ...] SET %s [ TO %s DEFAULT %s ] USING %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"), + _("join_using_alias"), + _("from_item"), + _("join_type"), + _("from_item"), + _("from_item"), + _("from_item"), + _("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"), + _("column_name"), + _("search_seq_col_name"), + _("column_name"), + _("cycle_mark_col_name"), + _("cycle_mark_value"), + _("cycle_mark_default"), + _("cycle_path_col_name"), + _("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 | '%s' | LOCAL | DEFAULT }", + _("configuration_parameter"), + _("value"), + _("value"), + _("value"), + _("value")); +} + +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 [ ALL | DISTINCT ] %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 %s %s { ON %s | USING ( %s [, ...] ) [ AS %s ] }\n" + " %s NATURAL %s %s\n" + " %s CROSS JOIN %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" + " [ SEARCH { BREADTH | DEPTH } FIRST BY %s [, ...] SET %s ]\n" + " [ CYCLE %s [, ...] SET %s [ TO %s DEFAULT %s ] USING %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"), + _("join_using_alias"), + _("from_item"), + _("join_type"), + _("from_item"), + _("from_item"), + _("from_item"), + _("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"), + _("column_name"), + _("search_seq_col_name"), + _("column_name"), + _("cycle_mark_col_name"), + _("cycle_mark_value"), + _("cycle_mark_default"), + _("cycle_path_col_name"), + _("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 { AUTO | ON | OFF }\n" + " PROCESS_TOAST [ %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 [ ALL | DISTINCT ] %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 %s %s { ON %s | USING ( %s [, ...] ) [ AS %s ] }\n" + " %s NATURAL %s %s\n" + " %s CROSS JOIN %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" + " [ SEARCH { BREADTH | DEPTH } FIRST BY %s [, ...] SET %s ]\n" + " [ CYCLE %s [, ...] SET %s [ TO %s DEFAULT %s ] USING %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"), + _("join_using_alias"), + _("from_item"), + _("join_type"), + _("from_item"), + _("from_item"), + _("from_item"), + _("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"), + _("column_name"), + _("search_seq_col_name"), + _("column_name"), + _("cycle_mark_col_name"), + _("cycle_mark_value"), + _("cycle_mark_default"), + _("cycle_path_col_name"), + _("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, + 19}, + + {"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, + 10}, + + {"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, + 26}, + + {"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, + 10}, + + {"ALTER ROLE", + N_("change a database role"), + "sql-alterrole", + sql_help_ALTER_ROLE, + 27}, + + {"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, + 11}, + + {"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, + 10}, + + {"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, + 117}, + + {"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, + 27}, + + {"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, + 6}, + + {"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, + 15}, + + {"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, + 38}, + + {"CREATE FUNCTION", + N_("define a new function"), + "sql-createfunction", + sql_help_CREATE_FUNCTION, + 19}, + + {"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, + 6}, + + {"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, + 9}, + + {"CREATE PUBLICATION", + N_("define a new publication"), + "sql-createpublication", + sql_help_CREATE_PUBLICATION, + 8}, + + {"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, + 10}, + + {"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, + 7}, + + {"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, + 87}, + + {"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, + 37}, + + {"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, + 86}, + + {"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}, + + {"MERGE", + N_("conditionally insert, update, or delete rows of a table"), + "sql-merge", + sql_help_MERGE, + 27}, + + {"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, + 6}, + + {"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, + 115}, + + {"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, + 46}, + + {"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, + 46}, + + {"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, + 18}, + + {"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, + 46}, + + + {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..d401e31 --- /dev/null +++ b/src/bin/psql/sql_help.h @@ -0,0 +1,30 @@ +/* + * *** 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 185 /* 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..7c2f555 --- /dev/null +++ b/src/bin/psql/startup.c @@ -0,0 +1,1268 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/startup.c + */ +#include "postgres_fe.h" + +#ifndef WIN32 +#include +#else /* WIN32 */ +#include +#include +#endif /* WIN32 */ + +#include "command.h" +#include "common.h" +#include "common/logging.h" +#include "common/string.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; + } +} + +#ifdef HAVE_POSIX_DECL_SIGWAIT +static void +empty_signal_handler(SIGNAL_ARGS) +{ +} +#endif + +/* + * + * main + * + */ +int +main(int argc, char *argv[]) +{ + struct adhoc_opts options; + int successResult; + char *password = NULL; + 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; + pset.dead_conn = 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); + SetVariableBool(pset.vars, "SHOW_ALL_RESULTS"); + + 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_fatal("-1 can only be used in non-interactive mode"); + + 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. (Note: since we've not yet set up our + * cancel handler, there's no need to use simple_prompt_extended.) + */ + password = simple_prompt("Password: ", false); + } + + /* 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] = password; + 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) && + !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); + + password = simple_prompt(password_prompt, false); + free(password_prompt); + 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(); + +#ifdef HAVE_POSIX_DECL_SIGWAIT + + /* + * do_watch() needs signal handlers installed (otherwise sigwait() will + * filter them out on some platforms), but doesn't need them to do + * anything, and they shouldn't ever run (unless perhaps a stray SIGALRM + * arrives due to a race when do_watch() cancels an itimer). + */ + pqsignal(SIGCHLD, empty_signal_handler); + pqsignal(SIGALRM, empty_signal_handler); +#endif + + 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_fatal("could not open log file \"%s\": %m", + options.logfilename); + } + + 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) + { + /* + * Rollback the contents of the single transaction if the caller + * has set ON_ERROR_STOP and one of the steps has failed. This + * check needs to match the one done a couple of lines above. + */ + res = PSQLexec((successResult != EXIT_SUCCESS && pset.on_error_stop) ? + "ROLLBACK" : "COMMIT"); + if (res == 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); + if (pset.db) + PQfinish(pset.db); + if (pset.dead_conn) + PQfinish(pset.dead_conn); + 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_fatal("could not set printing parameter \"%s\"", value); + + 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: + /* getopt_long already emitted a complaint */ + pg_log_error_hint("Try \"%s --help\" for more information.", + pset.progname); + exit(EXIT_FAILURE); + } + } + + /* + * 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_fatal("could not find own program executable"); + + 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 bool +show_all_results_hook(const char *newval) +{ + return ParseVariableBool(newval, "SHOW_ALL_RESULTS", &pset.show_all_results); +} + +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_compression_hook(const char *newval) +{ + return ParseVariableBool(newval, "HIDE_TOAST_COMPRESSION", + &pset.hide_compression); +} + +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_ALL_RESULTS", + bool_substitute_hook, + show_all_results_hook); + SetVariableHooks(pset.vars, "SHOW_CONTEXT", + show_context_substitute_hook, + show_context_hook); + SetVariableHooks(pset.vars, "HIDE_TOAST_COMPRESSION", + bool_substitute_hook, + hide_compression_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..ba4c4e0 --- /dev/null +++ b/src/bin/psql/stringutils.c @@ -0,0 +1,342 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, PostgreSQL Global Development Group + * + * src/bin/psql/stringutils.c + */ +#include "postgres_fe.h" + +#include + +#include "common.h" +#include "stringutils.h" + + +/* + * 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..5d49422 --- /dev/null +++ b/src/bin/psql/stringutils.h @@ -0,0 +1,28 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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/001_basic.pl b/src/bin/psql/t/001_basic.pl new file mode 100644 index 0000000..f447845 --- /dev/null +++ b/src/bin/psql/t/001_basic.pl @@ -0,0 +1,328 @@ + +# Copyright (c) 2021-2022, PostgreSQL Global Development Group + +use strict; +use warnings; + +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; +use Test::More; + +program_help_ok('psql'); +program_version_ok('psql'); +program_options_handling_ok('psql'); + +# Execute a psql command and check its output. +sub psql_like +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + + my ($node, $sql, $expected_stdout, $test_name) = @_; + + my ($ret, $stdout, $stderr) = $node->psql('postgres', $sql); + + is($ret, 0, "$test_name: exit code 0"); + is($stderr, '', "$test_name: no stderr"); + like($stdout, $expected_stdout, "$test_name: matches"); + + return; +} + +# Execute a psql command and check that it fails and check the stderr. +sub psql_fails_like +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + + my ($node, $sql, $expected_stderr, $test_name) = @_; + + # Use the context of a WAL sender, some of the tests rely on that. + my ($ret, $stdout, $stderr) = + $node->psql('postgres', $sql, replication => 'database'); + + isnt($ret, 0, "$test_name: exit code not 0"); + like($stderr, $expected_stderr, "$test_name: matches"); + + return; +} + +# test --help=foo, analogous to program_help_ok() +foreach my $arg (qw(commands variables)) +{ + my ($stdout, $stderr); + my $result; + + $result = IPC::Run::run [ 'psql', "--help=$arg" ], '>', \$stdout, '2>', + \$stderr; + ok($result, "psql --help=$arg exit code 0"); + isnt($stdout, '', "psql --help=$arg goes to stdout"); + is($stderr, '', "psql --help=$arg nothing to stderr"); +} + +my $node = PostgreSQL::Test::Cluster->new('main'); +$node->init(extra => [ '--locale=C', '--encoding=UTF8' ]); +$node->append_conf( + 'postgresql.conf', q{ +wal_level = 'logical' +max_replication_slots = 4 +max_wal_senders = 4 +}); +$node->start; + +psql_like($node, '\copyright', qr/Copyright/, '\copyright'); +psql_like($node, '\help', qr/ALTER/, '\help without arguments'); +psql_like($node, '\help SELECT', qr/SELECT/, '\help with argument'); + +# Test clean handling of unsupported replication command responses +psql_fails_like( + $node, + 'START_REPLICATION 0/0', + qr/unexpected PQresultStatus: 8$/, + 'handling of unexpected PQresultStatus'); + +# test \timing +psql_like( + $node, + '\timing on +SELECT 1', + qr/^1$ +^Time: \d+[.,]\d\d\d ms/m, + '\timing with successful query'); + +# test \timing with query that fails +{ + my ($ret, $stdout, $stderr) = + $node->psql('postgres', "\\timing on\nSELECT error"); + isnt($ret, 0, '\timing with query error: query failed'); + like( + $stdout, + qr/^Time: \d+[.,]\d\d\d ms/m, + '\timing with query error: timing output appears'); + unlike( + $stdout, + qr/^Time: 0[.,]000 ms/m, + '\timing with query error: timing was updated'); +} + +# test that ENCODING variable is set and that it is updated when +# client encoding is changed +psql_like( + $node, + '\echo :ENCODING +set client_encoding = LATIN1; +\echo :ENCODING', + qr/^UTF8$ +^LATIN1$/m, + 'ENCODING variable is set and updated'); + +# test LISTEN/NOTIFY +psql_like( + $node, + 'LISTEN foo; +NOTIFY foo;', + qr/^Asynchronous notification "foo" received from server process with PID \d+\.$/, + 'notification'); + +psql_like( + $node, + "LISTEN foo; +NOTIFY foo, 'bar';", + qr/^Asynchronous notification "foo" with payload "bar" received from server process with PID \d+\.$/, + 'notification with payload'); + +# test behavior and output on server crash +my ($ret, $out, $err) = $node->psql('postgres', + "SELECT 'before' AS running;\n" + . "SELECT pg_terminate_backend(pg_backend_pid());\n" + . "SELECT 'AFTER' AS not_running;\n"); + +is($ret, 2, 'server crash: psql exit code'); +like($out, qr/before/, 'server crash: output before crash'); +ok($out !~ qr/AFTER/, 'server crash: no output after crash'); +is( $err, + 'psql::2: FATAL: terminating connection due to administrator command +psql::2: server closed the connection unexpectedly + This probably means the server terminated abnormally + before or while processing the request. +psql::2: error: connection to server was lost', + 'server crash: error message'); + +# test \errverbose +# +# (This is not in the regular regression tests because the output +# contains the source code location and we don't want to have to +# update that every time it changes.) + +psql_like( + $node, + 'SELECT 1; +\errverbose', + qr/^1\nThere is no previous error\.$/, + '\errverbose with no previous error'); + +# There are three main ways to run a query that might affect +# \errverbose: The normal way, using a cursor by setting FETCH_COUNT, +# and using \gdesc. Test them all. + +like( + ( $node->psql( + 'postgres', + "SELECT error;\n\\errverbose", + on_error_stop => 0))[2], + qr/\A^psql::1: ERROR: .*$ +^LINE 1: SELECT error;$ +^ *^.*$ +^psql::2: error: ERROR: [0-9A-Z]{5}: .*$ +^LINE 1: SELECT error;$ +^ *^.*$ +^LOCATION: .*$/m, + '\errverbose after normal query with error'); + +like( + ( $node->psql( + 'postgres', + "\\set FETCH_COUNT 1\nSELECT error;\n\\errverbose", + on_error_stop => 0))[2], + qr/\A^psql::2: ERROR: .*$ +^LINE 2: SELECT error;$ +^ *^.*$ +^psql::3: error: ERROR: [0-9A-Z]{5}: .*$ +^LINE 2: SELECT error;$ +^ *^.*$ +^LOCATION: .*$/m, + '\errverbose after FETCH_COUNT query with error'); + +like( + ( $node->psql( + 'postgres', + "SELECT error\\gdesc\n\\errverbose", + on_error_stop => 0))[2], + qr/\A^psql::1: ERROR: .*$ +^LINE 1: SELECT error$ +^ *^.*$ +^psql::2: error: ERROR: [0-9A-Z]{5}: .*$ +^LINE 1: SELECT error$ +^ *^.*$ +^LOCATION: .*$/m, + '\errverbose after \gdesc with error'); + +# Check behavior when using multiple -c and -f switches. +# Note that we cannot test backend-side errors as tests are unstable in this +# case: IPC::Run can complain about a SIGPIPE if psql quits before reading a +# query result. +my $tempdir = PostgreSQL::Test::Utils::tempdir; +$node->safe_psql('postgres', "CREATE TABLE tab_psql_single (a int);"); + +# Tests with ON_ERROR_STOP. +$node->command_ok( + [ + 'psql', '-X', + '--single-transaction', '-v', + 'ON_ERROR_STOP=1', '-c', + 'INSERT INTO tab_psql_single VALUES (1)', '-c', + 'INSERT INTO tab_psql_single VALUES (2)' + ], + 'ON_ERROR_STOP, --single-transaction and multiple -c switches'); +my $row_count = + $node->safe_psql('postgres', 'SELECT count(*) FROM tab_psql_single'); +is($row_count, '2', + '--single-transaction commits transaction, ON_ERROR_STOP and multiple -c switches' +); + +$node->command_fails( + [ + 'psql', '-X', + '--single-transaction', '-v', + 'ON_ERROR_STOP=1', '-c', + 'INSERT INTO tab_psql_single VALUES (3)', '-c', + "\\copy tab_psql_single FROM '$tempdir/nonexistent'" + ], + 'ON_ERROR_STOP, --single-transaction and multiple -c switches, error'); +$row_count = + $node->safe_psql('postgres', 'SELECT count(*) FROM tab_psql_single'); +is($row_count, '2', + 'client-side error rolls back transaction, ON_ERROR_STOP and multiple -c switches' +); + +# Tests mixing files and commands. +my $copy_sql_file = "$tempdir/tab_copy.sql"; +my $insert_sql_file = "$tempdir/tab_insert.sql"; +append_to_file($copy_sql_file, + "\\copy tab_psql_single FROM '$tempdir/nonexistent';"); +append_to_file($insert_sql_file, 'INSERT INTO tab_psql_single VALUES (4);'); +$node->command_ok( + [ + 'psql', '-X', '--single-transaction', '-v', + 'ON_ERROR_STOP=1', '-f', $insert_sql_file, '-f', + $insert_sql_file + ], + 'ON_ERROR_STOP, --single-transaction and multiple -f switches'); +$row_count = + $node->safe_psql('postgres', 'SELECT count(*) FROM tab_psql_single'); +is($row_count, '4', + '--single-transaction commits transaction, ON_ERROR_STOP and multiple -f switches' +); + +$node->command_fails( + [ + 'psql', '-X', '--single-transaction', '-v', + 'ON_ERROR_STOP=1', '-f', $insert_sql_file, '-f', + $copy_sql_file + ], + 'ON_ERROR_STOP, --single-transaction and multiple -f switches, error'); +$row_count = + $node->safe_psql('postgres', 'SELECT count(*) FROM tab_psql_single'); +is($row_count, '4', + 'client-side error rolls back transaction, ON_ERROR_STOP and multiple -f switches' +); + +# Tests without ON_ERROR_STOP. +# The last switch fails on \copy. The command returns a failure and the +# transaction commits. +$node->command_fails( + [ + 'psql', '-X', + '--single-transaction', '-f', + $insert_sql_file, '-f', + $insert_sql_file, '-c', + "\\copy tab_psql_single FROM '$tempdir/nonexistent'" + ], + 'no ON_ERROR_STOP, --single-transaction and multiple -f/-c switches'); +$row_count = + $node->safe_psql('postgres', 'SELECT count(*) FROM tab_psql_single'); +is($row_count, '6', + 'client-side error commits transaction, no ON_ERROR_STOP and multiple -f/-c switches' +); + +# The last switch fails on \copy coming from an input file. The command +# returns a success and the transaction commits. +$node->command_ok( + [ + 'psql', '-X', '--single-transaction', '-f', + $insert_sql_file, '-f', $insert_sql_file, '-f', + $copy_sql_file + ], + 'no ON_ERROR_STOP, --single-transaction and multiple -f switches'); +$row_count = + $node->safe_psql('postgres', 'SELECT count(*) FROM tab_psql_single'); +is($row_count, '8', + 'client-side error commits transaction, no ON_ERROR_STOP and multiple -f switches' +); + +# The last switch makes the command return a success, and the contents of +# the transaction commit even if there is a failure in-between. +$node->command_ok( + [ + 'psql', '-X', + '--single-transaction', '-c', + 'INSERT INTO tab_psql_single VALUES (5)', '-f', + $copy_sql_file, '-c', + 'INSERT INTO tab_psql_single VALUES (6)' + ], + 'no ON_ERROR_STOP, --single-transaction and multiple -c switches'); +$row_count = + $node->safe_psql('postgres', 'SELECT count(*) FROM tab_psql_single'); +is($row_count, '10', + 'client-side error commits transaction, no ON_ERROR_STOP and multiple -c switches' +); + +done_testing(); 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..2eea515 --- /dev/null +++ b/src/bin/psql/t/010_tab_completion.pl @@ -0,0 +1,452 @@ + +# Copyright (c) 2021-2022, PostgreSQL Global Development Group + +use strict; +use warnings; + +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; +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 = PostgreSQL::Test::Cluster->new('main'); +$node->init; +$node->start; + +# set up a few database objects +$node->safe_psql('postgres', + "CREATE TABLE tab1 (c1 int primary key, c2 text);\n" + . "CREATE TABLE mytab123 (f1 int, f2 text);\n" + . "CREATE TABLE mytab246 (f1 int, f2 text);\n" + . "CREATE TABLE \"mixedName\" (f1 int, f2 text);\n" + . "CREATE TYPE enum1 AS ENUM ('foo', 'bar', 'baz', 'BLACK');\n" + . "CREATE PUBLICATION some_publication;\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 = "${PostgreSQL::Test::Utils::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($PostgreSQL::Test::Utils::timeout_default); + +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($PostgreSQL::Test::Utils::timeout_default); + # 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 +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + + check_completion("\\r\n", qr/Query buffer reset.*postgres=# /s, + "\\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 +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + + check_completion("\025\n", qr/postgres=# /, "control-U works"); + return; +} + +# check basic command completion: SEL produces SELECT +check_completion("SEL\t", qr/SELECT /, "complete SEL to SELECT"); + +clear_query(); + +# check case variation is honored +check_completion("sel\t", qr/select /, "complete sel to select"); + +# check basic table name completion +check_completion("* from t\t", qr/\* from tab1 /, "complete t 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 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 handling of quoted names +check_completion( + "select * from \"my\t", + qr/select \* from "my\a?tab/, + "complete \"my to \"mytab when there are multiple choices"); + +check_completion( + "\t\t", + qr/"mytab123" +"mytab246"/, + "offer multiple quoted table choices"); + +# note: broken versions of libedit want to backslash the closing quote; +# not much we can do about that +check_completion("2\t", qr/246\\?" /, + "finish completion of one of multiple quoted table choices"); + +# note: broken versions of libedit may leave us in a state where psql +# thinks there's an unclosed double quote, so that we have to use +# clear_line not clear_query here +clear_line(); + +# check handling of mixed-case names +# note: broken versions of libedit want to backslash the closing quote; +# not much we can do about that +check_completion( + "select * from \"mi\t", + qr/"mixedName\\?" /, + "complete a mixed-case name"); + +# as above, must use clear_line not clear_query here +clear_line(); + +# check case folding +check_completion("select * from TAB\t", qr/tab1 /, "automatically fold case"); + +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 to \\drds"); + +# broken versions of libedit require clear_line not clear_query here +clear_line(); + +# check completion of a schema-qualified name +check_completion("select * from pub\t", + qr/public\./, "complete schema when relevant"); + +check_completion("tab\t", qr/tab1 /, "complete schema-qualified name"); + +clear_query(); + +check_completion( + "select * from PUBLIC.t\t", + qr/public\.tab1 /, + "automatically fold case in schema-qualified name"); + +clear_query(); + +# check interpretation of referenced names +check_completion( + "alter table tab1 drop constraint \t", + qr/tab1_pkey /, + "complete index name for referenced table"); + +clear_query(); + +check_completion( + "alter table TAB1 drop constraint \t", + qr/tab1_pkey /, + "complete index name for referenced table, with downcasing"); + +clear_query(); + +check_completion( + "alter table public.\"tab1\" drop constraint \t", + qr/tab1_pkey /, + "complete index name for referenced table, with schema and quoting"); + +clear_query(); + +# check variant where we're completing a qualified name from a refname +# (this one also checks successful completion in a multiline command) +check_completion( + "comment on constraint tab1_pkey \n on public.\t", + qr/public\.tab1/, + "complete qualified name from object reference"); + +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"); + +# broken versions of libedit require clear_line not clear_query here +clear_line(); + +# 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(); + +# check enum label completion +# some versions of readline/libedit require two tabs here, some only need one +# also, some versions will offer quotes, some will not +check_completion( + "ALTER TYPE enum1 RENAME VALUE 'ba\t\t", + qr|'?bar'? +'?baz'?|, + "offer multiple enum choices"); + +clear_line(); + +# enum labels are case sensitive, so this should complete BLACK immediately +check_completion( + "ALTER TYPE enum1 RENAME VALUE 'B\t", + qr|BLACK|, + "enum labels are case sensitive"); + +clear_line(); + +# check timezone name completion +check_completion("SET timezone TO am\t", + qr|'America/|, "offer partial timezone name"); + +check_completion("new_\t", qr|New_York|, "complete partial timezone name"); + +clear_line(); + +# check completion of a keyword offered in addition to object names; +# such a keyword should obey COMP_KEYWORD_CASE +foreach ( + [ 'lower', 'CO', 'column' ], + [ 'upper', 'co', 'COLUMN' ], + [ 'preserve-lower', 'co', 'column' ], + [ 'preserve-upper', 'CO', 'COLUMN' ],) +{ + my ($case, $in, $out) = @$_; + + check_completion( + "\\set COMP_KEYWORD_CASE $case\n", + qr/postgres=#/, + "set completion case to '$case'"); + check_completion("alter table tab1 rename $in\t\t\t", + qr|$out|, + "offer keyword $out for input $in, COMP_KEYWORD_CASE = $case"); + clear_query(); +} + +# alternate path where keyword comes from SchemaQuery +check_completion( + "DROP TYPE big\t", + qr/DROP TYPE bigint /, + "offer keyword from SchemaQuery"); + +clear_query(); + +# check create_command_generator +check_completion( + "CREATE TY\t", + qr/CREATE TYPE /, + "check create_command_generator"); + +clear_query(); + +# check words_after_create infrastructure +check_completion( + "CREATE TABLE mytab\t\t", + qr/mytab123 +mytab246/, + "check words_after_create"); + +clear_query(); + +# check VersionedQuery infrastructure +check_completion( + "DROP PUBLIC\t \t\t", + qr/DROP PUBLICATION\s+some_publication /, + "check VersionedQuery"); + +clear_query(); + +# hits ends_with() and logic for completing in multi-line queries +check_completion("analyze (\n\t\t", qr/VERBOSE/, + "check ANALYZE (VERBOSE ..."); + +clear_query(); + +# check completions for GUCs +check_completion( + "set interval\t\t", + qr/intervalstyle TO/, + "complete a GUC name"); +check_completion(" iso\t", qr/iso_8601 /, "complete a GUC enum value"); + +clear_query(); + +# same, for qualified GUC names +check_completion( + "DO \$\$begin end\$\$ LANGUAGE plpgsql;\n", + qr/postgres=# /, + "load plpgsql extension"); + +check_completion("set plpg\t", qr/plpg\a?sql\./, + "complete prefix of a GUC name"); +check_completion( + "var\t\t", + qr/variable_conflict TO/, + "complete a qualified GUC name"); +check_completion(" USE_C\t", + qr/use_column/, "complete a qualified GUC enum value"); + +clear_query(); + +# check completions for psql variables +check_completion("\\set VERB\t", qr/VERBOSITY /, + "complete a psql variable name"); +check_completion("def\t", qr/default /, "complete a psql variable value"); + +clear_query(); + +check_completion( + "\\echo :VERB\t", + qr/:VERBOSITY /, + "complete an interpolated psql variable name"); + +clear_query(); + +# check no-completions code path +check_completion("blarg \t\t", qr//, "check completion failure path"); + +clear_query(); + +# send psql an explicit \q to shut it down, else pty won't close properly +$timer->start($PostgreSQL::Test::Utils::timeout_default); +$in .= "\\q\n"; +finish $h or die "psql returned $?"; +$timer->reset; + +# done +$node->stop; +done_testing(); diff --git a/src/bin/psql/t/020_cancel.pl b/src/bin/psql/t/020_cancel.pl new file mode 100644 index 0000000..f4dbd36 --- /dev/null +++ b/src/bin/psql/t/020_cancel.pl @@ -0,0 +1,80 @@ + +# Copyright (c) 2021-2022, PostgreSQL Global Development Group + +use strict; +use warnings; + +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; +use Test::More; +use Time::HiRes qw(usleep); + +my $tempdir = PostgreSQL::Test::Utils::tempdir; + +my $node = PostgreSQL::Test::Cluster->new('main'); +$node->init; +$node->start; + +# Test query canceling by sending SIGINT to a running psql +# +# There is, as of this writing, no documented way to get the PID of +# the process from IPC::Run. As a workaround, we have psql print its +# own PID (which is the parent of the shell launched by psql) to a +# file. +SKIP: +{ + skip "cancel test requires a Unix shell", 2 if $windows_os; + + local %ENV = $node->_get_env(); + + my ($stdin, $stdout, $stderr); + + # Test whether shell supports $PPID. It's part of POSIX, but some + # pre-/non-POSIX shells don't support it (e.g., NetBSD). + $stdin = "\\! echo \$PPID"; + IPC::Run::run([ 'psql', '-X', '-v', 'ON_ERROR_STOP=1' ], + '<', \$stdin, '>', \$stdout, '2>', \$stderr); + $stdout =~ /^\d+$/ or skip "shell apparently does not support \$PPID", 2; + + # Now start the real test + my $h = IPC::Run::start([ 'psql', '-X', '-v', 'ON_ERROR_STOP=1' ], + \$stdin, \$stdout, \$stderr); + + # Get the PID + $stdout = ''; + $stderr = ''; + $stdin = "\\! echo \$PPID >$tempdir/psql.pid\n"; + pump $h while length $stdin; + my $count; + my $psql_pid; + until ( + -s "$tempdir/psql.pid" + and ($psql_pid = + PostgreSQL::Test::Utils::slurp_file("$tempdir/psql.pid")) =~ + /^\d+\n/s) + { + ($count++ < 100 * $PostgreSQL::Test::Utils::timeout_default) + or die "pid file did not appear"; + usleep(10_000); + } + + # Send sleep command and wait until the server has registered it + $stdin = "select pg_sleep($PostgreSQL::Test::Utils::timeout_default);\n"; + pump $h while length $stdin; + $node->poll_query_until('postgres', + q{SELECT (SELECT count(*) FROM pg_stat_activity WHERE query ~ '^select pg_sleep') > 0;} + ) or die "timed out"; + + # Send cancel request + kill 'INT', $psql_pid; + + my $result = finish $h; + + ok(!$result, 'query failed as expected'); + like( + $stderr, + qr/canceling statement due to user request/, + 'query was canceled'); +} + +done_testing(); diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c new file mode 100644 index 0000000..f6e7011 --- /dev/null +++ b/src/bin/psql/tab-complete.c @@ -0,0 +1,6238 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 +#include + +#include "catalog/pg_am_d.h" +#include "catalog/pg_class_d.h" +#include "common.h" +#include "common/keywords.h" +#include "libpq-fe.h" +#include "mb/pg_wchar.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 + +/* 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(). + * + * We also use this struct to define queries that use completion_ref_object, + * which is some object related to the one(s) we want to get the names of + * (for example, the table we want the indexes of). In that usage the + * objects we're completing might not have a schema of their own, but the + * reference object almost always does (passed in completion_ref_schema). + * + * 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(es), eg. + * "pg_catalog.pg_class c". Note that "pg_namespace n" and/or + * "pg_namespace nr" will be added automatically when needed. + */ + 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)". + * NULL if not needed. + */ + const char *viscondition; + + /* + * Namespace --- name of field to join to pg_namespace.oid when there is + * schema qualification. For example, "c.relnamespace". NULL if we don't + * want to join to pg_namespace (then any schema part in the input word + * will be ignored). + */ + const char *namespace; + + /* + * Result --- the base object name to return. For example, "c.relname". + */ + const char *result; + + /* + * In some cases, it's difficult to keep the query from returning the same + * object multiple times. Specify use_distinct to filter out duplicates. + */ + bool use_distinct; + + /* + * Additional literal strings (usually keywords) to be offered along with + * the query results. Provide a NULL-terminated array of constant + * strings, or NULL if none. + */ + const char *const *keywords; + + /* + * If this query uses completion_ref_object/completion_ref_schema, + * populate the remaining fields, else leave them NULL. When using this + * capability, catname must include the catalog that defines the + * completion_ref_object, and selcondition must include the join condition + * that connects it to the result's catalog. + * + * refname is the field that should be equated to completion_ref_object, + * for example "cr.relname". + */ + const char *refname; + + /* + * Visibility condition to use when completion_ref_schema is not set. For + * example, "pg_catalog.pg_table_is_visible(cr.oid)". NULL if not needed. + */ + const char *refviscondition; + + /* + * Name of field to join to pg_namespace.oid when completion_ref_schema is + * set. For example, "cr.relnamespace". NULL if we don't want to + * consider completion_ref_schema. + */ + const char *refnamespace; +} 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 VersionedQuery *completion_vquery; /* to pass a VersionedQuery */ +static const SchemaQuery *completion_squery; /* to pass a SchemaQuery */ +static char *completion_ref_object; /* name of reference object */ +static char *completion_ref_schema; /* schema name of reference object */ +static bool completion_case_sensitive; /* completion is case sensitive */ +static bool completion_verbatim; /* completion is verbatim */ +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 result from a query you pass it. (Perhaps one of those below?) + * We support both simple and versioned queries. + * 2) The result 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(). The QUERY_LIST and + * QUERY_PLUS forms combine such literal lists with a query result. + * 4) The list of attributes of the given table (possibly schema-qualified). + * 5) The list of arguments to the given function (possibly schema-qualified). + * + * The query is generally expected to return raw SQL identifiers; matching + * to what the user typed is done in a quoting-aware fashion. If what is + * returned is not SQL identifiers, use one of the VERBATIM forms, in which + * case the query results are matched to the user's text without double-quote + * processing (so if quoting is needed, you must provide it in the query + * results). + */ +#define COMPLETE_WITH_QUERY(query) \ + COMPLETE_WITH_QUERY_LIST(query, NULL) + +#define COMPLETE_WITH_QUERY_LIST(query, list) \ +do { \ + completion_charp = query; \ + completion_charpp = list; \ + completion_verbatim = false; \ + matches = rl_completion_matches(text, complete_from_query); \ +} while (0) + +#define COMPLETE_WITH_QUERY_PLUS(query, ...) \ +do { \ + static const char *const list[] = { __VA_ARGS__, NULL }; \ + COMPLETE_WITH_QUERY_LIST(query, list); \ +} while (0) + +#define COMPLETE_WITH_QUERY_VERBATIM(query) \ + COMPLETE_WITH_QUERY_VERBATIM_LIST(query, NULL) + +#define COMPLETE_WITH_QUERY_VERBATIM_LIST(query, list) \ +do { \ + completion_charp = query; \ + completion_charpp = list; \ + completion_verbatim = true; \ + matches = rl_completion_matches(text, complete_from_query); \ +} while (0) + +#define COMPLETE_WITH_QUERY_VERBATIM_PLUS(query, ...) \ +do { \ + static const char *const list[] = { __VA_ARGS__, NULL }; \ + COMPLETE_WITH_QUERY_VERBATIM_LIST(query, list); \ +} while (0) + +#define COMPLETE_WITH_VERSIONED_QUERY(query) \ + COMPLETE_WITH_VERSIONED_QUERY_LIST(query, NULL) + +#define COMPLETE_WITH_VERSIONED_QUERY_LIST(query, list) \ +do { \ + completion_vquery = query; \ + completion_charpp = list; \ + completion_verbatim = false; \ + matches = rl_completion_matches(text, complete_from_versioned_query); \ +} while (0) + +#define COMPLETE_WITH_VERSIONED_QUERY_PLUS(query, ...) \ +do { \ + static const char *const list[] = { __VA_ARGS__, NULL }; \ + COMPLETE_WITH_VERSIONED_QUERY_LIST(query, list); \ +} while (0) + +#define COMPLETE_WITH_SCHEMA_QUERY(query) \ + COMPLETE_WITH_SCHEMA_QUERY_LIST(query, NULL) + +#define COMPLETE_WITH_SCHEMA_QUERY_LIST(query, list) \ +do { \ + completion_squery = &(query); \ + completion_charpp = list; \ + completion_verbatim = false; \ + matches = rl_completion_matches(text, complete_from_schema_query); \ +} while (0) + +#define COMPLETE_WITH_SCHEMA_QUERY_PLUS(query, ...) \ +do { \ + static const char *const list[] = { __VA_ARGS__, NULL }; \ + COMPLETE_WITH_SCHEMA_QUERY_LIST(query, list); \ +} while (0) + +#define COMPLETE_WITH_SCHEMA_QUERY_VERBATIM(query) \ +do { \ + completion_squery = &(query); \ + completion_charpp = NULL; \ + completion_verbatim = true; \ + matches = rl_completion_matches(text, complete_from_schema_query); \ +} while (0) + +#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(query) \ + COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, NULL) + +#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, list) \ +do { \ + completion_squery = query; \ + completion_charpp = list; \ + completion_verbatim = false; \ + matches = rl_completion_matches(text, complete_from_versioned_schema_query); \ +} while (0) + +#define COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_PLUS(query, ...) \ +do { \ + static const char *const list[] = { __VA_ARGS__, NULL }; \ + COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(query, list); \ +} 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) \ + COMPLETE_WITH_ATTR_LIST(relation, NULL) + +#define COMPLETE_WITH_ATTR_LIST(relation, list) \ +do { \ + set_completion_reference(relation); \ + completion_squery = &(Query_for_list_of_attributes); \ + completion_charpp = list; \ + completion_verbatim = false; \ + matches = rl_completion_matches(text, complete_from_schema_query); \ +} while (0) + +#define COMPLETE_WITH_ATTR_PLUS(relation, ...) \ +do { \ + static const char *const list[] = { __VA_ARGS__, NULL }; \ + COMPLETE_WITH_ATTR_LIST(relation, list); \ +} while (0) + +/* + * libedit will typically include the literal's leading single quote in + * "text", while readline will not. Adapt our offered strings to fit. + * But include a quote if there's not one just before "text", to get the + * user off to the right start. + */ +#define COMPLETE_WITH_ENUM_VALUE(type) \ +do { \ + set_completion_reference(type); \ + if (text[0] == '\'' || \ + start == 0 || rl_line_buffer[start - 1] != '\'') \ + completion_squery = &(Query_for_list_of_enum_values_quoted); \ + else \ + completion_squery = &(Query_for_list_of_enum_values_unquoted); \ + completion_charpp = NULL; \ + completion_verbatim = true; \ + matches = rl_completion_matches(text, complete_from_schema_query); \ +} while (0) + +/* + * Timezone completion is mostly like enum label completion, but we work + * a little harder since this is a more common use-case. + */ +#define COMPLETE_WITH_TIMEZONE_NAME() \ +do { \ + static const char *const list[] = { "DEFAULT", NULL }; \ + if (text[0] == '\'') \ + completion_charp = Query_for_list_of_timezone_names_quoted_in; \ + else if (start == 0 || rl_line_buffer[start - 1] != '\'') \ + completion_charp = Query_for_list_of_timezone_names_quoted_out; \ + else \ + completion_charp = Query_for_list_of_timezone_names_unquoted; \ + completion_charpp = list; \ + completion_verbatim = true; \ + matches = rl_completion_matches(text, complete_from_query); \ +} while (0) + +#define COMPLETE_WITH_FUNCTION_ARG(function) \ +do { \ + set_completion_reference(function); \ + completion_squery = &(Query_for_list_of_arguments); \ + completion_charpp = NULL; \ + completion_verbatim = true; \ + matches = rl_completion_matches(text, complete_from_schema_query); \ +} while (0) + +/* + * Assembly instructions for schema queries + * + * Note that toast tables are not included in those queries to avoid + * unnecessary bloat in the completions generated. + */ + +static const SchemaQuery Query_for_constraint_of_table = { + .catname = "pg_catalog.pg_constraint con, pg_catalog.pg_class c1", + .selcondition = "con.conrelid=c1.oid", + .result = "con.conname", + .refname = "c1.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c1.oid)", + .refnamespace = "c1.relnamespace", +}; + +static const SchemaQuery Query_for_constraint_of_table_not_validated = { + .catname = "pg_catalog.pg_constraint con, pg_catalog.pg_class c1", + .selcondition = "con.conrelid=c1.oid and not con.convalidated", + .result = "con.conname", + .refname = "c1.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c1.oid)", + .refnamespace = "c1.relnamespace", +}; + +static const SchemaQuery Query_for_constraint_of_type = { + .catname = "pg_catalog.pg_constraint con, pg_catalog.pg_type t", + .selcondition = "con.contypid=t.oid", + .result = "con.conname", + .refname = "t.typname", + .refviscondition = "pg_catalog.pg_type_is_visible(t.oid)", + .refnamespace = "t.typnamespace", +}; + +static const SchemaQuery Query_for_index_of_table = { + .catname = "pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_index i", + .selcondition = "c1.oid=i.indrelid and i.indexrelid=c2.oid", + .result = "c2.relname", + .refname = "c1.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c1.oid)", + .refnamespace = "c1.relnamespace", +}; + +static const SchemaQuery Query_for_unique_index_of_table = { + .catname = "pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_index i", + .selcondition = "c1.oid=i.indrelid and i.indexrelid=c2.oid and i.indisunique", + .result = "c2.relname", + .refname = "c1.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c1.oid)", + .refnamespace = "c1.relnamespace", +}; + +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 = "p.proname", + }, + { + .catname = "pg_catalog.pg_proc p", + .selcondition = "p.proisagg", + .viscondition = "pg_catalog.pg_function_is_visible(p.oid)", + .namespace = "p.pronamespace", + .result = "p.proname", + } +}; + +static const SchemaQuery Query_for_list_of_arguments = { + .catname = "pg_catalog.pg_proc p", + .result = "pg_catalog.oidvectortypes(p.proargtypes)||')'", + .refname = "p.proname", + .refviscondition = "pg_catalog.pg_function_is_visible(p.oid)", + .refnamespace = "p.pronamespace", +}; + +static const SchemaQuery Query_for_list_of_attributes = { + .catname = "pg_catalog.pg_attribute a, pg_catalog.pg_class c", + .selcondition = "c.oid = a.attrelid and a.attnum > 0 and not a.attisdropped", + .result = "a.attname", + .refname = "c.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c.oid)", + .refnamespace = "c.relnamespace", +}; + +static const SchemaQuery Query_for_list_of_attribute_numbers = { + .catname = "pg_catalog.pg_attribute a, pg_catalog.pg_class c", + .selcondition = "c.oid = a.attrelid and a.attnum > 0 and not a.attisdropped", + .result = "a.attnum::pg_catalog.text", + .refname = "c.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c.oid)", + .refnamespace = "c.relnamespace", +}; + +static const char *const Keywords_for_list_of_datatypes[] = { + "bigint", + "boolean", + "character", + "double precision", + "integer", + "real", + "smallint", + + /* + * Note: currently there's no value in offering the following multiword + * type names, because tab completion cannot succeed for them: we can't + * disambiguate until somewhere in the second word, at which point we + * won't have the first word as context. ("double precision" does work, + * as long as no other type name begins with "double".) Leave them out to + * encourage users to use the PG-specific aliases, which we can complete. + */ +#ifdef NOT_USED + "bit varying", + "character varying", + "time with time zone", + "time without time zone", + "timestamp with time zone", + "timestamp without time zone", +#endif + NULL +}; + +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 = "t.typname", + .keywords = Keywords_for_list_of_datatypes, +}; + +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 = "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 = "t.typname", +}; + +static const SchemaQuery Query_for_list_of_enum_values_quoted = { + .catname = "pg_catalog.pg_enum e, pg_catalog.pg_type t", + .selcondition = "t.oid = e.enumtypid", + .result = "pg_catalog.quote_literal(enumlabel)", + .refname = "t.typname", + .refviscondition = "pg_catalog.pg_type_is_visible(t.oid)", + .refnamespace = "t.typnamespace", +}; + +static const SchemaQuery Query_for_list_of_enum_values_unquoted = { + .catname = "pg_catalog.pg_enum e, pg_catalog.pg_type t", + .selcondition = "t.oid = e.enumtypid", + .result = "e.enumlabel", + .refname = "t.typname", + .refviscondition = "pg_catalog.pg_type_is_visible(t.oid)", + .refnamespace = "t.typnamespace", +}; + +/* 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 = "p.proname", + }, + { + .catname = "pg_catalog.pg_proc p", + .viscondition = "pg_catalog.pg_function_is_visible(p.oid)", + .namespace = "p.pronamespace", + .result = "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 = "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 = "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 = "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 = "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 = "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 = "c.relname", +}; + +static const SchemaQuery Query_for_list_of_tables_for_constraint = { + .catname = "pg_catalog.pg_class c, pg_catalog.pg_constraint con", + .selcondition = "c.oid=con.conrelid and c.relkind IN (" + CppAsString2(RELKIND_RELATION) ", " + CppAsString2(RELKIND_PARTITIONED_TABLE) ")", + .viscondition = "pg_catalog.pg_table_is_visible(c.oid)", + .namespace = "c.relnamespace", + .result = "c.relname", + .use_distinct = true, + .refname = "con.conname", +}; + +static const SchemaQuery Query_for_list_of_tables_for_policy = { + .catname = "pg_catalog.pg_class c, pg_catalog.pg_policy p", + .selcondition = "c.oid=p.polrelid", + .viscondition = "pg_catalog.pg_table_is_visible(c.oid)", + .namespace = "c.relnamespace", + .result = "c.relname", + .use_distinct = true, + .refname = "p.polname", +}; + +static const SchemaQuery Query_for_list_of_tables_for_rule = { + .catname = "pg_catalog.pg_class c, pg_catalog.pg_rewrite r", + .selcondition = "c.oid=r.ev_class", + .viscondition = "pg_catalog.pg_table_is_visible(c.oid)", + .namespace = "c.relnamespace", + .result = "c.relname", + .use_distinct = true, + .refname = "r.rulename", +}; + +static const SchemaQuery Query_for_list_of_tables_for_trigger = { + .catname = "pg_catalog.pg_class c, pg_catalog.pg_trigger t", + .selcondition = "c.oid=t.tgrelid", + .viscondition = "pg_catalog.pg_table_is_visible(c.oid)", + .namespace = "c.relnamespace", + .result = "c.relname", + .use_distinct = true, + .refname = "t.tgname", +}; + +static const SchemaQuery Query_for_list_of_ts_configurations = { + .catname = "pg_catalog.pg_ts_config c", + .viscondition = "pg_catalog.pg_ts_config_is_visible(c.oid)", + .namespace = "c.cfgnamespace", + .result = "c.cfgname", +}; + +static const SchemaQuery Query_for_list_of_ts_dictionaries = { + .catname = "pg_catalog.pg_ts_dict d", + .viscondition = "pg_catalog.pg_ts_dict_is_visible(d.oid)", + .namespace = "d.dictnamespace", + .result = "d.dictname", +}; + +static const SchemaQuery Query_for_list_of_ts_parsers = { + .catname = "pg_catalog.pg_ts_parser p", + .viscondition = "pg_catalog.pg_ts_parser_is_visible(p.oid)", + .namespace = "p.prsnamespace", + .result = "p.prsname", +}; + +static const SchemaQuery Query_for_list_of_ts_templates = { + .catname = "pg_catalog.pg_ts_template t", + .viscondition = "pg_catalog.pg_ts_template_is_visible(t.oid)", + .namespace = "t.tmplnamespace", + .result = "t.tmplname", +}; + +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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "c.relname", +}; + +/* Relations supporting MERGE */ +static const SchemaQuery Query_for_list_of_mergetargets = { + .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 = "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 = "c.relname", +}; + +/* Relations supporting TRUNCATE */ +static const SchemaQuery Query_for_list_of_truncatables = { + .catname = "pg_catalog.pg_class c", + .selcondition = + "c.relkind IN (" CppAsString2(RELKIND_RELATION) ", " + CppAsString2(RELKIND_FOREIGN_TABLE) ", " + CppAsString2(RELKIND_PARTITIONED_TABLE) ")", + .viscondition = "pg_catalog.pg_table_is_visible(c.oid)", + .namespace = "c.relnamespace", + .result = "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 = "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 = "c.relname", +}; + +/* + * Relations supporting VACUUM are currently same as those supporting + * indexing. + */ +#define Query_for_list_of_vacuumables Query_for_list_of_indexables + +/* Relations supporting CLUSTER */ +static const SchemaQuery Query_for_list_of_clusterables = { + .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 = "c.relname", +}; + +static const SchemaQuery Query_for_list_of_constraints_with_schema = { + .catname = "pg_catalog.pg_constraint c", + .selcondition = "c.conrelid <> 0", + .namespace = "c.connamespace", + .result = "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 = "s.stxname", +}; + +static const SchemaQuery Query_for_list_of_collations = { + .catname = "pg_catalog.pg_collation c", + .selcondition = "c.collencoding IN (-1, pg_catalog.pg_char_to_encoding(pg_catalog.getdatabaseencoding()))", + .viscondition = "pg_catalog.pg_collation_is_visible(c.oid)", + .namespace = "c.collnamespace", + .result = "c.collname", +}; + +static const SchemaQuery Query_for_partition_of_table = { + .catname = "pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_inherits i", + .selcondition = "c1.oid=i.inhparent and i.inhrelid=c2.oid and c2.relispartition", + .viscondition = "pg_catalog.pg_table_is_visible(c2.oid)", + .namespace = "c2.relnamespace", + .result = "c2.relname", + .refname = "c1.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c1.oid)", + .refnamespace = "c1.relnamespace", +}; + +static const SchemaQuery Query_for_rule_of_table = { + .catname = "pg_catalog.pg_rewrite r, pg_catalog.pg_class c1", + .selcondition = "r.ev_class=c1.oid", + .result = "r.rulename", + .refname = "c1.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c1.oid)", + .refnamespace = "c1.relnamespace", +}; + +static const SchemaQuery Query_for_trigger_of_table = { + .catname = "pg_catalog.pg_trigger t, pg_catalog.pg_class c1", + .selcondition = "t.tgrelid=c1.oid and not t.tgisinternal", + .result = "t.tgname", + .refname = "c1.relname", + .refviscondition = "pg_catalog.pg_table_is_visible(c1.oid)", + .refnamespace = "c1.relnamespace", +}; + + +/* + * Queries to get lists of names of various kinds of things, possibly + * restricted to names matching a partially entered name. Don't use + * this method where the user might wish to enter a schema-qualified + * name; make a SchemaQuery instead. + * + * In these queries, there must be a restriction clause of the form + * output LIKE '%s' + * where "output" is the same string that the query returns. The %s + * will be replaced by a LIKE pattern to match the already-typed text. + * + * There can be a second '%s', which will be replaced by a suitably-escaped + * version of the string provided in completion_ref_object. If there is a + * third '%s', it will be replaced by a suitably-escaped version of the string + * provided in completion_ref_schema. NOTE: using completion_ref_object + * that way is usually the wrong thing, and using completion_ref_schema + * that way is always the wrong thing. Make a SchemaQuery instead. + */ + +#define Query_for_list_of_template_databases \ +"SELECT d.datname "\ +" FROM pg_catalog.pg_database d "\ +" WHERE d.datname LIKE '%s' "\ +" AND (d.datistemplate OR pg_catalog.pg_has_role(d.datdba, 'USAGE'))" + +#define Query_for_list_of_databases \ +"SELECT datname FROM pg_catalog.pg_database "\ +" WHERE datname LIKE '%s'" + +#define Query_for_list_of_tablespaces \ +"SELECT spcname FROM pg_catalog.pg_tablespace "\ +" WHERE spcname LIKE '%s'" + +#define Query_for_list_of_encodings \ +" SELECT DISTINCT pg_catalog.pg_encoding_to_char(conforencoding) "\ +" FROM pg_catalog.pg_conversion "\ +" WHERE pg_catalog.pg_encoding_to_char(conforencoding) LIKE pg_catalog.upper('%s')" + +#define Query_for_list_of_languages \ +"SELECT lanname "\ +" FROM pg_catalog.pg_language "\ +" WHERE lanname != 'internal' "\ +" AND lanname LIKE '%s'" + +#define Query_for_list_of_schemas \ +"SELECT nspname FROM pg_catalog.pg_namespace "\ +" WHERE nspname LIKE '%s'" + +/* Use COMPLETE_WITH_QUERY_VERBATIM with these queries for GUC names: */ +#define Query_for_list_of_alter_system_set_vars \ +"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\ +" WHERE context != 'internal' "\ +" AND pg_catalog.lower(name) LIKE pg_catalog.lower('%s')" + +#define Query_for_list_of_set_vars \ +"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\ +" WHERE context IN ('user', 'superuser') "\ +" AND pg_catalog.lower(name) LIKE pg_catalog.lower('%s')" + +#define Query_for_list_of_show_vars \ +"SELECT pg_catalog.lower(name) FROM pg_catalog.pg_settings "\ +" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')" + +#define Query_for_list_of_roles \ +" SELECT rolname "\ +" FROM pg_catalog.pg_roles "\ +" WHERE rolname LIKE '%s'" + +/* add these to Query_for_list_of_roles in GRANT contexts */ +#define Keywords_for_list_of_grant_roles \ +"PUBLIC", "CURRENT_ROLE", "CURRENT_USER", "SESSION_USER" + +#define Query_for_all_table_constraints \ +"SELECT conname "\ +" FROM pg_catalog.pg_constraint c "\ +" WHERE c.conrelid <> 0 "\ +" and conname LIKE '%s'" + +#define Query_for_list_of_fdws \ +" SELECT fdwname "\ +" FROM pg_catalog.pg_foreign_data_wrapper "\ +" WHERE fdwname LIKE '%s'" + +#define Query_for_list_of_servers \ +" SELECT srvname "\ +" FROM pg_catalog.pg_foreign_server "\ +" WHERE srvname LIKE '%s'" + +#define Query_for_list_of_user_mappings \ +" SELECT usename "\ +" FROM pg_catalog.pg_user_mappings "\ +" WHERE usename LIKE '%s'" + +#define Query_for_list_of_access_methods \ +" SELECT amname "\ +" FROM pg_catalog.pg_am "\ +" WHERE amname LIKE '%s'" + +#define Query_for_list_of_index_access_methods \ +" SELECT amname "\ +" FROM pg_catalog.pg_am "\ +" WHERE amname LIKE '%s' AND "\ +" amtype=" CppAsString2(AMTYPE_INDEX) + +#define Query_for_list_of_table_access_methods \ +" SELECT amname "\ +" FROM pg_catalog.pg_am "\ +" WHERE amname LIKE '%s' AND "\ +" amtype=" CppAsString2(AMTYPE_TABLE) + +#define Query_for_list_of_extensions \ +" SELECT extname "\ +" FROM pg_catalog.pg_extension "\ +" WHERE extname LIKE '%s'" + +#define Query_for_list_of_available_extensions \ +" SELECT name "\ +" FROM pg_catalog.pg_available_extensions "\ +" WHERE name LIKE '%s' AND installed_version IS NULL" + +#define Query_for_list_of_available_extension_versions \ +" SELECT version "\ +" FROM pg_catalog.pg_available_extension_versions "\ +" WHERE version LIKE '%s' AND name='%s'" + +#define Query_for_list_of_prepared_statements \ +" SELECT name "\ +" FROM pg_catalog.pg_prepared_statements "\ +" WHERE name LIKE '%s'" + +#define Query_for_list_of_event_triggers \ +" SELECT evtname "\ +" FROM pg_catalog.pg_event_trigger "\ +" WHERE evtname LIKE '%s'" + +#define Query_for_list_of_tablesample_methods \ +" SELECT 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 "\ +" proname LIKE '%s'" + +#define Query_for_list_of_policies \ +" SELECT polname "\ +" FROM pg_catalog.pg_policy "\ +" WHERE polname LIKE '%s'" + +#define Query_for_values_of_enum_GUC \ +" SELECT val FROM ( "\ +" SELECT name, pg_catalog.unnest(enumvals) AS val "\ +" FROM pg_catalog.pg_settings "\ +" ) ss "\ +" WHERE val LIKE '%s'"\ +" and pg_catalog.lower(name)=pg_catalog.lower('%s')" + +#define Query_for_list_of_channels \ +" SELECT channel "\ +" FROM pg_catalog.pg_listening_channels() AS channel "\ +" WHERE channel LIKE '%s'" + +#define Query_for_list_of_cursors \ +" SELECT name "\ +" FROM pg_catalog.pg_cursors "\ +" WHERE name LIKE '%s'" + +#define Query_for_list_of_timezone_names_unquoted \ +" SELECT name "\ +" FROM pg_catalog.pg_timezone_names() "\ +" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')" + +#define Query_for_list_of_timezone_names_quoted_out \ +"SELECT pg_catalog.quote_literal(name) AS name "\ +" FROM pg_catalog.pg_timezone_names() "\ +" WHERE pg_catalog.lower(name) LIKE pg_catalog.lower('%s')" + +#define Query_for_list_of_timezone_names_quoted_in \ +"SELECT pg_catalog.quote_literal(name) AS name "\ +" FROM pg_catalog.pg_timezone_names() "\ +" WHERE pg_catalog.quote_literal(pg_catalog.lower(name)) LIKE pg_catalog.lower('%s')" + +/* + * These object types were introduced later than our support cutoff of + * server version 9.2. 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 pubname " + " FROM pg_catalog.pg_publication " + " WHERE pubname LIKE '%s'" + }, + {0, NULL} +}; + +static const VersionedQuery Query_for_list_of_subscriptions[] = { + {100000, + " SELECT s.subname " + " FROM pg_catalog.pg_subscription s, pg_catalog.pg_database d " + " WHERE s.subname LIKE '%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; + /* Provide at most one of these three types of query: */ + const char *query; /* simple query, or NULL */ + const VersionedQuery *vquery; /* versioned query, or NULL */ + const SchemaQuery *squery; /* schema query, or NULL */ + const char *const *keywords; /* keywords to be offered as well */ + 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) + +/* When we have DROP USER etc, also offer MAPPING FOR */ +static const char *const Keywords_for_user_thing[] = { + "MAPPING FOR", + NULL +}; + +static const pgsql_thing_t words_after_create[] = { + {"ACCESS METHOD", NULL, 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", NULL, NULL, &Query_for_list_of_collations}, + + /* + * CREATE CONSTRAINT TRIGGER is not supported here because it is designed + * to be used only by pg_dump. + */ + {"CONFIGURATION", NULL, NULL, &Query_for_list_of_ts_configurations, NULL, THING_NO_SHOW}, + {"CONVERSION", "SELECT conname FROM pg_catalog.pg_conversion WHERE conname LIKE '%s'"}, + {"DATABASE", Query_for_list_of_databases}, + {"DEFAULT PRIVILEGES", NULL, NULL, NULL, NULL, THING_NO_CREATE | THING_NO_DROP}, + {"DICTIONARY", NULL, NULL, &Query_for_list_of_ts_dictionaries, 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, 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, NULL, THING_NO_DROP | THING_NO_ALTER}, + {"OWNED", NULL, NULL, NULL, NULL, THING_NO_CREATE | THING_NO_ALTER}, /* for DROP OWNED BY ... */ + {"PARSER", NULL, NULL, &Query_for_list_of_ts_parsers, 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, NULL, THING_NO_CREATE}, + {"RULE", "SELECT rulename FROM pg_catalog.pg_rules WHERE rulename LIKE '%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, 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, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE TEMP TABLE + * ... */ + {"TEMPLATE", NULL, NULL, &Query_for_list_of_ts_templates, NULL, THING_NO_SHOW}, + {"TEMPORARY", NULL, NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE TEMPORARY + * TABLE ... */ + {"TEXT SEARCH", NULL, NULL, NULL}, + {"TRANSFORM", NULL, NULL, NULL, NULL, THING_NO_ALTER}, + {"TRIGGER", "SELECT tgname FROM pg_catalog.pg_trigger WHERE tgname LIKE '%s' AND NOT tgisinternal"}, + {"TYPE", NULL, NULL, &Query_for_list_of_datatypes}, + {"UNIQUE", NULL, NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE UNIQUE + * INDEX ... */ + {"UNLOGGED", NULL, NULL, NULL, NULL, THING_NO_DROP | THING_NO_ALTER}, /* for CREATE UNLOGGED + * TABLE ... */ + {"USER", Query_for_list_of_roles, NULL, NULL, Keywords_for_user_thing}, + {"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 *const *keywords, + bool verbatim, + const char *text, int state); +static void set_completion_reference(const char *word); +static void set_completion_reference_verbatim(const char *word); +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 char *make_like_pattern(const char *word); +static void parse_identifier(const char *ident, + char **schemaname, char **objectname, + bool *schemaquoted, bool *objectquoted); +static char *requote_identifier(const char *schemaname, const char *objectname, + bool quote_schema, bool quote_object); +static bool identifier_needs_quotes(const char *ident); +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; + + /* + * Ideally we'd include '"' in rl_completer_quote_characters too, which + * should allow us to complete quoted identifiers that include spaces. + * However, the library support for rl_completer_quote_characters is + * presently too inconsistent to want to mess with that. (Note in + * particular that libedit has this variable but completely ignores it.) + */ + 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 FOREIGN SCHEMA", "INSERT INTO", "LISTEN", "LOAD", "LOCK", + "MERGE INTO", "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", "\\dconfig", "\\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", + "\\dt", "\\dT", "\\dv", "\\du", "\\dx", "\\dX", "\\dy", + "\\echo", "\\edit", "\\ef", "\\elif", "\\else", "\\encoding", + "\\endif", "\\errverbose", "\\ev", + "\\f", + "\\g", "\\gdesc", "\\getenv", "\\gexec", "\\gset", "\\gx", + "\\help", "\\html", + "\\if", "\\include", "\\include_relative", "\\ir", + "\\list", "\\lo_import", "\\lo_export", "\\lo_list", "\\lo_unlink", + "\\out", + "\\password", "\\print", "\\prompt", "\\pset", + "\\qecho", "\\quit", + "\\reset", + "\\s", "\\set", "\\setenv", "\\sf", "\\sv", + "\\t", "\\T", "\\timing", + "\\unset", + "\\x", + "\\warn", "\\watch", "\\write", + "\\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. */ + rl_completion_append_character = ' '; + + /* Clear a few things. */ + completion_charp = NULL; + completion_charpp = NULL; + completion_vquery = NULL; + completion_squery = NULL; + completion_ref_object = NULL; + completion_ref_schema = 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", "TRIGGER"); + +/* 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_PLUS(Query_for_list_of_tables, + "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 */ + else if (Matches("ALTER", "AGGREGATE|FUNCTION|PROCEDURE|ROUTINE", MatchAny)) + COMPLETE_WITH("("); + /* ALTER AGGREGATE (...) */ + else if (Matches("ALTER", "AGGREGATE", MatchAny, MatchAny)) + { + if (ends_with(prev_wd, ')')) + COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA"); + else + COMPLETE_WITH_FUNCTION_ARG(prev2_wd); + } + /* ALTER FUNCTION,PROCEDURE,ROUTINE (...) */ + else if (Matches("ALTER", "FUNCTION|PROCEDURE|ROUTINE", MatchAny, MatchAny)) + { + if (ends_with(prev_wd, ')')) + COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA", + "DEPENDS ON EXTENSION", "NO DEPENDS ON EXTENSION"); + else + COMPLETE_WITH_FUNCTION_ARG(prev2_wd); + } + + /* ALTER PUBLICATION */ + else if (Matches("ALTER", "PUBLICATION", MatchAny)) + COMPLETE_WITH("ADD", "DROP", "OWNER TO", "RENAME TO", "SET"); + /* ALTER PUBLICATION ADD */ + else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD")) + COMPLETE_WITH("TABLES IN SCHEMA", "TABLE"); + else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD|SET", "TABLE") || + (HeadMatches("ALTER", "PUBLICATION", MatchAny, "ADD|SET", "TABLE") && + ends_with(prev_wd, ','))) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); + + /* + * "ALTER PUBLICATION SET TABLE WHERE (" - complete with + * table attributes + * + * "ALTER PUBLICATION ADD TABLE WHERE (" - complete with + * table attributes + */ + else if (HeadMatches("ALTER", "PUBLICATION", MatchAny) && TailMatches("WHERE")) + COMPLETE_WITH("("); + else if (HeadMatches("ALTER", "PUBLICATION", MatchAny) && TailMatches("WHERE", "(")) + COMPLETE_WITH_ATTR(prev3_wd); + else if (HeadMatches("ALTER", "PUBLICATION", MatchAny, "ADD|SET", "TABLE") && + !TailMatches("WHERE", "(*)")) + COMPLETE_WITH(",", "WHERE ("); + else if (HeadMatches("ALTER", "PUBLICATION", MatchAny, "ADD|SET", "TABLE")) + COMPLETE_WITH(","); + /* ALTER PUBLICATION DROP */ + else if (Matches("ALTER", "PUBLICATION", MatchAny, "DROP")) + COMPLETE_WITH("TABLES IN SCHEMA", "TABLE"); + /* ALTER PUBLICATION SET */ + else if (Matches("ALTER", "PUBLICATION", MatchAny, "SET")) + COMPLETE_WITH("(", "TABLES IN SCHEMA", "TABLE"); + else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD|DROP|SET", "TABLES", "IN", "SCHEMA")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_schemas + " AND nspname NOT LIKE E'pg\\\\_%%'", + "CURRENT_SCHEMA"); + /* ALTER PUBLICATION SET ( */ + else if (HeadMatches("ALTER", "PUBLICATION", MatchAny) && TailMatches("SET", "(")) + COMPLETE_WITH("publish", "publish_via_partition_root"); + /* ALTER SUBSCRIPTION */ + else if (Matches("ALTER", "SUBSCRIPTION", MatchAny)) + COMPLETE_WITH("CONNECTION", "ENABLE", "DISABLE", "OWNER TO", + "RENAME TO", "REFRESH PUBLICATION", "SET", "SKIP (", + "ADD PUBLICATION", "DROP PUBLICATION"); + /* ALTER SUBSCRIPTION REFRESH PUBLICATION */ + else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && + TailMatches("REFRESH", "PUBLICATION")) + COMPLETE_WITH("WITH ("); + /* ALTER SUBSCRIPTION REFRESH PUBLICATION WITH ( */ + else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && + TailMatches("REFRESH", "PUBLICATION", "WITH", "(")) + COMPLETE_WITH("copy_data"); + /* ALTER SUBSCRIPTION SET */ + else if (Matches("ALTER", "SUBSCRIPTION", MatchAny, "SET")) + COMPLETE_WITH("(", "PUBLICATION"); + /* ALTER SUBSCRIPTION SET ( */ + else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches("SET", "(")) + COMPLETE_WITH("binary", "disable_on_error", "slot_name", "streaming", "synchronous_commit"); + /* ALTER SUBSCRIPTION SKIP ( */ + else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches("SKIP", "(")) + COMPLETE_WITH("lsn"); + /* ALTER SUBSCRIPTION SET PUBLICATION */ + else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches("SET", "PUBLICATION")) + { + /* complete with nothing here as this refers to remote publications */ + } + /* ALTER SUBSCRIPTION ADD|DROP|SET PUBLICATION */ + else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && + TailMatches("ADD|DROP|SET", "PUBLICATION", MatchAny)) + COMPLETE_WITH("WITH ("); + /* ALTER SUBSCRIPTION ADD|DROP|SET PUBLICATION WITH ( */ + else if (HeadMatches("ALTER", "SUBSCRIPTION", MatchAny) && + TailMatches("ADD|DROP|SET", "PUBLICATION", MatchAny, "WITH", "(")) + COMPLETE_WITH("copy_data", "refresh"); + + /* ALTER SCHEMA */ + else if (Matches("ALTER", "SCHEMA", MatchAny)) + COMPLETE_WITH("OWNER TO", "RENAME TO"); + + /* ALTER COLLATION */ + else if (Matches("ALTER", "COLLATION", MatchAny)) + COMPLETE_WITH("OWNER TO", "REFRESH VERSION", "RENAME TO", "SET SCHEMA"); + + /* ALTER CONVERSION */ + else if (Matches("ALTER", "CONVERSION", MatchAny)) + COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA"); + + /* ALTER DATABASE */ + else if (Matches("ALTER", "DATABASE", MatchAny)) + COMPLETE_WITH("RESET", "SET", "OWNER TO", "REFRESH COLLATION VERSION", "RENAME TO", + "IS_TEMPLATE", "ALLOW_CONNECTIONS", + "CONNECTION LIMIT"); + + /* ALTER DATABASE 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 */ + else if (Matches("ALTER", "EVENT", "TRIGGER", MatchAny)) + COMPLETE_WITH("DISABLE", "ENABLE", "OWNER TO", "RENAME TO"); + + /* ALTER EVENT TRIGGER ENABLE */ + else if (Matches("ALTER", "EVENT", "TRIGGER", MatchAny, "ENABLE")) + COMPLETE_WITH("REPLICA", "ALWAYS"); + + /* ALTER EXTENSION */ + else if (Matches("ALTER", "EXTENSION", MatchAny)) + COMPLETE_WITH("ADD", "DROP", "UPDATE", "SET SCHEMA"); + + /* ALTER EXTENSION UPDATE */ + else if (Matches("ALTER", "EXTENSION", MatchAny, "UPDATE")) + COMPLETE_WITH("TO"); + + /* ALTER EXTENSION UPDATE TO */ + else if (Matches("ALTER", "EXTENSION", MatchAny, "UPDATE", "TO")) + { + set_completion_reference(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 */ + else if (Matches("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny)) + COMPLETE_WITH("HANDLER", "VALIDATOR", "NO", + "OPTIONS", "OWNER TO", "RENAME TO"); + else if (Matches("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny, "NO")) + COMPLETE_WITH("HANDLER", "VALIDATOR"); + + /* ALTER FOREIGN TABLE */ + 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_PLUS(Query_for_list_of_indexes, + "ALL IN TABLESPACE"); + /* ALTER INDEX */ + else if (Matches("ALTER", "INDEX", MatchAny)) + COMPLETE_WITH("ALTER COLUMN", "OWNER TO", "RENAME TO", "SET", + "RESET", "ATTACH PARTITION", + "DEPENDS ON EXTENSION", "NO DEPENDS ON EXTENSION"); + 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); + /* ALTER INDEX ALTER */ + else if (Matches("ALTER", "INDEX", MatchAny, "ALTER")) + COMPLETE_WITH("COLUMN"); + /* ALTER INDEX ALTER COLUMN */ + else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY_VERBATIM(Query_for_list_of_attribute_numbers); + } + /* ALTER INDEX ALTER COLUMN */ + else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN", MatchAny)) + COMPLETE_WITH("SET STATISTICS"); + /* ALTER INDEX ALTER COLUMN SET */ + else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN", MatchAny, "SET")) + COMPLETE_WITH("STATISTICS"); + /* ALTER INDEX ALTER COLUMN 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 SET */ + else if (Matches("ALTER", "INDEX", MatchAny, "SET")) + COMPLETE_WITH("(", "TABLESPACE"); + /* ALTER INDEX RESET */ + else if (Matches("ALTER", "INDEX", MatchAny, "RESET")) + COMPLETE_WITH("("); + /* ALTER INDEX SET|RESET ( */ + else if (Matches("ALTER", "INDEX", MatchAny, "RESET", "(")) + COMPLETE_WITH("fillfactor", + "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 =", + "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 */ + else if (Matches("ALTER", "LANGUAGE", MatchAny)) + COMPLETE_WITH("OWNER TO", "RENAME TO"); + + /* ALTER LARGE OBJECT */ + else if (Matches("ALTER", "LARGE", "OBJECT", MatchAny)) + COMPLETE_WITH("OWNER TO"); + + /* ALTER MATERIALIZED VIEW */ + else if (Matches("ALTER", "MATERIALIZED", "VIEW")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_matviews, + "ALL IN TABLESPACE"); + + /* ALTER USER,ROLE */ + 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 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 */ + else if (Matches("ALTER", "DOMAIN", MatchAny)) + COMPLETE_WITH("ADD", "DROP", "OWNER TO", "RENAME", "SET", + "VALIDATE CONSTRAINT"); + /* ALTER DOMAIN DROP */ + else if (Matches("ALTER", "DOMAIN", MatchAny, "DROP")) + COMPLETE_WITH("CONSTRAINT", "DEFAULT", "NOT NULL"); + /* ALTER DOMAIN DROP|RENAME|VALIDATE CONSTRAINT */ + else if (Matches("ALTER", "DOMAIN", MatchAny, "DROP|RENAME|VALIDATE", "CONSTRAINT")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_constraint_of_type); + } + /* ALTER DOMAIN RENAME */ + else if (Matches("ALTER", "DOMAIN", MatchAny, "RENAME")) + COMPLETE_WITH("CONSTRAINT", "TO"); + /* ALTER DOMAIN RENAME CONSTRAINT */ + else if (Matches("ALTER", "DOMAIN", MatchAny, "RENAME", "CONSTRAINT", MatchAny)) + COMPLETE_WITH("TO"); + + /* ALTER DOMAIN SET */ + else if (Matches("ALTER", "DOMAIN", MatchAny, "SET")) + COMPLETE_WITH("DEFAULT", "NOT NULL", "SCHEMA"); + /* ALTER SEQUENCE */ + else if (Matches("ALTER", "SEQUENCE", MatchAny)) + COMPLETE_WITH("AS", "INCREMENT", "MINVALUE", "MAXVALUE", "RESTART", + "NO", "CACHE", "CYCLE", "SET", "OWNED BY", + "OWNER TO", "RENAME TO"); + /* ALTER SEQUENCE AS */ + else if (TailMatches("ALTER", "SEQUENCE", MatchAny, "AS")) + COMPLETE_WITH_CS("smallint", "integer", "bigint"); + /* ALTER SEQUENCE NO */ + else if (Matches("ALTER", "SEQUENCE", MatchAny, "NO")) + COMPLETE_WITH("MINVALUE", "MAXVALUE", "CYCLE"); + /* ALTER SEQUENCE SET */ + else if (Matches("ALTER", "SEQUENCE", MatchAny, "SET")) + COMPLETE_WITH("SCHEMA", "LOGGED", "UNLOGGED"); + /* ALTER SERVER */ + else if (Matches("ALTER", "SERVER", MatchAny)) + COMPLETE_WITH("VERSION", "OPTIONS", "OWNER TO", "RENAME TO"); + /* ALTER SERVER 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_VERBATIM_PLUS(Query_for_list_of_alter_system_set_vars, + "ALL"); + else if (Matches("ALTER", "SYSTEM", "SET", MatchAny)) + COMPLETE_WITH("TO"); + /* ALTER VIEW */ + 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_PLUS(prev2_wd, "COLUMN", "TO"); + else if (Matches("ALTER", "VIEW", MatchAny, "ALTER|RENAME", "COLUMN")) + COMPLETE_WITH_ATTR(prev3_wd); + /* ALTER VIEW xxx ALTER [ COLUMN ] yyy */ + else if (Matches("ALTER", "VIEW", MatchAny, "ALTER", MatchAny) || + Matches("ALTER", "VIEW", MatchAny, "ALTER", "COLUMN", MatchAny)) + COMPLETE_WITH("SET DEFAULT", "DROP DEFAULT"); + /* 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 */ + else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny)) + COMPLETE_WITH("ALTER COLUMN", "CLUSTER ON", "DEPENDS ON EXTENSION", + "NO DEPENDS ON EXTENSION", "OWNER TO", "RENAME", + "RESET (", "SET"); + /* ALTER MATERIALIZED VIEW xxx RENAME */ + else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny, "RENAME")) + COMPLETE_WITH_ATTR_PLUS(prev2_wd, "COLUMN", "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("(", "ACCESS METHOD", "SCHEMA", "TABLESPACE", "WITHOUT CLUSTER"); + /* ALTER MATERIALIZED VIEW xxx SET ACCESS METHOD */ + else if (Matches("ALTER", "MATERIALIZED", "VIEW", MatchAny, "SET", "ACCESS", "METHOD")) + COMPLETE_WITH_QUERY(Query_for_list_of_table_access_methods); + + /* ALTER POLICY */ + else if (Matches("ALTER", "POLICY")) + COMPLETE_WITH_QUERY(Query_for_list_of_policies); + /* ALTER POLICY ON */ + else if (Matches("ALTER", "POLICY", MatchAny)) + COMPLETE_WITH("ON"); + /* ALTER POLICY ON
*/ + else if (Matches("ALTER", "POLICY", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_policy); + } + /* ALTER POLICY ON
- show options */ + else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny)) + COMPLETE_WITH("RENAME TO", "TO", "USING (", "WITH CHECK ("); + /* ALTER POLICY ON
TO */ + else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny, "TO")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles, + Keywords_for_list_of_grant_roles); + /* ALTER POLICY ON
USING ( */ + else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny, "USING")) + COMPLETE_WITH("("); + /* ALTER POLICY ON
WITH CHECK ( */ + else if (Matches("ALTER", "POLICY", MatchAny, "ON", MatchAny, "WITH", "CHECK")) + COMPLETE_WITH("("); + + /* ALTER RULE , add ON */ + else if (Matches("ALTER", "RULE", MatchAny)) + COMPLETE_WITH("ON"); + + /* If we have ALTER RULE ON, then add the correct tablename */ + else if (Matches("ALTER", "RULE", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_rule); + } + + /* ALTER RULE ON */ + else if (Matches("ALTER", "RULE", MatchAny, "ON", MatchAny)) + COMPLETE_WITH("RENAME TO"); + + /* ALTER STATISTICS */ + else if (Matches("ALTER", "STATISTICS", MatchAny)) + COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA", "SET STATISTICS"); + + /* ALTER TRIGGER , add ON */ + else if (Matches("ALTER", "TRIGGER", MatchAny)) + COMPLETE_WITH("ON"); + + else if (Matches("ALTER", "TRIGGER", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_trigger); + } + + /* ALTER TRIGGER ON */ + else if (Matches("ALTER", "TRIGGER", MatchAny, "ON", MatchAny)) + COMPLETE_WITH("RENAME TO", "DEPENDS ON EXTENSION", + "NO DEPENDS ON EXTENSION"); + + /* + * If we detect ALTER TABLE , suggest sub commands + */ + else if (Matches("ALTER", "TABLE", MatchAny)) + COMPLETE_WITH("ADD", "ALTER", "CLUSTER ON", "DISABLE", "DROP", + "ENABLE", "INHERIT", "NO", "RENAME", "RESET", + "OWNER TO", "SET", "VALIDATE CONSTRAINT", + "REPLICA IDENTITY", "ATTACH PARTITION", + "DETACH PARTITION", "FORCE ROW LEVEL SECURITY"); + /* ALTER TABLE xxx ADD */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD")) + { + /* make sure to keep this list and the !Matches() below in sync */ + COMPLETE_WITH("COLUMN", "CONSTRAINT", "CHECK", "UNIQUE", "PRIMARY KEY", + "EXCLUDE", "FOREIGN KEY"); + } + /* ALTER TABLE xxx ADD [COLUMN] yyy */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "COLUMN", MatchAny) || + (Matches("ALTER", "TABLE", MatchAny, "ADD", MatchAny) && + !Matches("ALTER", "TABLE", MatchAny, "ADD", "COLUMN|CONSTRAINT|CHECK|UNIQUE|PRIMARY|EXCLUDE|FOREIGN"))) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + /* ALTER TABLE xxx ADD CONSTRAINT yyy */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "CONSTRAINT", MatchAny)) + COMPLETE_WITH("CHECK", "UNIQUE", "PRIMARY KEY", "EXCLUDE", "FOREIGN KEY"); + /* ALTER TABLE xxx ADD [CONSTRAINT yyy] (PRIMARY KEY|UNIQUE) */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "PRIMARY", "KEY") || + Matches("ALTER", "TABLE", MatchAny, "ADD", "UNIQUE") || + Matches("ALTER", "TABLE", MatchAny, "ADD", "CONSTRAINT", MatchAny, "PRIMARY", "KEY") || + Matches("ALTER", "TABLE", MatchAny, "ADD", "CONSTRAINT", MatchAny, "UNIQUE")) + COMPLETE_WITH("(", "USING INDEX"); + /* ALTER TABLE xxx ADD PRIMARY KEY USING INDEX */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "PRIMARY", "KEY", "USING", "INDEX")) + { + set_completion_reference(prev6_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_unique_index_of_table); + } + /* ALTER TABLE xxx ADD UNIQUE USING INDEX */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "UNIQUE", "USING", "INDEX")) + { + set_completion_reference(prev5_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_unique_index_of_table); + } + /* ALTER TABLE xxx ADD CONSTRAINT yyy PRIMARY KEY USING INDEX */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "CONSTRAINT", MatchAny, + "PRIMARY", "KEY", "USING", "INDEX")) + { + set_completion_reference(prev8_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_unique_index_of_table); + } + /* ALTER TABLE xxx ADD CONSTRAINT yyy UNIQUE USING INDEX */ + else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "CONSTRAINT", MatchAny, + "UNIQUE", "USING", "INDEX")) + { + set_completion_reference(prev7_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_unique_index_of_table); + } + /* 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")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_rule_of_table); + } + else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", MatchAny, "RULE")) + { + set_completion_reference(prev4_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_rule_of_table); + } + else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", "TRIGGER")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_trigger_of_table); + } + else if (Matches("ALTER", "TABLE", MatchAny, "ENABLE", MatchAny, "TRIGGER")) + { + set_completion_reference(prev4_wd); + COMPLETE_WITH_SCHEMA_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 */ + else if (Matches("ALTER", "TABLE", MatchAny, "NO")) + COMPLETE_WITH("FORCE ROW LEVEL SECURITY", "INHERIT"); + /* 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")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_rule_of_table); + } + else if (Matches("ALTER", "TABLE", MatchAny, "DISABLE", "TRIGGER")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_trigger_of_table); + } + + /* ALTER TABLE xxx ALTER */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER")) + COMPLETE_WITH_ATTR_PLUS(prev2_wd, "COLUMN", "CONSTRAINT"); + + /* ALTER TABLE xxx RENAME */ + else if (Matches("ALTER", "TABLE", MatchAny, "RENAME")) + COMPLETE_WITH_ATTR_PLUS(prev2_wd, "COLUMN", "CONSTRAINT", "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 DROP, provide COLUMN or CONSTRAINT */ + else if (Matches("ALTER", "TABLE", MatchAny, "DROP")) + COMPLETE_WITH("COLUMN", "CONSTRAINT"); + /* If we have ALTER TABLE DROP COLUMN, provide list of columns */ + else if (Matches("ALTER", "TABLE", MatchAny, "DROP", "COLUMN")) + COMPLETE_WITH_ATTR(prev3_wd); + /* ALTER TABLE ALTER|DROP|RENAME CONSTRAINT */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER|DROP|RENAME", "CONSTRAINT")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_constraint_of_table); + } + /* ALTER TABLE VALIDATE CONSTRAINT */ + else if (Matches("ALTER", "TABLE", MatchAny, "VALIDATE", "CONSTRAINT")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_constraint_of_table_not_validated); + } + /* ALTER TABLE ALTER [COLUMN] */ + 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] SET */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET")) + COMPLETE_WITH("(", "COMPRESSION", "DEFAULT", "NOT NULL", "STATISTICS", "STORAGE"); + /* ALTER TABLE ALTER [COLUMN] 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] 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] 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] 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")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_index_of_table); + } + /* If we have ALTER TABLE SET, provide list of attributes and '(' */ + else if (Matches("ALTER", "TABLE", MatchAny, "SET")) + COMPLETE_WITH("(", "ACCESS METHOD", "LOGGED", "SCHEMA", + "TABLESPACE", "UNLOGGED", "WITH", "WITHOUT"); + + /* + * If we have ALTER TABLE SET ACCESS METHOD provide a list of table + * AMs. + */ + else if (Matches("ALTER", "TABLE", MatchAny, "SET", "ACCESS", "METHOD")) + COMPLETE_WITH_QUERY(Query_for_list_of_table_access_methods); + + /* + * If we have ALTER TABLE 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 SET WITHOUT provide CLUSTER or OIDS */ + else if (Matches("ALTER", "TABLE", MatchAny, "SET", "WITHOUT")) + COMPLETE_WITH("CLUSTER", "OIDS"); + /* ALTER TABLE RESET */ + else if (Matches("ALTER", "TABLE", MatchAny, "RESET")) + COMPLETE_WITH("("); + /* ALTER TABLE 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")) + { + set_completion_reference(prev5_wd); + COMPLETE_WITH_SCHEMA_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 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 DETACH PARTITION, provide a list of + * partitions of . + */ + else if (Matches("ALTER", "TABLE", MatchAny, "DETACH", "PARTITION")) + { + set_completion_reference(prev3_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_partition_of_table); + } + else if (Matches("ALTER", "TABLE", MatchAny, "DETACH", "PARTITION", MatchAny)) + COMPLETE_WITH("CONCURRENTLY", "FINALIZE"); + + /* ALTER TABLESPACE with RENAME TO, OWNER TO, SET, RESET */ + else if (Matches("ALTER", "TABLESPACE", MatchAny)) + COMPLETE_WITH("RENAME TO", "OWNER TO", "SET", "RESET"); + /* ALTER TABLESPACE SET|RESET */ + else if (Matches("ALTER", "TABLESPACE", MatchAny, "SET|RESET")) + COMPLETE_WITH("("); + /* ALTER TABLESPACE 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 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 ADD with actions */ + else if (Matches("ALTER", "TYPE", MatchAny, "ADD")) + COMPLETE_WITH("ATTRIBUTE", "VALUE"); + /* ALTER TYPE 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 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 */ + else if (Matches("ALTER", "TYPE", MatchAny, "ALTER", "ATTRIBUTE", MatchAny)) + COMPLETE_WITH("TYPE"); + /* complete ALTER GROUP */ + else if (Matches("ALTER", "GROUP", MatchAny)) + COMPLETE_WITH("ADD USER", "DROP USER", "RENAME TO"); + /* complete ALTER GROUP ADD|DROP with USER */ + else if (Matches("ALTER", "GROUP", MatchAny, "ADD|DROP")) + COMPLETE_WITH("USER"); + /* complete ALTER GROUP 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 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_PLUS(Query_for_list_of_analyzables, + "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); + +/* 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); + else if (Matches("CALL", MatchAny)) + COMPLETE_WITH("("); +/* CLOSE */ + else if (Matches("CLOSE")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_cursors, + "ALL"); +/* CLUSTER */ + else if (Matches("CLUSTER")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_clusterables, + "VERBOSE"); + else if (Matches("CLUSTER", "VERBOSE") || + Matches("CLUSTER", "(*)")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_clusterables); + /* If we have CLUSTER , then add "USING" */ + else if (Matches("CLUSTER", MatchAnyExcept("VERBOSE|ON|(|(*)"))) + COMPLETE_WITH("USING"); + /* If we have CLUSTER VERBOSE , then add "USING" */ + else if (Matches("CLUSTER", "VERBOSE|(*)", MatchAny)) + COMPLETE_WITH("USING"); + /* If we have CLUSTER USING, then add the index as well */ + else if (Matches("CLUSTER", MatchAny, "USING") || + Matches("CLUSTER", "VERBOSE|(*)", MatchAny, "USING")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_index_of_table); + } + else if (HeadMatches("CLUSTER", "(*") && + !HeadMatches("CLUSTER", "(*)")) + { + /* + * 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"); + } + +/* COMMENT */ + else if (Matches("COMMENT")) + COMPLETE_WITH("ON"); + else if (Matches("COMMENT", "ON")) + COMPLETE_WITH("ACCESS METHOD", "AGGREGATE", "CAST", "COLLATION", + "COLUMN", "CONSTRAINT", "CONVERSION", "DATABASE", + "DOMAIN", "EXTENSION", "EVENT TRIGGER", + "FOREIGN DATA WRAPPER", "FOREIGN TABLE", + "FUNCTION", "INDEX", "LANGUAGE", "LARGE OBJECT", + "MATERIALIZED VIEW", "OPERATOR", "POLICY", + "PROCEDURE", "PROCEDURAL LANGUAGE", "PUBLICATION", "ROLE", + "ROUTINE", "RULE", "SCHEMA", "SEQUENCE", "SERVER", + "STATISTICS", "SUBSCRIPTION", "TABLE", + "TABLESPACE", "TEXT SEARCH", "TRANSFORM FOR", + "TRIGGER", "TYPE", "VIEW"); + else if (Matches("COMMENT", "ON", "ACCESS", "METHOD")) + COMPLETE_WITH_QUERY(Query_for_list_of_access_methods); + 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")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_tables_for_constraint, + "DOMAIN"); + } + else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny, "ON", "DOMAIN")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains); + else if (Matches("COMMENT", "ON", "EVENT", "TRIGGER")) + COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers); + else if (Matches("COMMENT", "ON", "FOREIGN")) + COMPLETE_WITH("DATA WRAPPER", "TABLE"); + else if (Matches("COMMENT", "ON", "FOREIGN", "TABLE")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables); + else if (Matches("COMMENT", "ON", "MATERIALIZED", "VIEW")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews); + else if (Matches("COMMENT", "ON", "POLICY")) + COMPLETE_WITH_QUERY(Query_for_list_of_policies); + else if (Matches("COMMENT", "ON", "POLICY", MatchAny)) + COMPLETE_WITH("ON"); + else if (Matches("COMMENT", "ON", "POLICY", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_policy); + } + else if (Matches("COMMENT", "ON", "PROCEDURAL", "LANGUAGE")) + COMPLETE_WITH_QUERY(Query_for_list_of_languages); + else if (Matches("COMMENT", "ON", "RULE", MatchAny)) + COMPLETE_WITH("ON"); + else if (Matches("COMMENT", "ON", "RULE", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_rule); + } + else if (Matches("COMMENT", "ON", "TEXT", "SEARCH")) + COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE"); + else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "CONFIGURATION")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_configurations); + else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "DICTIONARY")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_dictionaries); + else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "PARSER")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_parsers); + else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "TEMPLATE")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_templates); + else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR", MatchAny)) + COMPLETE_WITH("LANGUAGE"); + else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR", MatchAny, "LANGUAGE")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_QUERY(Query_for_list_of_languages); + } + else if (Matches("COMMENT", "ON", "TRIGGER", MatchAny)) + COMPLETE_WITH("ON"); + else if (Matches("COMMENT", "ON", "TRIGGER", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_trigger); + } + else if (Matches("COMMENT", "ON", MatchAny, MatchAnyExcept("IS")) || + Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAnyExcept("IS")) || + Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")) || + Matches("COMMENT", "ON", MatchAny, 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_PLUS(Query_for_list_of_tables, "("); + /* Complete COPY ( with legal query commands */ + else if (Matches("COPY|\\copy", "(")) + COMPLETE_WITH("SELECT", "TABLE", "VALUES", "INSERT INTO", "UPDATE", "DELETE FROM", "WITH"); + /* Complete COPY */ + else if (Matches("COPY|\\copy", MatchAny)) + COMPLETE_WITH("FROM", "TO"); + /* Complete COPY FROM|TO with filename */ + else if (Matches("COPY", 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); + } + + /* Complete COPY TO */ + else if (Matches("COPY|\\copy", MatchAny, "TO", MatchAny)) + COMPLETE_WITH("WITH ("); + + /* Complete COPY FROM */ + else if (Matches("COPY|\\copy", MatchAny, "FROM", MatchAny)) + COMPLETE_WITH("WITH (", "WHERE"); + + /* Complete COPY FROM|TO filename WITH ( */ + else if (Matches("COPY|\\copy", MatchAny, "FROM|TO", MatchAny, "WITH", "(")) + COMPLETE_WITH("FORMAT", "FREEZE", "DELIMITER", "NULL", + "HEADER", "QUOTE", "ESCAPE", "FORCE_QUOTE", + "FORCE_NOT_NULL", "FORCE_NULL", "ENCODING"); + + /* Complete COPY FROM|TO filename WITH (FORMAT */ + else if (Matches("COPY|\\copy", MatchAny, "FROM|TO", MatchAny, "WITH", "(", "FORMAT")) + COMPLETE_WITH("binary", "csv", "text"); + + /* Complete COPY FROM WITH () */ + else if (Matches("COPY|\\copy", MatchAny, "FROM", MatchAny, "WITH", MatchAny)) + COMPLETE_WITH("WHERE"); + + /* CREATE ACCESS METHOD */ + /* Complete "CREATE ACCESS METHOD " */ + else if (Matches("CREATE", "ACCESS", "METHOD", MatchAny)) + COMPLETE_WITH("TYPE"); + /* Complete "CREATE ACCESS METHOD TYPE" */ + else if (Matches("CREATE", "ACCESS", "METHOD", MatchAny, "TYPE")) + COMPLETE_WITH("INDEX", "TABLE"); + /* Complete "CREATE ACCESS METHOD TYPE " */ + else if (Matches("CREATE", "ACCESS", "METHOD", MatchAny, "TYPE", MatchAny)) + COMPLETE_WITH("HANDLER"); + + /* CREATE COLLATION */ + else if (Matches("CREATE", "COLLATION", MatchAny)) + COMPLETE_WITH("(", "FROM"); + else if (Matches("CREATE", "COLLATION", MatchAny, "FROM")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_collations); + else if (HeadMatches("CREATE", "COLLATION", MatchAny, "(*")) + { + if (TailMatches("(|*,")) + COMPLETE_WITH("LOCALE =", "LC_COLLATE =", "LC_CTYPE =", + "PROVIDER =", "DETERMINISTIC ="); + else if (TailMatches("PROVIDER", "=")) + COMPLETE_WITH("libc", "icu"); + else if (TailMatches("DETERMINISTIC", "=")) + COMPLETE_WITH("true", "false"); + } + + /* CREATE DATABASE */ + else if (Matches("CREATE", "DATABASE", MatchAny)) + COMPLETE_WITH("OWNER", "TEMPLATE", "ENCODING", "TABLESPACE", + "IS_TEMPLATE", "STRATEGY", + "ALLOW_CONNECTIONS", "CONNECTION LIMIT", + "LC_COLLATE", "LC_CTYPE", "LOCALE", "OID", + "LOCALE_PROVIDER", "ICU_LOCALE"); + + else if (Matches("CREATE", "DATABASE", MatchAny, "TEMPLATE")) + COMPLETE_WITH_QUERY(Query_for_list_of_template_databases); + else if (Matches("CREATE", "DATABASE", MatchAny, "STRATEGY")) + COMPLETE_WITH("WAL_LOG", "FILE_COPY"); + + /* CREATE DOMAIN */ + else if (Matches("CREATE", "DOMAIN", MatchAny)) + COMPLETE_WITH("AS"); + else if (Matches("CREATE", "DOMAIN", MatchAny, "AS")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + else if (Matches("CREATE", "DOMAIN", MatchAny, "AS", MatchAny)) + COMPLETE_WITH("COLLATE", "DEFAULT", "CONSTRAINT", + "NOT NULL", "NULL", "CHECK ("); + else if (Matches("CREATE", "DOMAIN", MatchAny, "COLLATE")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_collations); + + /* 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 */ + else if (Matches("CREATE", "EXTENSION", MatchAny)) + COMPLETE_WITH("WITH SCHEMA", "CASCADE", "VERSION"); + /* CREATE EXTENSION VERSION */ + else if (Matches("CREATE", "EXTENSION", MatchAny, "VERSION")) + { + set_completion_reference(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 FOREIGN TABLE */ + else if (Matches("CREATE", "FOREIGN", "TABLE", MatchAny)) + COMPLETE_WITH("(", "PARTITION OF"); + + /* 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_PLUS(Query_for_list_of_indexes, + "ON", "CONCURRENTLY"); + + /* + * Complete ... INDEX|CONCURRENTLY [] 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); + + /* + * Complete CREATE|UNIQUE INDEX CONCURRENTLY with "ON" and existing + * indexes + */ + else if (TailMatches("CREATE|UNIQUE", "INDEX", "CONCURRENTLY")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_indexes, + "ON"); + /* Complete CREATE|UNIQUE INDEX [CONCURRENTLY] with "ON" */ + else if (TailMatches("CREATE|UNIQUE", "INDEX", MatchAny) || + TailMatches("CREATE|UNIQUE", "INDEX", "CONCURRENTLY", MatchAny)) + COMPLETE_WITH("ON"); + + /* + * Complete INDEX ON
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 ON" */ + else if (Matches("CREATE", "POLICY", MatchAny)) + COMPLETE_WITH("ON"); + /* Complete "CREATE POLICY ON
" */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); + /* Complete "CREATE POLICY ON
AS|FOR|TO|USING|WITH CHECK" */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny)) + COMPLETE_WITH("AS", "FOR", "TO", "USING (", "WITH CHECK ("); + /* CREATE POLICY ON
AS PERMISSIVE|RESTRICTIVE */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS")) + COMPLETE_WITH("PERMISSIVE", "RESTRICTIVE"); + + /* + * CREATE POLICY ON
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 ON
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 ON
FOR INSERT TO|WITH CHECK" */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "FOR", "INSERT")) + COMPLETE_WITH("TO", "WITH CHECK ("); + /* Complete "CREATE POLICY ON
FOR SELECT|DELETE TO|USING" */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "FOR", "SELECT|DELETE")) + COMPLETE_WITH("TO", "USING ("); + /* CREATE POLICY ON
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 ON
TO " */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "TO")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles, + Keywords_for_list_of_grant_roles); + /* Complete "CREATE POLICY ON
USING (" */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "USING")) + COMPLETE_WITH("("); + + /* + * CREATE POLICY ON
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 ON
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 ON
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 ON
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 ON
AS PERMISSIVE|RESTRICTIVE TO + * " + */ + else if (Matches("CREATE", "POLICY", MatchAny, "ON", MatchAny, "AS", MatchAny, "TO")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles, + Keywords_for_list_of_grant_roles); + + /* + * Complete "CREATE POLICY ON
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", "FOR TABLES IN SCHEMA", "WITH ("); + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR")) + COMPLETE_WITH("TABLE", "ALL TABLES", "TABLES IN SCHEMA"); + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "ALL")) + COMPLETE_WITH("TABLES"); + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "ALL", "TABLES")) + COMPLETE_WITH("WITH ("); + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLES")) + COMPLETE_WITH("IN SCHEMA"); + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLE", MatchAny) && !ends_with(prev_wd, ',')) + COMPLETE_WITH("WHERE (", "WITH ("); + /* Complete "CREATE PUBLICATION FOR TABLE" with "
, ..." */ + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLE")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); + + /* + * "CREATE PUBLICATION FOR TABLE WHERE (" - complete with + * table attributes + */ + else if (HeadMatches("CREATE", "PUBLICATION", MatchAny) && TailMatches("WHERE")) + COMPLETE_WITH("("); + else if (HeadMatches("CREATE", "PUBLICATION", MatchAny) && TailMatches("WHERE", "(")) + COMPLETE_WITH_ATTR(prev3_wd); + else if (HeadMatches("CREATE", "PUBLICATION", MatchAny) && TailMatches("WHERE", "(*)")) + COMPLETE_WITH(" WITH ("); + + /* + * Complete "CREATE PUBLICATION FOR TABLES IN SCHEMA , ..." + */ + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLES", "IN", "SCHEMA")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_schemas + " AND nspname NOT LIKE E'pg\\\\_%%'", + "CURRENT_SCHEMA"); + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLES", "IN", "SCHEMA", MatchAny) && (!ends_with(prev_wd, ','))) + COMPLETE_WITH("WITH ("); + /* Complete "CREATE PUBLICATION [...] WITH" */ + else if (HeadMatches("CREATE", "PUBLICATION") && TailMatches("WITH", "(")) + COMPLETE_WITH("publish", "publish_via_partition_root"); + +/* CREATE RULE */ + /* Complete "CREATE [ OR REPLACE ] RULE " with "AS ON" */ + else if (Matches("CREATE", "RULE", MatchAny) || + Matches("CREATE", "OR", "REPLACE", "RULE", MatchAny)) + COMPLETE_WITH("AS ON"); + /* Complete "CREATE [ OR REPLACE ] RULE 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 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 TO" with a table name */ + else if (TailMatches("AS", "ON", "SELECT|UPDATE|INSERT|DELETE", "TO")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); + +/* CREATE SEQUENCE --- is allowed inside CREATE SCHEMA, so use TailMatches */ + else if (TailMatches("CREATE", "SEQUENCE", MatchAny) || + TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny)) + COMPLETE_WITH("AS", "INCREMENT BY", "MINVALUE", "MAXVALUE", "NO", + "CACHE", "CYCLE", "OWNED BY", "START WITH"); + else if (TailMatches("CREATE", "SEQUENCE", MatchAny, "AS") || + TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny, "AS")) + COMPLETE_WITH_CS("smallint", "integer", "bigint"); + else if (TailMatches("CREATE", "SEQUENCE", MatchAny, "NO") || + TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny, "NO")) + COMPLETE_WITH("MINVALUE", "MAXVALUE", "CYCLE"); + +/* CREATE SERVER */ + else if (Matches("CREATE", "SERVER", MatchAny)) + COMPLETE_WITH("TYPE", "VERSION", "FOREIGN DATA WRAPPER"); + +/* CREATE STATISTICS */ + 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); + +/* 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 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 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); + /* 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 TRANSFORM */ + else if (Matches("CREATE", "TRANSFORM") || + Matches("CREATE", "OR", "REPLACE", "TRANSFORM")) + COMPLETE_WITH("FOR"); + else if (Matches("CREATE", "TRANSFORM", "FOR") || + Matches("CREATE", "OR", "REPLACE", "TRANSFORM", "FOR")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + else if (Matches("CREATE", "TRANSFORM", "FOR", MatchAny) || + Matches("CREATE", "OR", "REPLACE", "TRANSFORM", "FOR", MatchAny)) + COMPLETE_WITH("LANGUAGE"); + else if (Matches("CREATE", "TRANSFORM", "FOR", MatchAny, "LANGUAGE") || + Matches("CREATE", "OR", "REPLACE", "TRANSFORM", "FOR", MatchAny, "LANGUAGE")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_QUERY(Query_for_list_of_languages); + } + +/* 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 ... WITH ( " */ + else if (HeadMatches("CREATE", "SUBSCRIPTION") && TailMatches("WITH", "(")) + COMPLETE_WITH("binary", "connect", "copy_data", "create_slot", + "disable_on_error", "enabled", "slot_name", "streaming", + "synchronous_commit", "two_phase"); + +/* CREATE TRIGGER --- is allowed inside CREATE SCHEMA, so use TailMatches */ + + /* + * Complete CREATE [ OR REPLACE ] TRIGGER with BEFORE|AFTER|INSTEAD + * OF. + */ + else if (TailMatches("CREATE", "TRIGGER", MatchAny) || + TailMatches("CREATE", "OR", "REPLACE", "TRIGGER", MatchAny)) + COMPLETE_WITH("BEFORE", "AFTER", "INSTEAD OF"); + + /* + * Complete CREATE [ OR REPLACE ] TRIGGER BEFORE,AFTER with an + * event. + */ + else if (TailMatches("CREATE", "TRIGGER", MatchAny, "BEFORE|AFTER") || + TailMatches("CREATE", "OR", "REPLACE", "TRIGGER", MatchAny, "BEFORE|AFTER")) + COMPLETE_WITH("INSERT", "DELETE", "UPDATE", "TRUNCATE"); + /* Complete CREATE [ OR REPLACE ] TRIGGER INSTEAD OF with an event */ + else if (TailMatches("CREATE", "TRIGGER", MatchAny, "INSTEAD", "OF") || + TailMatches("CREATE", "OR", "REPLACE", "TRIGGER", MatchAny, "INSTEAD", "OF")) + COMPLETE_WITH("INSERT", "DELETE", "UPDATE"); + + /* + * Complete CREATE [ OR REPLACE ] TRIGGER BEFORE,AFTER sth with + * OR|ON. + */ + else if (TailMatches("CREATE", "TRIGGER", MatchAny, "BEFORE|AFTER", MatchAny) || + TailMatches("CREATE", "OR", "REPLACE", "TRIGGER", MatchAny, "BEFORE|AFTER", MatchAny) || + TailMatches("CREATE", "TRIGGER", MatchAny, "INSTEAD", "OF", MatchAny) || + TailMatches("CREATE", "OR", "REPLACE", "TRIGGER", MatchAny, "INSTEAD", "OF", MatchAny)) + COMPLETE_WITH("ON", "OR"); + + /* + * Complete CREATE [ OR REPLACE ] TRIGGER 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") || + TailMatches("CREATE", "OR", "REPLACE", "TRIGGER", MatchAny, "BEFORE|AFTER", MatchAny, "ON")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); + + /* + * Complete CREATE [ OR REPLACE ] TRIGGER ... INSTEAD OF event ON with a + * list of views. + */ + else if (TailMatches("CREATE", "TRIGGER", MatchAny, "INSTEAD", "OF", MatchAny, "ON") || + TailMatches("CREATE", "OR", "REPLACE", "TRIGGER", MatchAny, "INSTEAD", "OF", MatchAny, "ON")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views); + else if ((HeadMatches("CREATE", "TRIGGER") || + HeadMatches("CREATE", "OR", "REPLACE", "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") || + HeadMatches("CREATE", "OR", "REPLACE", "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") || + HeadMatches("CREATE", "OR", "REPLACE", "TRIGGER")) && + TailMatches("REFERENCING")) + COMPLETE_WITH("OLD TABLE", "NEW TABLE"); + else if ((HeadMatches("CREATE", "TRIGGER") || + HeadMatches("CREATE", "OR", "REPLACE", "TRIGGER")) && + TailMatches("OLD|NEW", "TABLE")) + COMPLETE_WITH("AS"); + else if ((HeadMatches("CREATE", "TRIGGER") || + HeadMatches("CREATE", "OR", "REPLACE", "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") || + HeadMatches("CREATE", "OR", "REPLACE", "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") || + HeadMatches("CREATE", "OR", "REPLACE", "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") || + HeadMatches("CREATE", "OR", "REPLACE", "TRIGGER")) && + TailMatches("FOR")) + COMPLETE_WITH("EACH", "ROW", "STATEMENT"); + else if ((HeadMatches("CREATE", "TRIGGER") || + HeadMatches("CREATE", "OR", "REPLACE", "TRIGGER")) && + TailMatches("FOR", "EACH")) + COMPLETE_WITH("ROW", "STATEMENT"); + else if ((HeadMatches("CREATE", "TRIGGER") || + HeadMatches("CREATE", "OR", "REPLACE", "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") || + HeadMatches("CREATE", "OR", "REPLACE", "TRIGGER")) && + TailMatches("WHEN", "(*)")) + { + if (pset.sversion >= 110000) + COMPLETE_WITH("EXECUTE FUNCTION"); + else + COMPLETE_WITH("EXECUTE PROCEDURE"); + } + + /* + * Complete CREATE [ OR REPLACE ] TRIGGER ... EXECUTE with + * PROCEDURE|FUNCTION. + */ + else if ((HeadMatches("CREATE", "TRIGGER") || + HeadMatches("CREATE", "OR", "REPLACE", "TRIGGER")) && + TailMatches("EXECUTE")) + { + if (pset.sversion >= 110000) + COMPLETE_WITH("FUNCTION"); + else + COMPLETE_WITH("PROCEDURE"); + } + else if ((HeadMatches("CREATE", "TRIGGER") || + HeadMatches("CREATE", "OR", "REPLACE", "TRIGGER")) && + TailMatches("EXECUTE", "FUNCTION|PROCEDURE")) + COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions); + +/* CREATE ROLE,USER,GROUP */ + 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 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 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); + 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", "SUBSCRIPT", + "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", + "MULTIRANGE_TYPE_NAME"); + 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 with AS */ + else if (TailMatches("CREATE", "VIEW", MatchAny) || + TailMatches("CREATE", "OR", "REPLACE", "VIEW", MatchAny)) + COMPLETE_WITH("AS"); + /* Complete "CREATE [ OR REPLACE ] VIEW 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 with AS */ + else if (Matches("CREATE", "MATERIALIZED", "VIEW", MatchAny)) + COMPLETE_WITH("AS"); + /* Complete "CREATE MATERIALIZED VIEW 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 with ON */ + else if (Matches("CREATE", "EVENT", "TRIGGER", MatchAny)) + COMPLETE_WITH("ON"); + /* Complete CREATE EVENT TRIGGER ON with event_type */ + else if (Matches("CREATE", "EVENT", "TRIGGER", MatchAny, "ON")) + COMPLETE_WITH("ddl_command_start", "ddl_command_end", "sql_drop", + "table_rewrite"); + + /* + * Complete CREATE EVENT TRIGGER ON . 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); + +/* DEALLOCATE */ + else if (Matches("DEALLOCATE")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_prepared_statements, + "ALL"); + +/* DECLARE */ + + /* + * Complete DECLARE with one of BINARY, ASENSITIVE, INSENSITIVE, + * SCROLL, NO SCROLL, and CURSOR. + */ + else if (Matches("DECLARE", MatchAny)) + COMPLETE_WITH("BINARY", "ASENSITIVE", "INSENSITIVE", "SCROLL", "NO SCROLL", + "CURSOR"); + + /* + * Complete DECLARE ...
*/ + 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_PLUS(Query_for_list_of_indexes, + "CONCURRENTLY"); + else if (Matches("DROP", "INDEX", "CONCURRENTLY")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes); + 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); + else if (Matches("DROP", "MATERIALIZED", "VIEW", MatchAny)) + COMPLETE_WITH("CASCADE", "RESTRICT"); + + /* 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); + else if (Matches("DROP", "OWNED", "BY", MatchAny)) + COMPLETE_WITH("CASCADE", "RESTRICT"); + + /* 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")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_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 */ + else if (Matches("DROP", "POLICY")) + COMPLETE_WITH_QUERY(Query_for_list_of_policies); + /* DROP POLICY ON */ + else if (Matches("DROP", "POLICY", MatchAny)) + COMPLETE_WITH("ON"); + /* DROP POLICY ON
*/ + else if (Matches("DROP", "POLICY", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_policy); + } + else if (Matches("DROP", "POLICY", MatchAny, "ON", MatchAny)) + COMPLETE_WITH("CASCADE", "RESTRICT"); + + /* DROP RULE */ + else if (Matches("DROP", "RULE", MatchAny)) + COMPLETE_WITH("ON"); + else if (Matches("DROP", "RULE", MatchAny, "ON")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables_for_rule); + } + else if (Matches("DROP", "RULE", MatchAny, "ON", MatchAny)) + COMPLETE_WITH("CASCADE", "RESTRICT"); + + /* DROP TRANSFORM */ + else if (Matches("DROP", "TRANSFORM")) + COMPLETE_WITH("FOR"); + else if (Matches("DROP", "TRANSFORM", "FOR")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + else if (Matches("DROP", "TRANSFORM", "FOR", MatchAny)) + COMPLETE_WITH("LANGUAGE"); + else if (Matches("DROP", "TRANSFORM", "FOR", MatchAny, "LANGUAGE")) + { + set_completion_reference(prev2_wd); + COMPLETE_WITH_QUERY(Query_for_list_of_languages); + } + else if (Matches("DROP", "TRANSFORM", "FOR", MatchAny, "LANGUAGE", 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 INTO", "DELETE FROM", "UPDATE", "DECLARE", + "MERGE INTO", "EXECUTE", "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 INTO", "DELETE FROM", "UPDATE", "DECLARE", + "MERGE INTO", "EXECUTE", "VERBOSE"); + else if (Matches("EXPLAIN", "(*)") || + Matches("EXPLAIN", "VERBOSE") || + Matches("EXPLAIN", "ANALYZE", "VERBOSE")) + COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE", + "MERGE INTO", "EXECUTE"); + +/* FETCH && MOVE */ + + /* + * Complete FETCH with one of ABSOLUTE, BACKWARD, FORWARD, RELATIVE, ALL, + * NEXT, PRIOR, FIRST, LAST, FROM, IN, and a list of cursors + */ + else if (Matches("FETCH|MOVE")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_cursors, + "ABSOLUTE", + "BACKWARD", + "FORWARD", + "RELATIVE", + "ALL", + "NEXT", + "PRIOR", + "FIRST", + "LAST", + "FROM", + "IN"); + + /* + * Complete FETCH BACKWARD or FORWARD with one of ALL, FROM, IN, and a + * list of cursors + */ + else if (Matches("FETCH|MOVE", "BACKWARD|FORWARD")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_cursors, + "ALL", + "FROM", + "IN"); + + /* + * Complete FETCH 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", "ABSOLUTE|BACKWARD|FORWARD|RELATIVE", + MatchAnyExcept("FROM|IN")) || + Matches("FETCH|MOVE", "ALL|NEXT|PRIOR|FIRST|LAST")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_cursors, + "FROM", + "IN"); + /* Complete FETCH "FROM" or "IN" with a list of cursors */ + else if (HeadMatches("FETCH|MOVE") && + TailMatches("FROM|IN")) + COMPLETE_WITH_QUERY(Query_for_list_of_cursors); + +/* 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); + +/* 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") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR")) + { + /* + * 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_PLUS(Query_for_list_of_roles, + "GRANT", + "SELECT", + "INSERT", + "UPDATE", + "DELETE", + "TRUNCATE", + "REFERENCES", + "TRIGGER", + "CREATE", + "CONNECT", + "TEMPORARY", + "EXECUTE", + "USAGE", + "SET", + "ALTER SYSTEM", + "ALL"); + } + + else if (TailMatches("REVOKE", "GRANT")) + COMPLETE_WITH("OPTION FOR"); + else if (TailMatches("REVOKE", "GRANT", "OPTION")) + COMPLETE_WITH("FOR"); + + else if (TailMatches("GRANT|REVOKE", "ALTER") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", "ALTER")) + COMPLETE_WITH("SYSTEM"); + + else if (TailMatches("GRANT|REVOKE", "SET") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", "SET") || + TailMatches("GRANT|REVOKE", "ALTER", "SYSTEM") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", "ALTER", "SYSTEM")) + COMPLETE_WITH("ON PARAMETER"); + + else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "PARAMETER") || + TailMatches("GRANT|REVOKE", MatchAny, MatchAny, "ON", "PARAMETER") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny, "ON", "PARAMETER") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny, MatchAny, "ON", "PARAMETER")) + COMPLETE_WITH_QUERY_VERBATIM(Query_for_list_of_alter_system_set_vars); + + else if (TailMatches("GRANT", MatchAny, "ON", "PARAMETER", MatchAny) || + TailMatches("GRANT", MatchAny, MatchAny, "ON", "PARAMETER", MatchAny)) + COMPLETE_WITH("TO"); + + else if (TailMatches("REVOKE", MatchAny, "ON", "PARAMETER", MatchAny) || + TailMatches("REVOKE", MatchAny, MatchAny, "ON", "PARAMETER", MatchAny) || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny, "ON", "PARAMETER", MatchAny) || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny, MatchAny, "ON", "PARAMETER", MatchAny)) + COMPLETE_WITH("FROM"); + + /* + * Complete GRANT/REVOKE with "ON", GRANT/REVOKE with + * TO/FROM + */ + else if (TailMatches("GRANT|REVOKE", MatchAny) || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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 ON with a list of appropriate relations. + * + * 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") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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_PLUS(Query_for_list_of_grantables, + "ALL FUNCTIONS IN SCHEMA", + "ALL PROCEDURES IN SCHEMA", + "ALL ROUTINES IN SCHEMA", + "ALL SEQUENCES IN SCHEMA", + "ALL TABLES IN SCHEMA", + "DATABASE", + "DOMAIN", + "FOREIGN DATA WRAPPER", + "FOREIGN SERVER", + "FUNCTION", + "LANGUAGE", + "LARGE OBJECT", + "PARAMETER", + "PROCEDURE", + "ROUTINE", + "SCHEMA", + "SEQUENCE", + "TABLE", + "TABLESPACE", + "TYPE"); + } + else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "ALL") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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") || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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) || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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); + else if (TailMatches("FUNCTION")) + COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions); + 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); + else if (TailMatches("ROUTINE")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_routines); + 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); + else if (TailMatches("TABLE")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_grantables); + 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); + else if (TailMatches("GRANT", MatchAny, MatchAny, MatchAny)) + COMPLETE_WITH("TO"); + else + COMPLETE_WITH("FROM"); + } + + /* + * Complete "GRANT/REVOKE ... TO/FROM" with username, PUBLIC, + * CURRENT_ROLE, CURRENT_USER, or SESSION_USER. + */ + else if ((HeadMatches("GRANT") && TailMatches("TO")) || + (HeadMatches("REVOKE") && TailMatches("FROM"))) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles, + Keywords_for_list_of_grant_roles); + + /* + * Offer grant options after that. + */ + else if (HeadMatches("GRANT") && TailMatches("TO", MatchAny)) + COMPLETE_WITH("WITH ADMIN OPTION", + "WITH GRANT OPTION", + "GRANTED BY"); + else if (HeadMatches("GRANT") && TailMatches("TO", MatchAny, "WITH")) + COMPLETE_WITH("ADMIN OPTION", + "GRANT OPTION"); + else if (HeadMatches("GRANT") && TailMatches("TO", MatchAny, "WITH", MatchAny, "OPTION")) + COMPLETE_WITH("GRANTED BY"); + else if (HeadMatches("GRANT") && TailMatches("TO", MatchAny, "WITH", MatchAny, "OPTION", "GRANTED", "BY")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_roles, + Keywords_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_PLUS(Query_for_list_of_roles, + Keywords_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) || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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) || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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) || + TailMatches("REVOKE", "GRANT", "OPTION", "FOR", 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"); + else if (Matches("IMPORT", "FOREIGN", "SCHEMA", MatchAny)) + COMPLETE_WITH("EXCEPT (", "FROM SERVER", "LIMIT TO ("); + else if (TailMatches("LIMIT", "TO", "(*)") || + TailMatches("EXCEPT", "(*)")) + COMPLETE_WITH("FROM SERVER"); + else if (TailMatches("FROM", "SERVER", MatchAny)) + COMPLETE_WITH("INTO"); + else if (TailMatches("FROM", "SERVER", MatchAny, "INTO")) + COMPLETE_WITH_QUERY(Query_for_list_of_schemas); + else if (TailMatches("FROM", "SERVER", MatchAny, "INTO", MatchAny)) + COMPLETE_WITH("OPTIONS ("); + +/* INSERT --- can be inside EXPLAIN, RULE, etc */ + /* Complete NOT MATCHED THEN INSERT */ + else if (TailMatches("NOT", "MATCHED", "THEN", "INSERT")) + COMPLETE_WITH("VALUES", "("); + /* 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); + /* Complete "INSERT INTO
(" with attribute names */ + else if (TailMatches("INSERT", "INTO", MatchAny, "(")) + COMPLETE_WITH_ATTR(prev2_wd); + + /* + * Complete INSERT INTO
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
(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] [ONLY] with a list of tables */ + else if (Matches("LOCK")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_tables, + "TABLE", "ONLY"); + else if (Matches("LOCK", "TABLE")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_tables, + "ONLY"); + else if (Matches("LOCK", "TABLE", "ONLY") || Matches("LOCK", "ONLY")) + 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] [ONLY]
with IN or NOWAIT */ + else if (Matches("LOCK", MatchAnyExcept("TABLE|ONLY")) || + Matches("LOCK", "TABLE", MatchAnyExcept("ONLY")) || + Matches("LOCK", "ONLY", MatchAny) || + Matches("LOCK", "TABLE", "ONLY", MatchAny)) + COMPLETE_WITH("IN", "NOWAIT"); + + /* Complete LOCK [TABLE] [ONLY]
IN with a lock mode */ + else if (HeadMatches("LOCK") && TailMatches("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][ONLY]
IN ACCESS|ROW with rest of lock + * mode + */ + else if (HeadMatches("LOCK") && TailMatches("IN", "ACCESS|ROW")) + COMPLETE_WITH("EXCLUSIVE MODE", "SHARE MODE"); + + /* Complete LOCK [TABLE] [ONLY]
IN SHARE with rest of lock mode */ + else if (HeadMatches("LOCK") && TailMatches("IN", "SHARE")) + COMPLETE_WITH("MODE", "ROW EXCLUSIVE MODE", + "UPDATE EXCLUSIVE MODE"); + + /* Complete LOCK [TABLE] [ONLY]
[IN lockmode MODE] with "NOWAIT" */ + else if (HeadMatches("LOCK") && TailMatches("MODE")) + COMPLETE_WITH("NOWAIT"); + +/* MERGE --- can be inside EXPLAIN */ + else if (TailMatches("MERGE")) + COMPLETE_WITH("INTO"); + else if (TailMatches("MERGE", "INTO")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_mergetargets); + + /* Complete MERGE INTO
[[AS] ] with USING */ + else if (TailMatches("MERGE", "INTO", MatchAny)) + COMPLETE_WITH("USING", "AS"); + else if (TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, MatchAnyExcept("USING|AS"))) + COMPLETE_WITH("USING"); + + /* + * Complete MERGE INTO ... USING with a list of relations supporting + * SELECT + */ + else if (TailMatches("MERGE", "INTO", MatchAny, "USING") || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING") || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_selectables); + + /* + * Complete MERGE INTO
[[AS] ] USING [[AS] + * alias] with ON + */ + else if (TailMatches("MERGE", "INTO", MatchAny, "USING", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING", MatchAny)) + COMPLETE_WITH("AS", "ON"); + else if (TailMatches("MERGE", "INTO", MatchAny, "USING", MatchAny, "AS", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING", MatchAny, "AS", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING", MatchAny, "AS", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, "USING", MatchAny, MatchAnyExcept("ON|AS")) || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING", MatchAny, MatchAnyExcept("ON|AS")) || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING", MatchAny, MatchAnyExcept("ON|AS"))) + COMPLETE_WITH("ON"); + + /* Complete MERGE INTO ... ON with target table attributes */ + else if (TailMatches("INTO", MatchAny, "USING", MatchAny, "ON")) + COMPLETE_WITH_ATTR(prev4_wd); + else if (TailMatches("INTO", MatchAny, "AS", MatchAny, "USING", MatchAny, "AS", MatchAny, "ON")) + COMPLETE_WITH_ATTR(prev8_wd); + else if (TailMatches("INTO", MatchAny, MatchAny, "USING", MatchAny, MatchAny, "ON")) + COMPLETE_WITH_ATTR(prev6_wd); + + /* + * Complete ... USING [[AS] alias] ON join condition + * (consisting of one or three words typically used) with WHEN [NOT] + * MATCHED + */ + else if (TailMatches("USING", MatchAny, "ON", MatchAny) || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny) || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny) || + TailMatches("USING", MatchAny, "ON", MatchAny, MatchAnyExcept("WHEN"), MatchAnyExcept("WHEN")) || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny, MatchAnyExcept("WHEN"), MatchAnyExcept("WHEN")) || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny, MatchAnyExcept("WHEN"), MatchAnyExcept("WHEN"))) + COMPLETE_WITH("WHEN MATCHED", "WHEN NOT MATCHED"); + else if (TailMatches("USING", MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, "ON", MatchAny, MatchAny, MatchAny, "WHEN") || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny, MatchAny, MatchAny, "WHEN") || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny, MatchAny, MatchAny, "WHEN")) + COMPLETE_WITH("MATCHED", "NOT MATCHED"); + + /* Complete ... WHEN [NOT] MATCHED with THEN/AND */ + else if (TailMatches("WHEN", "MATCHED") || + TailMatches("WHEN", "NOT", "MATCHED")) + COMPLETE_WITH("THEN", "AND"); + + /* Complete ... WHEN MATCHED THEN with UPDATE SET/DELETE/DO NOTHING */ + else if (TailMatches("WHEN", "MATCHED", "THEN")) + COMPLETE_WITH("UPDATE SET", "DELETE", "DO NOTHING"); + + /* Complete ... WHEN NOT MATCHED THEN with INSERT/DO NOTHING */ + else if (TailMatches("WHEN", "NOT", "MATCHED", "THEN")) + COMPLETE_WITH("INSERT", "DO NOTHING"); + +/* NOTIFY --- can be inside EXPLAIN, RULE, etc */ + else if (TailMatches("NOTIFY")) + COMPLETE_WITH_QUERY(Query_for_list_of_channels); + +/* 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 INTO", "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_PLUS(Query_for_list_of_matviews, + "CONCURRENTLY"); + else if (Matches("REFRESH", "MATERIALIZED", "VIEW", "CONCURRENTLY")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews); + 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") || + Matches("REINDEX", "(*)")) + COMPLETE_WITH("TABLE", "INDEX", "SYSTEM", "SCHEMA", "DATABASE"); + else if (Matches("REINDEX", "TABLE") || + Matches("REINDEX", "(*)", "TABLE")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_indexables, + "CONCURRENTLY"); + else if (Matches("REINDEX", "INDEX") || + Matches("REINDEX", "(*)", "INDEX")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_indexes, + "CONCURRENTLY"); + else if (Matches("REINDEX", "SCHEMA") || + Matches("REINDEX", "(*)", "SCHEMA")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_schemas, + "CONCURRENTLY"); + else if (Matches("REINDEX", "SYSTEM|DATABASE") || + Matches("REINDEX", "(*)", "SYSTEM|DATABASE")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_databases, + "CONCURRENTLY"); + else if (Matches("REINDEX", "TABLE", "CONCURRENTLY") || + Matches("REINDEX", "(*)", "TABLE", "CONCURRENTLY")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexables); + else if (Matches("REINDEX", "INDEX", "CONCURRENTLY") || + Matches("REINDEX", "(*)", "INDEX", "CONCURRENTLY")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes); + else if (Matches("REINDEX", "SCHEMA", "CONCURRENTLY") || + Matches("REINDEX", "(*)", "SCHEMA", "CONCURRENTLY")) + COMPLETE_WITH_QUERY(Query_for_list_of_schemas); + else if (Matches("REINDEX", "SYSTEM|DATABASE", "CONCURRENTLY") || + Matches("REINDEX", "(*)", "SYSTEM|DATABASE", "CONCURRENTLY")) + COMPLETE_WITH_QUERY(Query_for_list_of_databases); + else if (HeadMatches("REINDEX", "(*") && + !HeadMatches("REINDEX", "(*)")) + { + /* + * 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("CONCURRENTLY", "TABLESPACE", "VERBOSE"); + else if (TailMatches("TABLESPACE")) + COMPLETE_WITH_QUERY(Query_for_list_of_tablespaces); + } + +/* 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_VERBATIM_PLUS(Query_for_list_of_set_vars, + "CONSTRAINTS", + "TRANSACTION", + "SESSION", + "ROLE", + "TABLESPACE", + "ALL"); + else if (Matches("SHOW")) + COMPLETE_WITH_QUERY_VERBATIM_PLUS(Query_for_list_of_show_vars, + "SESSION AUTHORIZATION", + "ALL"); + else if (Matches("SHOW", "SESSION")) + COMPLETE_WITH("AUTHORIZATION"); + /* 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_PLUS(Query_for_list_of_constraints_with_schema, + "ALL"); + /* Complete SET CONSTRAINTS 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_PLUS(Query_for_list_of_roles, + "DEFAULT"); + /* Complete RESET SESSION with AUTHORIZATION */ + else if (Matches("RESET", "SESSION")) + COMPLETE_WITH("AUTHORIZATION"); + /* Complete SET with "TO" */ + else if (Matches("SET", MatchAny)) + COMPLETE_WITH("TO"); + + /* + * Complete ALTER DATABASE|FUNCTION|PROCEDURE|ROLE|ROUTINE|USER ... SET + * + */ + else if (HeadMatches("ALTER", "DATABASE|FUNCTION|PROCEDURE|ROLE|ROUTINE|USER") && + TailMatches("SET", MatchAny) && + !TailMatches("SCHEMA")) + 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|=")) + { + /* Here, we want to allow pg_catalog, so use narrower exclusion */ + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_schemas + " AND nspname NOT LIKE E'pg\\\\_toast%%'" + " AND nspname NOT LIKE E'pg\\\\_temp%%'", + "DEFAULT"); + } + else if (TailMatches("TimeZone", "TO|=")) + COMPLETE_WITH_TIMEZONE_NAME(); + 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) + { + set_completion_reference_verbatim(prev2_wd); + COMPLETE_WITH_QUERY_PLUS(Query_for_values_of_enum_GUC, + "DEFAULT"); + } + 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); + +/* 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_PLUS(Query_for_list_of_truncatables, + "TABLE", "ONLY"); + else if (Matches("TRUNCATE", "TABLE")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_truncatables, + "ONLY"); + else if (HeadMatches("TRUNCATE") && TailMatches("ONLY")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_truncatables); + else if (Matches("TRUNCATE", MatchAny) || + Matches("TRUNCATE", "TABLE|ONLY", MatchAny) || + Matches("TRUNCATE", "TABLE", "ONLY", MatchAny)) + COMPLETE_WITH("RESTART IDENTITY", "CONTINUE IDENTITY", "CASCADE", "RESTRICT"); + else if (HeadMatches("TRUNCATE") && TailMatches("IDENTITY")) + COMPLETE_WITH("CASCADE", "RESTRICT"); + +/* UNLISTEN */ + else if (Matches("UNLISTEN")) + COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_channels, "*"); + +/* 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); + /* Complete UPDATE
with "SET" */ + else if (TailMatches("UPDATE", MatchAny)) + COMPLETE_WITH("SET"); + /* Complete UPDATE
SET with list of attributes */ + else if (TailMatches("UPDATE", MatchAny, "SET")) + COMPLETE_WITH_ATTR(prev2_wd); + /* UPDATE
SET = */ + 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_PLUS(Query_for_list_of_roles, + "CURRENT_ROLE", + "CURRENT_USER", + "PUBLIC", + "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_PLUS(Query_for_list_of_vacuumables, + "FULL", + "FREEZE", + "ANALYZE", + "VERBOSE"); + else if (Matches("VACUUM", "FULL")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables, + "FREEZE", + "ANALYZE", + "VERBOSE"); + else if (Matches("VACUUM", "FREEZE") || + Matches("VACUUM", "FULL", "FREEZE")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables, + "VERBOSE", + "ANALYZE"); + else if (Matches("VACUUM", "VERBOSE") || + Matches("VACUUM", "FULL|FREEZE", "VERBOSE") || + Matches("VACUUM", "FULL", "FREEZE", "VERBOSE")) + COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables, + "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", "PROCESS_TOAST", + "TRUNCATE", "PARALLEL"); + else if (TailMatches("FULL|FREEZE|ANALYZE|VERBOSE|DISABLE_PAGE_SKIPPING|SKIP_LOCKED|PROCESS_TOAST|TRUNCATE")) + COMPLETE_WITH("ON", "OFF"); + else if (TailMatches("INDEX_CLEANUP")) + COMPLETE_WITH("AUTO", "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); + +/* 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); + +/* ... JOIN ... */ + else if (TailMatches("JOIN")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_selectables); + +/* 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); + else if (TailMatchesCS("\\dAc*", MatchAny) || + TailMatchesCS("\\dAf*", MatchAny)) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + else if (TailMatchesCS("\\dAo*", MatchAny) || + TailMatchesCS("\\dAp*", MatchAny)) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_operator_families); + 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("\\dconfig*")) + COMPLETE_WITH_QUERY_VERBATIM(Query_for_list_of_show_vars); + else if (TailMatchesCS("\\dD*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains); + 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); + else if (HeadMatchesCS("\\df*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + + else if (TailMatchesCS("\\dFd*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_dictionaries); + else if (TailMatchesCS("\\dFp*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_parsers); + else if (TailMatchesCS("\\dFt*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_templates); + /* must be at end of \dF alternatives: */ + else if (TailMatchesCS("\\dF*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_ts_configurations); + + else if (TailMatchesCS("\\di*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_indexes); + else if (TailMatchesCS("\\dL*")) + COMPLETE_WITH_QUERY(Query_for_list_of_languages); + else if (TailMatchesCS("\\dn*")) + COMPLETE_WITH_QUERY(Query_for_list_of_schemas); + /* no support for completing operators, but we can complete types: */ + else if (HeadMatchesCS("\\do*", MatchAny)) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + else if (TailMatchesCS("\\dp") || TailMatchesCS("\\z")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_grantables); + else if (TailMatchesCS("\\dPi*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_indexes); + else if (TailMatchesCS("\\dPt*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_tables); + else if (TailMatchesCS("\\dP*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_relations); + else if (TailMatchesCS("\\ds*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_sequences); + else if (TailMatchesCS("\\dt*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); + else if (TailMatchesCS("\\dT*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes); + 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); + else if (TailMatchesCS("\\dx*")) + COMPLETE_WITH_QUERY(Query_for_list_of_extensions); + else if (TailMatchesCS("\\dX*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_statistics); + else if (TailMatchesCS("\\dm*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews); + else if (TailMatchesCS("\\dE*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables); + 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); + + else if (TailMatchesCS("\\ef")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_routines); + else if (TailMatchesCS("\\ev")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views); + + else if (TailMatchesCS("\\encoding")) + COMPLETE_WITH_QUERY_VERBATIM(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|SHOW_ALL_RESULTS|" + "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); + else if (TailMatchesCS("\\sv*")) + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views); + 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 + { + const pgsql_thing_t *wac; + + for (wac = words_after_create; wac->name != NULL; wac++) + { + if (pg_strcasecmp(prev_wd, wac->name) == 0) + { + if (wac->query) + COMPLETE_WITH_QUERY_LIST(wac->query, + wac->keywords); + else if (wac->vquery) + COMPLETE_WITH_VERSIONED_QUERY_LIST(wac->vquery, + wac->keywords); + else if (wac->squery) + COMPLETE_WITH_VERSIONED_SCHEMA_QUERY_LIST(wac->squery, + wac->keywords); + 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, ""); + /* Also, prevent Readline from appending stuff to the non-match */ + rl_completion_append_character = '\0'; +#ifdef HAVE_RL_COMPLETION_SUPPRESS_QUOTE + rl_completion_suppress_quote = 1; +#endif + } + + /* free storage */ + free(previous_words); + free(words_buffer); + free(text_copy); + if (completion_ref_object) + free(completion_ref_object); + completion_ref_object = NULL; + if (completion_ref_schema) + free(completion_ref_schema); + completion_ref_schema = NULL; + + /* 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, completion_charpp, + completion_verbatim, 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, completion_charpp, + completion_verbatim, 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(NULL, completion_squery, completion_charpp, + completion_verbatim, text, state); +} + +static char * +complete_from_versioned_schema_query(const char *text, int state) +{ + const SchemaQuery *squery = completion_squery; + + /* 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; + + return _complete_from_query(NULL, squery, completion_charpp, + completion_verbatim, 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 restriction clause of the form + * output LIKE '%s' + * where "output" is the same string that the query returns. The %s + * will be replaced by a LIKE pattern to match the already-typed text. + * There can be a second '%s', which will be replaced by a suitably-escaped + * version of the string provided in completion_ref_object. If there is a + * third '%s', it will be replaced by a suitably-escaped version of the string + * provided in completion_ref_schema. Those strings should be set up + * by calling set_completion_reference or set_completion_reference_verbatim. + * Simple queries should return a single column of matches. If "verbatim" + * is true, the matches are returned as-is; otherwise, they are taken to + * be SQL identifiers and quoted if necessary. + * + * 2. A schema query used for completion of both schema and relation names. + * This is represented by a SchemaQuery object; see that typedef for details. + * + * See top of file for examples of both kinds of query. + * + * In addition to the query itself, we accept a null-terminated array of + * literal keywords, which will be returned if they match the input-so-far + * (case insensitively). (These are in addition to keywords specified + * within the schema_query, if any.) + * + * If "verbatim" is true, then we use the given text as-is to match the + * query results; otherwise we parse it as a possibly-qualified identifier, + * and reconstruct suitable quoting afterward. + * + * "text" and "state" are supplied by Readline. "text" is the word we are + * trying to complete. "state" is zero on first call, nonzero later. + * + * readline will call this repeatedly with the same text and varying + * state. On each call, we are supposed to return a malloc'd string + * that is a candidate completion. Return NULL when done. + */ +static char * +_complete_from_query(const char *simple_query, + const SchemaQuery *schema_query, + const char *const *keywords, + bool verbatim, + const char *text, int state) +{ + static int list_index, + num_schema_only, + num_query_other, + num_keywords; + static PGresult *result = NULL; + static bool non_empty_object; + static bool schemaquoted; + static bool objectquoted; + + /* + * 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 *schemaname; + char *objectname; + char *e_object_like; + char *e_schemaname; + char *e_ref_object; + char *e_ref_schema; + + /* Reset static state, ensuring no memory leaks */ + list_index = 0; + num_schema_only = 0; + num_query_other = 0; + num_keywords = 0; + PQclear(result); + result = NULL; + + /* Parse text, splitting into schema and object name if needed */ + if (verbatim) + { + objectname = pg_strdup(text); + schemaname = NULL; + } + else + { + parse_identifier(text, + &schemaname, &objectname, + &schemaquoted, &objectquoted); + } + + /* Remember whether the user has typed anything in the object part */ + non_empty_object = (*objectname != '\0'); + + /* + * Convert objectname to a LIKE prefix pattern (e.g. 'foo%'), and set + * up suitably-escaped copies of all the strings we need. + */ + e_object_like = make_like_pattern(objectname); + + if (schemaname) + e_schemaname = escape_string(schemaname); + else + e_schemaname = NULL; + + if (completion_ref_object) + e_ref_object = escape_string(completion_ref_object); + else + e_ref_object = NULL; + + if (completion_ref_schema) + e_ref_schema = escape_string(completion_ref_schema); + else + e_ref_schema = NULL; + + initPQExpBuffer(&query_buffer); + + if (schema_query) + { + Assert(simple_query == NULL); + + /* + * We issue different queries depending on whether the input is + * already qualified or not. schema_query gives us the pieces to + * assemble. + */ + if (schemaname == NULL || schema_query->namespace == NULL) + { + /* Get unqualified names matching the input-so-far */ + appendPQExpBufferStr(&query_buffer, "SELECT "); + if (schema_query->use_distinct) + appendPQExpBufferStr(&query_buffer, "DISTINCT "); + appendPQExpBuffer(&query_buffer, + "%s, NULL::pg_catalog.text FROM %s", + schema_query->result, + schema_query->catname); + if (schema_query->refnamespace && completion_ref_schema) + appendPQExpBufferStr(&query_buffer, + ", pg_catalog.pg_namespace nr"); + appendPQExpBufferStr(&query_buffer, " WHERE "); + if (schema_query->selcondition) + appendPQExpBuffer(&query_buffer, "%s AND ", + schema_query->selcondition); + appendPQExpBuffer(&query_buffer, "(%s) LIKE '%s'", + schema_query->result, + e_object_like); + if (schema_query->viscondition) + appendPQExpBuffer(&query_buffer, " AND %s", + schema_query->viscondition); + if (schema_query->refname) + { + Assert(completion_ref_object); + appendPQExpBuffer(&query_buffer, " AND %s = '%s'", + schema_query->refname, e_ref_object); + if (schema_query->refnamespace && completion_ref_schema) + appendPQExpBuffer(&query_buffer, + " AND %s = nr.oid AND nr.nspname = '%s'", + schema_query->refnamespace, + e_ref_schema); + else if (schema_query->refviscondition) + appendPQExpBuffer(&query_buffer, + " AND %s", + schema_query->refviscondition); + } + + /* + * 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(objectname, "pg_", 3) != 0) + { + appendPQExpBufferStr(&query_buffer, + " AND c.relnamespace <> (SELECT oid FROM" + " pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')"); + } + + /* + * If the target object type can be schema-qualified, add in + * schema names matching the input-so-far. + */ + if (schema_query->namespace) + { + appendPQExpBuffer(&query_buffer, "\nUNION ALL\n" + "SELECT NULL::pg_catalog.text, n.nspname " + "FROM pg_catalog.pg_namespace n " + "WHERE n.nspname LIKE '%s'", + e_object_like); + + /* + * Likewise, suppress system schemas unless the + * input-so-far begins with "pg_". + */ + if (strncmp(objectname, "pg_", 3) != 0) + appendPQExpBufferStr(&query_buffer, + " AND n.nspname NOT LIKE E'pg\\\\_%'"); + + /* + * Since we're matching these schema names to the object + * name, handle their quoting using the object name's + * quoting state. + */ + schemaquoted = objectquoted; + } + } + else + { + /* Input is qualified, so produce only qualified names */ + appendPQExpBufferStr(&query_buffer, "SELECT "); + if (schema_query->use_distinct) + appendPQExpBufferStr(&query_buffer, "DISTINCT "); + appendPQExpBuffer(&query_buffer, "%s, n.nspname " + "FROM %s, pg_catalog.pg_namespace n", + schema_query->result, + schema_query->catname); + if (schema_query->refnamespace && completion_ref_schema) + appendPQExpBufferStr(&query_buffer, + ", pg_catalog.pg_namespace nr"); + appendPQExpBuffer(&query_buffer, " WHERE %s = n.oid AND ", + schema_query->namespace); + if (schema_query->selcondition) + appendPQExpBuffer(&query_buffer, "%s AND ", + schema_query->selcondition); + appendPQExpBuffer(&query_buffer, "(%s) LIKE '%s' AND ", + schema_query->result, + e_object_like); + appendPQExpBuffer(&query_buffer, "n.nspname = '%s'", + e_schemaname); + if (schema_query->refname) + { + Assert(completion_ref_object); + appendPQExpBuffer(&query_buffer, " AND %s = '%s'", + schema_query->refname, e_ref_object); + if (schema_query->refnamespace && completion_ref_schema) + appendPQExpBuffer(&query_buffer, + " AND %s = nr.oid AND nr.nspname = '%s'", + schema_query->refnamespace, + e_ref_schema); + else if (schema_query->refviscondition) + appendPQExpBuffer(&query_buffer, + " AND %s", + schema_query->refviscondition); + } + } + } + else + { + Assert(simple_query); + /* simple_query is an sprintf-style format string */ + appendPQExpBuffer(&query_buffer, simple_query, + e_object_like, + e_ref_object, e_ref_schema); + } + + /* Limit the number of records in the result */ + appendPQExpBuffer(&query_buffer, "\nLIMIT %d", + completion_max_records); + + /* Finally, we can issue the query */ + result = exec_query(query_buffer.data); + + /* Clean up */ + termPQExpBuffer(&query_buffer); + if (schemaname) + free(schemaname); + if (objectname) + free(objectname); + free(e_object_like); + if (e_schemaname) + free(e_schemaname); + if (e_ref_object) + free(e_ref_object); + if (e_ref_schema) + free(e_ref_schema); + } + + /* Return the next result, if any, but not if the query failed */ + if (result && PQresultStatus(result) == PGRES_TUPLES_OK) + { + int nskip; + + while (list_index < PQntuples(result)) + { + const char *item = NULL; + const char *nsp = NULL; + + if (!PQgetisnull(result, list_index, 0)) + item = PQgetvalue(result, list_index, 0); + if (PQnfields(result) > 1 && + !PQgetisnull(result, list_index, 1)) + nsp = PQgetvalue(result, list_index, 1); + list_index++; + + /* In verbatim mode, we return all the items as-is */ + if (verbatim) + { + num_query_other++; + return pg_strdup(item); + } + + /* + * In normal mode, a name requiring quoting will be returned only + * if the input was empty or quoted. Otherwise the user might see + * completion inserting a quote she didn't type, which is + * surprising. This restriction also dodges some odd behaviors of + * some versions of readline/libedit. + */ + if (non_empty_object) + { + if (item && !objectquoted && identifier_needs_quotes(item)) + continue; + if (nsp && !schemaquoted && identifier_needs_quotes(nsp)) + continue; + } + + /* Count schema-only results for hack below */ + if (item == NULL && nsp != NULL) + num_schema_only++; + else + num_query_other++; + + return requote_identifier(nsp, item, schemaquoted, objectquoted); + } + + /* + * When the query result is exhausted, check for hard-wired keywords. + * These will only be returned if they match the input-so-far, + * ignoring case. + */ + nskip = list_index - PQntuples(result); + if (schema_query && schema_query->keywords) + { + const char *const *itemp = schema_query->keywords; + + while (*itemp) + { + const char *item = *itemp++; + + if (nskip-- > 0) + continue; + list_index++; + if (pg_strncasecmp(text, item, strlen(text)) == 0) + { + num_keywords++; + return pg_strdup_keyword_case(item, text); + } + } + } + if (keywords) + { + const char *const *itemp = keywords; + + while (*itemp) + { + const char *item = *itemp++; + + if (nskip-- > 0) + continue; + list_index++; + if (pg_strncasecmp(text, item, strlen(text)) == 0) + { + num_keywords++; + return pg_strdup_keyword_case(item, text); + } + } + } + } + + /* + * Hack: if we returned only bare schema names, don't let Readline add a + * space afterwards. Otherwise the schema will stop being part of the + * completion subject text, which is not what we want. + */ + if (num_schema_only > 0 && num_query_other == 0 && num_keywords == 0) + rl_completion_append_character = '\0'; + + /* No more matches, so free the result structure and return null */ + PQclear(result); + result = NULL; + return NULL; +} + + +/* + * Set up completion_ref_object and completion_ref_schema + * by parsing the given word. These variables can then be + * used in a query passed to _complete_from_query. + */ +static void +set_completion_reference(const char *word) +{ + bool schemaquoted, + objectquoted; + + parse_identifier(word, + &completion_ref_schema, &completion_ref_object, + &schemaquoted, &objectquoted); +} + +/* + * Set up completion_ref_object when it should just be + * the given word verbatim. + */ +static void +set_completion_reference_verbatim(const char *word) +{ + completion_ref_schema = NULL; + completion_ref_object = pg_strdup(word); +} + + +/* + * 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 = '/'; + /* Prevent libedit from adding a space, too */ + rl_completion_append_character = '\0'; + } + } + + 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; +} + + +/* + * make_like_pattern - Convert argument to a LIKE prefix pattern. + * + * We escape _ and % in the given text by backslashing, append a % to + * represent "any subsequent characters", and then pass the string through + * escape_string() so it's ready to insert in a query. The result needs + * to be freed. + */ +static char * +make_like_pattern(const char *word) +{ + char *result; + char *buffer = pg_malloc(strlen(word) * 2 + 2); + char *bptr = buffer; + + while (*word) + { + if (*word == '_' || *word == '%') + *bptr++ = '\\'; + if (IS_HIGHBIT_SET(*word)) + { + /* + * Transfer multibyte characters without further processing, to + * avoid getting confused in unsafe client encodings. + */ + int chlen = PQmblenBounded(word, pset.encoding); + + while (chlen-- > 0) + *bptr++ = *word++; + } + else + *bptr++ = *word++; + } + *bptr++ = '%'; + *bptr = '\0'; + + result = escape_string(buffer); + free(buffer); + return result; +} + + +/* + * parse_identifier - Parse a possibly-schema-qualified SQL identifier. + * + * This involves splitting off the schema name if present, de-quoting, + * and downcasing any unquoted text. We are a bit laxer than the backend + * in that we allow just portions of a name to be quoted --- that's because + * psql metacommands have traditionally behaved that way. + * + * Outputs are a malloc'd schema name (NULL if none), malloc'd object name, + * and booleans telling whether any part of the schema and object name was + * double-quoted. + */ +static void +parse_identifier(const char *ident, + char **schemaname, char **objectname, + bool *schemaquoted, bool *objectquoted) +{ + size_t buflen = strlen(ident) + 1; + bool enc_is_single_byte = (pg_encoding_max_length(pset.encoding) == 1); + char *sname; + char *oname; + char *optr; + bool inquotes; + + /* Initialize, making a certainly-large-enough output buffer */ + sname = NULL; + oname = pg_malloc(buflen); + *schemaquoted = *objectquoted = false; + /* Scan */ + optr = oname; + inquotes = false; + while (*ident) + { + unsigned char ch = (unsigned char) *ident++; + + if (ch == '"') + { + if (inquotes && *ident == '"') + { + /* two quote marks within a quoted identifier = emit quote */ + *optr++ = '"'; + ident++; + } + else + { + inquotes = !inquotes; + *objectquoted = true; + } + } + else if (ch == '.' && !inquotes) + { + /* Found a schema name, transfer it to sname / *schemaquoted */ + *optr = '\0'; + free(sname); /* drop any catalog name */ + sname = oname; + oname = pg_malloc(buflen); + optr = oname; + *schemaquoted = *objectquoted; + *objectquoted = false; + } + else if (!enc_is_single_byte && IS_HIGHBIT_SET(ch)) + { + /* + * Transfer multibyte characters without further processing. They + * wouldn't be affected by our downcasing rule anyway, and this + * avoids possibly doing the wrong thing in unsafe client + * encodings. + */ + int chlen = PQmblenBounded(ident - 1, pset.encoding); + + *optr++ = (char) ch; + while (--chlen > 0) + *optr++ = *ident++; + } + else + { + if (!inquotes) + { + /* + * This downcasing transformation should match the backend's + * downcase_identifier() as best we can. We do not know the + * backend's locale, though, so it's necessarily approximate. + * We assume that psql is operating in the same locale and + * encoding as the backend. + */ + if (ch >= 'A' && ch <= 'Z') + ch += 'a' - 'A'; + else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) + ch = tolower(ch); + } + *optr++ = (char) ch; + } + } + + *optr = '\0'; + *schemaname = sname; + *objectname = oname; +} + + +/* + * requote_identifier - Reconstruct a possibly-schema-qualified SQL identifier. + * + * Build a malloc'd string containing the identifier, with quoting applied + * as necessary. This is more or less the inverse of parse_identifier; + * in particular, if an input component was quoted, we'll quote the output + * even when that isn't strictly required. + * + * Unlike parse_identifier, we handle the case where a schema and no + * object name is provided, producing just "schema.". + */ +static char * +requote_identifier(const char *schemaname, const char *objectname, + bool quote_schema, bool quote_object) +{ + char *result; + size_t buflen = 1; /* count the trailing \0 */ + char *ptr; + + /* + * We could use PQescapeIdentifier for some of this, but not all, and it + * adds more notational cruft than it seems worth. + */ + if (schemaname) + { + buflen += strlen(schemaname) + 1; /* +1 for the dot */ + if (!quote_schema) + quote_schema = identifier_needs_quotes(schemaname); + if (quote_schema) + { + buflen += 2; /* account for quote marks */ + for (const char *p = schemaname; *p; p++) + { + if (*p == '"') + buflen++; + } + } + } + if (objectname) + { + buflen += strlen(objectname); + if (!quote_object) + quote_object = identifier_needs_quotes(objectname); + if (quote_object) + { + buflen += 2; /* account for quote marks */ + for (const char *p = objectname; *p; p++) + { + if (*p == '"') + buflen++; + } + } + } + result = pg_malloc(buflen); + ptr = result; + if (schemaname) + { + if (quote_schema) + *ptr++ = '"'; + for (const char *p = schemaname; *p; p++) + { + *ptr++ = *p; + if (*p == '"') + *ptr++ = '"'; + } + if (quote_schema) + *ptr++ = '"'; + *ptr++ = '.'; + } + if (objectname) + { + if (quote_object) + *ptr++ = '"'; + for (const char *p = objectname; *p; p++) + { + *ptr++ = *p; + if (*p == '"') + *ptr++ = '"'; + } + if (quote_object) + *ptr++ = '"'; + } + *ptr = '\0'; + return result; +} + + +/* + * Detect whether an identifier must be double-quoted. + * + * Note we'll quote anything that's not ASCII; the backend's quote_ident() + * does the same. Perhaps this could be relaxed in future. + */ +static bool +identifier_needs_quotes(const char *ident) +{ + int kwnum; + + /* Check syntax. */ + if (!((ident[0] >= 'a' && ident[0] <= 'z') || ident[0] == '_')) + return true; + if (strspn(ident, "abcdefghijklmnopqrstuvwxyz0123456789_") != strlen(ident)) + return true; + + /* + * Check for keyword. We quote keywords except for unreserved ones. + * + * It is possible that our keyword list doesn't quite agree with the + * server's, but this should be close enough for tab-completion purposes. + * + * Note: ScanKeywordLookup() does case-insensitive comparison, but that's + * fine, since we already know we have all-lower-case. + */ + kwnum = ScanKeywordLookup(ident, &ScanKeywords); + + if (kwnum >= 0 && ScanKeywordCategories[kwnum] != UNRESERVED_KEYWORD) + return true; + + return false; +} + + +/* + * Execute a query, returning NULL if there was any error. + * 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) + { + /* + * Printing an error while the user is typing would be quite annoying, + * so we don't. This does complicate debugging of this code; but you + * can look in the server log instead. + */ +#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..1c4190e --- /dev/null +++ b/src/bin/psql/tab-complete.h @@ -0,0 +1,17 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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..47c58d2 --- /dev/null +++ b/src/bin/psql/variables.c @@ -0,0 +1,422 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 output 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..e57933f --- /dev/null +++ b/src/bin/psql/variables.h @@ -0,0 +1,97 @@ +/* + * psql - the PostgreSQL interactive terminal + * + * Copyright (c) 2000-2022, 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 */ -- cgit v1.2.3